项目场景:
ROS2 foxy 小车 传感器融合
*本文编写规则
1、大写斜体 需替换为自定义名称
相关命令
1、节点启动
遥控控制
ros2 launch wheeltec_joy wheeltec_wire_joy.launch.py
动作捕获定位
ros2 launch vrpn_client_ros sample.launch.py
ros2 run fusion Mocap_node
底盘运动+寻磁
ros2 run chassis_control Car_control
ros2 run chassis_magnetic magnetic
ros2 run pid_c pid
ros2 launch ums_fiction_driver ums_fiction_v1.launch.py
寻磁启止
ros2 topic pub /Turn std_msgs/msg/Int8 data:\ 1
ros2 topic pub /Turn std_msgs/msg/Int8 data:\ 0
RFID
ros2 run data_publishing rfid
imu
ros2 run chassis_control car_motion_control
ros2 run data_publishing imu
UWB
ros2 run fusion UWB_node
融合定位
ros2 run fusion fusion_node
轨迹追踪
ros2 run path_track mpc_tracker
ros2 run path_track stanley_tracker
雷达建图
~/map_ws$ ros2 launch sllidar_ros2 sllidar_a1_launch.py
2、ROS2安装配置
(1) ROS2
ros2一键安装:wget http://fishros.com/install -O fishros && . fishros
ros2一键卸载:sudo apt remove ros-foxy-* && sudo apt autoremove
查看ros版本号:rosversion -d
创建工作空间
mkdir -p town_ws/src
cd town_ws/src
创建python功能包
ros2 pkg create <package_name> --build-type ament_python --dependencies rclpy
(2) 工具
1、RQT安装:
sudo apt-get install ros-$ROS_DISTRO-rqt
sudo apt install ros-$ROS_DISTRO-rqt*
2、rviz IMU插件:
sudo apt-get install ros-$ROS_DISTRO-imu-tools
3、python库安装:
pip install pyserial
pip install heapdict
(3) 更新环境变量
更新工作空间环境变量(每次build后都要)
source ./install/setup.bash
将source写入系统全局变量(build后自动source)
echo “source /home/用户名/文件夹/install/setup.bash” >> ~/.bashrc
source ~/.bashrc
(4) 指定源安装
-i https://pypi.tuna.tsinghua.edu.cn/simple some-package
(5) 编译指令
全局编译: colcon build
单独编译: colcon build --packages-select PACKAGE_NAME
python 静态链接编译 :colcon build --symlink-install
(6) 串口绑定
1、查看串口详细信息
$ udevadm info --attribute-walk --name=/dev/ttyUSB1 |grep KERNELS
>>>
KERNELS==“ttyUSB1”
KERNELS==“2-1.2.2:1.0”
KERNELS==“2-1.2.2”
KERNELS==“2-1.2”
KERNELS==“2-1”
KERNELS==“usb2”
KERNELS==“fc880000.usb”
KERNELS==“platform”
2、绑定串口(串口重命名)
$ sudo vim /etc/udev/rules.d/robotbase_port.rules
ACTION==“add”,KERNELS==“2-1.3.1:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“com_car”
3、重载串口
$ service udev reload
$ service udev restart
重新拔插串口
(7) 自启服务
sudo systemctl start autobase.service
sudo systemctl stop autobase.service
sudo systemctl restart autobase.service
3、测试
(1) rosbag记录器
记录全部话题 ros2 bag record -a
命名记录文件并挑选记录话题 ros2 bag record -o BAG-NAME /PACKAGE-NAME
播放纪录包并指定话题 ros2 bag play BAG-NAME --topics /PACKAGE-NAME
查看纪录包详情 ros2 bag info BAG-NAME
ros2 bag record -o RosbagRecord /test_car_1 /imu /uwb_distance /rfid_data /car1_Marker3/pose /Fused/pose /Mocap/pose /Fused/path /Mocap/path /Error
(2) 计算器欧式距离公式
((4.2−0.6)2+(4.8−1.2)2+(0.52−0.29)2)0.5
(3) ros系统桌面UI foxglove
1.启动桥:ros2 launch foxglove_bridge foxglove_bridge_launch.xml
2.打开foxglove studio
4、常用指令
(1) 话题相关
查看话题列表: ros2 topic list
查看话题列表及消息类型:ros2 topic list -t
订阅话题:ros2 topic echo TOPIC_NAME
查看话题频率:ros2 topic hz TOPIC_NAME
查看话题详情 (消息类型和发布者/订阅者的数量): ros2 topic info TOPIC_NAME
(2) 消息相关
查看消息定义:ros2 interface show geometry_msgs/msg/PoseStamped
5、ubuntu快捷指令
(1) linux 命令行指令
查看所有历史命令:history
查看包含关键词‘KEYWORD‘历史命令:history |grep KEYWORD
根据序号选择命令并执行:!001
查找包含输入字符的历史命令:ctrl R
(2)主目录查看隐藏文件(.bashrc)
ctrl H
Debug记录
编译问题
Q1、功能包编译 部分代码在install下不更新
python:将python功能包做静态链接 colcon build --symlink-install
c++:删除install 、build文件夹重新编译
Q2、找不到依赖功能包编译失败
方法一:先单独编译依赖功能包再全局编译 编译完后更新环境变量
colcon build --packages-select car_interfaces
colcon build
source ./install/setup.bash
colcon build --symlink-install
方法二:修改功能包的 package.xml 文件和 CMakeLists.txt 文件
在ROS2中,如果一个包(例如B_package)依赖于另一个包(例如A_package),需要在B_package的package.xml和CMakeLists.txt文件中声明这种依赖关系。
1.修改 package.xml 文件
在 package.xml 文件中,你需要添加 标签来声明对 A_package 的依赖。例如:<package format="3"> <name

2673

被折叠的 条评论
为什么被折叠?



