ROS2小车学习

项目场景:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值