ros2-px4联合仿真环境配置2(SITL)
ROS2话题与PX4消息队列通信
在上一节的仿真示例中,px4程序和ros2通信是通过XRCE-DDS进行桥接的
XRCE-DDS可以将px4程序内部的uORB消息和ROS2的节点话题进行互相转换(如图所示,当然前提是用px4_msgs这个话题包提供的接口)
在转换的同时也会进行时间同步,即ROS2内部的时间与PX4的时间同步
可以通过以下操作来感受下桥接和同步的过程
1 | #启动编译好的px4 SITL程序 |
此时直接启动地面站可以控制无人机
1 | ./QGroundControl-x86_64.AppImage |
此时可以监视一下ros2 topic list可以发现没有px4的信息传过来
1 | watch -n 1 ros2 topic list # 每1s查看ros2 topic list |
然后启动XRCE-DDS,就会看到PX4的话题出现了
1 | # 启动XRCE-DDS |
自定义PX4的话题通信
传入传出PX4的话题可以在XRCE-DDS中自定义
1 | cd PX4-Autopilot/src/modules/uxrce_dds_client/ |
/fmu/in 是传入PX4的话题
/fmu/out 是传出PX4的话题
可以增加一个话题,然后重新编译即可再在仿真中找到增加的话题
1 | # 在传出的话题下添加一个话题 |
1 | #重新编译PX4在环仿真程序 |
使用grep命令查看话题列表里面有没有刚刚添加的话题
1 | ros2 topic list | grep vehicle_local_position_groundtruth |
添加成功
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Attic的博客!






