当前位置: 首页 > news >正文

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+无人机开发者和你共同进步!

http://www.xdnf.cn/news/983179.html

相关文章:

  • 虚拟机新增硬盘,与数据挂载
  • 【云原生】阿里云SLS日志自定义字段标签实现日志告警
  • 债券与股票:投资市场的两大基石
  • 华为服务器obsutil使用方法
  • 【无标题】测试
  • C盘清理方法
  • [3-02-01].第03节:环境搭建 - 在Docker中安装部署Redis环境:
  • 【技巧】win10和ubuntu互相挂在共享文件夹
  • 机器视觉开发-图片转CAD
  • 类复制.省略 class.copy.elision
  • 前端实习校验函数汇总(未完成)
  • 【2025最新版】Node.js详细安装配置教程(Windows系统)附安装包
  • 【第一章:人工智能基础】02.数据处理及可视化-(3)可视化工具与技术
  • 详细解释aruco::markdetection _detectInitialCandidates函数
  • wxWidgets常见辅助类的应用示例
  • 智能制造——解读86页敏捷制造业务模型设计方案【附全文阅读】
  • 【Lua热更新知识】学习一 Lua语法学习
  • Unity Android 启动应用的时候黑屏问题
  • 嵌入式学习笔记DAY36(事务、网页制作、HTTP协议)
  • Linux日志分割压缩实战指南
  • Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
  • java基础学习(二十五)
  • STM32单片机独立看门狗IWDG使用CubeMX配置方法
  • 认识RNN-循环神经网络
  • Java中读取YAML文件配置信息
  • vxetable框架在前端开发大数据量界面展示是很友好的
  • 室内腔体耦合器
  • 馈线与馈线连接器详解
  • 几个常见远程工作平台
  • vue项目 报错 error ‘xxx‘ is assigned a value but never used