ROS2加持,SU17实现全控制链路再进化
在无人系统技术持续演进的浪潮中,ROS2凭借其分布式通信机制、实时性保障与跨平台扩展能力,正在逐步成为下一代机器人软件架构的主流选择。
阿木实验室秉持“从底层打通、从仿真到实飞全链路验证”的理念,率先将Prometheus自研飞控框架全面迁移至ROS2平台,从最初在Prosim仿真环境中验证基本控制,到如今让SU17在真实飞行中完整运行ROS2全链路控制,我们完成了多轮固件改动、通信优化与功能扩展,并在室内与户外均取得了稳定飞行效果。
适配ROS2的好处
极低的资源占用
对设备进行了优化,资源占用极低,主要通过DDS实现选择、零拷贝通信、内存管理。
实验测试如下:
1. 节点内存消耗
测试环境:
硬件:SU17 (intel 8365U, 8GB RAM)
系统:Ubuntu 20.04 + ROS 2 Foxy vs. ROS 1 Noetic
测试场景:
单个节点发布/订阅100Hz的 sensor_msgs/Image 消息(640x480 RGB)。
指标 | ROS2(FAST DDS) | ROS1 | 优化幅度 |
节点内存占用 | 0-15MB | 0-25MB | 40% |
CPU使用率 | 0-8% | 0-12% | 33% |
2. 多节点通信开销
测试场景:
10 个节点相互通信(发布/订阅),消息类型为 geometry_msgs/Twist。
指标 | ROS2(Cyclone DDS) | ROS1 |
总内存占用 | 0-120MB | 0-200MB |
网络延迟 | 2ms±0.5ms | 5ms±1.5ms |
实时性优势
ROS 2 的实时性优势主要通过DDS底层协议、线程模型优化、确定性调度和低延迟通信实现。
单节点端到端延迟测试:
测试环境:
硬件:SU17 (intel 8365U, 8GB RAM)
系统:Ubuntu 20.04 + ROS 2 Foxy (Fast DDS) vs. ROS 1 Noetic
测试场景:
单个发布者-订阅者传输 std_msgs/Float64(1 kHz 频率)
指标 | ROS2(FAST DDS) | ROS1 | 优化幅度 |
平均延迟 | 0.8ms | 2.5ms | 68% |
延迟抖动(Jitter) | ±0.2ms | ±0.1ms | 80% |
实时线程优先级测试
测试场景:
ROS2允许为关键线程(如控制循环)分配实时优先级(Linux SCHED_FIFO),而ROS 1无此功能。
测试场景:
测试两个节点(控制节点 @ 1 kHz + 后台计算负载)。
配置 | ROS2(优先级 90) | ROS1(默认) |
控制循环周期抖动 | ±5μs | ±500μs |
最坏响应时间 | 1ms | 10ms |
QoS(服务质量)
与标准DDS 一致,支持对通信的可靠性、延迟、带宽等进行精细化控制,确保关键数据的可靠性和实时性。
QoS 核心策略及量化影响
ROS 2 提供多种 QoS 策略组合,以下为关键策略及其效果:
高丢包环境下的可靠性测试
测试场景:
网络模拟丢包率 20%,传输1000条std_msgs/String消息。
对比 RELIABLE vs BEST_EFFORT QoS。
QoS配置 | 消息到达率 | 平均延迟 | CPU占用 |
RELIABLE | 100% | 12 ms | 22% |
BEST_EFFORT | 80% | 5 ms | 15% |
轻量级协议
相比标准DDS协议,microRTPS消息头更短,减少了传输开销。高效的点对点通信:通过可靠的实时通信机制,实现设备之间快速数据交换,适合嵌入式设备(如飞控)。
microRTPS 的消息头
1. microRTPS 消息头大小:
-
仅 4~8 字节(精简了冗余字段,仅保留必要标识符和序列号)。
2. PX4 实测数据:
-
对于小型消息(如传感器数据),microRTPS 的消息头占比从 DDS 的 30%~50% 降至 10%~15%。
-
例如:传输一个 16 字节的 vehicle_odometry 消息:标准 DDS:总大小 = 16(负载) + 28(头) = 44 字节。
-
microRTPS:总大小 = 16(负载) + 4(头) = 20 字节(传输效率提升 54%)。
3. 延迟测试(PX4 SITL + RTPS 代理)
-
测试环境: SU17下:buntu 20.04,PX4 v1.13,UDP 传输,本地回环。
-
测试结果: 标准 DDS:平均延迟 1.2~2.5 ms。 microRTPS:平均延迟 0.3~0.8 ms。
4. 吞吐量测试
-
场景:持续发送 100Hz 的 sensor_combined 消息(负载 64 字节)。
-
标准 DDS:最大稳定吞吐量约 800 Hz(CPU 占用率 15%)。
-
microRTPS:最大稳定吞吐量 2000 Hz(CPU 占用率 8%)。
资源占用对比
指标 | 标准DDS | microRTPS |
内存占用 | 10-20MB | 1-2MB |
CPU 占用 | 较高(多线程QoS) | 极低(单线程精简) |
带宽利用率 | 60%-70% | 85%-90% |
此外ROS2相比ROS1还有具有其他好处如:
多平台支持(Cross-Platform)
分布式系统(Distributed Systems)
安全性(Security)
生命周期管理(Lifecycle)
动态参数配置(Dynamic Reconfiguration)
工具和生态(Tools and Ecosystem)
系统架构
SU17(PX4) ↔ microRTPS ↔ ROS2 ↔ Prometheus
-
microRTP是PX4生态系统中用于实现基于 RTPS(Real-TimePublish-Subscribe)协议的通信工具。
-
它是 PX4 与地面站或其他支持 RTPS 的系统(如 ROS 2)之间的桥梁。
-
microRTPS 使用 Fast DDS(原名 Fast RTPS)作为其底层实现。
从仿真到真机
在ROS2从ProSim仿真环境迁移到真机实飞的过程中,我们对飞控固件、参数配置以及中间通信机制进行了大量适配工作,逐步打通了ROS2控制通信链路。
在室内飞行场景中,SU17搭载的定位模块(BSA_SLAM),通过程序直接将定位数据转发至microRTPS接口,再由 PX4 飞控系统接收,实现了无需额外中间件的高效闭环控制。这一方式不仅简化了系统架构,也显著降低了延迟与耦合度,提升了整体飞行控制的实时性与稳定性。
除了上面演示的控制外,其他的控制接口也完善适配,完整控制接口如下:
-
1. 惯性系-位置控制(XYZ_POS)
-
2. 惯性系-定高速度控制(XY_VEL_Z_POS)
-
3. 惯性系-速度控制(XYZ_VEL)
-
4. 机体系-位置控制(XYZ_POS_BODY)
-
5. 机体系-速度控制(XYZ_VEL_BODY)
-
6. 机体系-定高速度控制(XY_VEL_Z_POS_BODY)
-
7. 轨迹控制(TRAJETCORY)
-
8. 姿态控制(XYZ_ATT)
-
9. 经纬高控制(LAT_LON_ALT)
全新ROS2适配版SU17正在路上,敬请关注阿木实验室的后续更新!
如果您有感兴趣的技术话题,请在留言区告诉我们!关注阿木实验室,更多技术干货不断更新!
开发遇到棘手难题可以上阿木官方论坛:
bbs.amovlab.com
有工程师亲自解答
10000+无人机开发者和你共同进步!