PX4-19-MicroDDS

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的组件图可以知道它的作用

image-20221024165226269

具体可以参考之前的分享 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模式控制

offboard

相对于使用MAVROS对PX4的控制,microdds使用更加方便简单,uorb<->dds的直接转换,省掉了uorb<->mavlink<->ros的转换,可以实现px4应用与ros2应用的直接交互,对于开发机载计算机应用更加方便。