PX4在10月20号对MicroDDS模块做了较大的优化提升,并且删除了原有的micrortps模块。
Pull request为:https://github.com/PX4/PX4-Autopilot/pull/20227
commit为:cea185268
Commit: cea185268e133ad22418fb9990f9c19df6e30681
Parents: e211e0ca0e565b6ff02615ee912fd101e3d2036a
Author: Daniel Agar <daniel@agar.ca>
Committer: GitHub <noreply@github.com>
Date: Thu Oct 20 2022 07:36:47 GMT+0800 (中国标准时间)
msg ROS2 compatibility, microdds_client improvements (timesync, reduced code size, added topics, etc), fastrtps purge
- update all msgs to be directly compatible with ROS2
- microdds_client improvements
- timesync
- reduced code size
- add to most default builds if we can afford it
- lots of other little changes
- purge fastrtps (I tried to save this multiple times, but kept hitting roadblocks)
micrortps我们在之前的分享 PX4-16-ROS2Bridge 中已经提到,是PX4从2017年开始即引入的ROS2中间件。
MicroDDS是基于Micro-XRCE-DDS-Client模块的DDS转uORB中间件,而Micro-XRCE-DDS-Client是micro-ros使用的DDS组件,从micro-ros的组件图可以知道它的作用
具体可以参考之前的分享 AcmeIot-3-在嵌入式设备中运行ROS2
那么PX4引入基于Micro-XRCE-DDS-Client的microdds可以更好的与ROS2兼容,接入ROS2的网络,而不需要对ROS2应用做出修改。相对于micrortps,microdds有更多的特性,感兴趣的同学可以在公众号中回复 microdds,有PX4官方详细的PPT介绍,这里不作展开。
microdds的使用相比于micrortps简单很多,在PX4最新main分支上,直接编译运行
make px4_sitl gazebo
启动px4 gazebo仿真器后,microdds即在px4后台自动运行,
然后启动主机端的DDS代理
micro-ros-agent udp4 --port 8888
PX4默认输出以下msg
/fmu/in/obstacle_distance
/fmu/in/offboard_control_mode
/fmu/in/onboard_computer_status
/fmu/in/sensor_optical_flow
/fmu/in/telemetry_status
/fmu/in/trajectory_setpoint
/fmu/in/vehicle_attitude_setpoint
/fmu/in/vehicle_command
/fmu/in/vehicle_mocap_odometry
/fmu/in/vehicle_rates_setpoint
/fmu/in/vehicle_trajectory_bezier
/fmu/in/vehicle_trajectory_waypoint
/fmu/in/vehicle_visual_odometry
/fmu/out/failsafe_flags
/fmu/out/sensor_combined
/fmu/out/timesync_status
/fmu/out/vehicle_attitude
/fmu/out/vehicle_control_mode
/fmu/out/vehicle_global_position
/fmu/out/vehicle_gps_position
/fmu/out/vehicle_local_position
/fmu/out/vehicle_odometry
/fmu/out/vehicle_status
这样就可以在ROS2上对PX4进行控制了,可以参考 https://github.com/Jaeyoung-Lim/px4-offboard, 使用使用ROS2对PX4 offboard模式控制
相对于使用MAVROS对PX4的控制,microdds使用更加方便简单,uorb<->dds的直接转换,省掉了uorb<->mavlink<->ros的转换,可以实现px4应用与ros2应用的直接交互,对于开发机载计算机应用更加方便。