首先,请仔细阅读(只是我的个人经验,可能有误),说明我的情况:我刚开始使用的ROS2版本为humble,机载计算机为树莓派5,ubuntu系统用的是24.04(树莓派5只能安装24.04),但是ubuntu24.04由于版本对应有误却不能直接二进制安装ROS2(humble),所以我源码安装编译ROS2(humble)和Navigtaion2软件包,但在我实际运行Navigation时却总是运行失败,具体情况请看我的Gitee的这个链接的评论区里有我的一些经验(https://gitee.com/zbrover/nav2_zbrover/issues/ICHFCF);所以不得不使用可以在ubuntu24.04上二进制安装的ROS2版本(jazzy),这个Navigation2就运行成功了。

做这个实验使用的ROS小机器看这个链接:https://blog.csdn.net/weixin_56545636/article/details/154115839?sharetype=blogdetail&sharerId=154115839&sharerefer=PC&sharesource=weixin_56545636&spm=1011.2480.3001.8118

因为小机器使用ArduPilot飞控来采集传感器数据,所以有一点需要声明,由于在室内原因,只使用霍尔编码器和IMU来做定位,没有GPS,在定位坐标系上,由于使用ArduPilot的ap/pose话题(https://ardupilot.org/dev/docs/ros2-interfaces.html),ap/pose使用的坐标系为ENU坐标系,所以ROS小机器在放置初始姿态的时候车头朝东保证ENU-XYZ这俩坐标系的方向一致。

使用流程

启动雷达

~/sllidar_ws$ . install/setup.bash

地面站连接ArduPilot飞控并将其切换为guided 模式,还需要在地图上设置home和EKF origin here直到小车在地图上出现。

检查雷达连接树莓派的USB口的名字是否正确,雷达的frame_id是否在urdf上发布?(urdf在我的odom_zuzhuang软件包里面发布,urdf包含laser_link)

~/sllidar_ws$ ros2 launch sllidar_ros2 sllidar_s2_launch.py serial_port:=/dev/ttyUSB1 frame_id:=laser_link

启动DDS(micro_ros)通信ArduPilot飞控板和树莓派上的ROS

启动地面站

~$ mavproxy.py --master=/dev/ttyUSB2 --baudrate 460800

启动micro_ros_agent(将单片机(在这里我的是ArduPilot控制板)收集到的传感器信息转换为ROS消息),实际在我的ArduPilot固件编译的时候开启了DDS通信(待填坑。。。。。)。

关于micro_ros的理解,参考这篇文章:https://blog.csdn.net/Dr_chaser/article/details/148408492

启动micro_ros_agent

~/microros_ws$ . install/setup.bash
~/ardupilot_ws4.5.6/src/ardupilot/libraries/AP_DDS$ ros2 run micro_ros_agent micro_ros_agent serial -b 115200  -r dds_xrce_profile.xml -D /dev/ttyUSB0

在mavproxy窗口reboot重启mavproxy,激活DDS通信

ros2 topic list或者echo看一下是否已经发布DDS话题和话题内的数据数据是否一致

需要在地面站设置初始位置,ap/pose 才可以出来数据,并且 E 为 x 正,N 为 y 正。已经实验,就是这样。

启动odom_zuzhuang程序

/pi_extra_pkgs$ ros2 launch odom_zuzhuang odomzuzhuang_launch_2.py offset_x:=0.0 offset_y:=0.0

虚拟机启动rviz

这个rviz初始文件就是原来官方的一个,我只不过给他复制到我的文件夹里面了

~/ws01_topic/src/rviz2_nav2_defualt$ rviz2 -d nav2_default_view.rviz use_sim_time:=false

启动 Navigation2导航程序

~/pi_extra_pkgs$ ros2 launch zbrover_nav2 nav2_zbrover_dds.launch.py use_sim_time:=false

阿B视频链接:https://www.bilibili.com/video/BV1M78izkEWi/?spm_id_from=333.1387.homepage.video_card.click&vd_source=f6fc336fabeb2b6811caacb2735e9c69

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐