7.1 通过uXRCE-DDS实现PX4与ROS2通信
Micro XRCE-DDS、micro XRCE-DDS、 uXRCE-DDS 概念等同
Micro XRCE-DDS 取代了PX4 v1.13 中使用的Fast-RTPS Bridge。如果您之前使用的是 Fast-RTPS Bridge,请遵循迁移指南。
PX4 使用 uXRCE-DDS 中间件,允许在配套计算机上发布和订阅uORB 消息,就像ROS 2主题一样。这实现了 PX4 与 ROS 2 之间快速可靠的集成,并使 ROS 2 应用程序能够更轻松地获取无人机信息并发送命令。
以下指南介绍了设置客户端和代理的架构和各种选项。它特别涵盖了对 PX4 用户最重要的选项。
通信架构
uXRCE-DDS 中间件由运行在 PX4 上的客户端Client和运行在配套计算机上的代理Agent组成,它们之间通过串行或 UDP 链路进行双向数据交换。Agent充当客户端的代理,使其能够发布和订阅全局 DDS 数据空间中的主题。
为了使 PX4 uORB 主题能够在 DDS 网络上共享,您需要在 PX4 上运行uXRCE-DDS Client,并将其连接到在配套计算机设备上运行的uXRCE-DDS Agent。
使用串口连接
RDK X5 Module 的AI UART2即/dev/ttyS2与 Pixhawk 6X的 FC UART5即/dev/ttyS4可以通过内部连接串口进行通信,如图所示:

ROS 2 指南和 uXRCE-DDS页面涵盖了设置 uXRCE-DDS 和 ROS 的选项。本教程使用 ROS 2 “Humble”,并介绍了使用 RDK X5 Module 的具体设置。
Pixhawk/PX4 设置
接下来,我们在 TELEM2上设置 ROS 2 而不是 MAVLink 。我们通过更改 QGroundControl 中的参数来实现。QGroundControl 可以通过 USB 连接,也可以使用连接到 TELEM1的遥测无线电。
配置步骤如下:
-
使用 USB 电缆将 Pixhawk 与笔记本电脑连接,然后打开 QGroundControl(如果当前未连接)。
-
MAV_1_CONFIG = 0 (Disabled)
UXRCE_DDS_CFG = 102 (TELEM2)
SER_TEL2_BAUD = 921600MAV_1_CONFIG=0和UXRCE_DDS_CFG=102分别用于禁用 TELEM2 上的 MAVLink 和启用 TELEM2 上的 uXRCE-DDS 客户端。
SER_TEL2_BAUD用于设置通信链路的数据速率。你可以类似地使用MAV_1_CONFIG或MAV_0_CONFIG来配置与TELEM1的连接。若是没有 SER_TEL2_BAUD参数,可以将MAV_1_CONFIG = TELEM2来激活,然后再按照以上步骤重新设置。提示您需要重新启动飞行控制器才能应用对这些参数的任何更改。
-
PX4 uxrce_dds_client在构建时生成,并默认包含在 PX4 固件中。检查uxrce_dds_client模块是否正在运行。您可以在 QGroundControl MAVLink 控制台中运行以下命令来执行此操作:
uxrce_dds_client status信息如果客户端模块未能自动运行,您可以在 MAVLink 控制台中手动启动它:
uxrce_dds_client start -t serial -d /dev/ttyS4 -b 921600请注意,
/dev/ttyS4是USX10 Pixhawk 6X上的PX4TELEM2端口映射。对于其他飞行控制器,请查看其概览页面中的串行端口映射部分。