2025CUADC备赛前期ROS1 与 ROS2 在无人机系统中的区别与选型建议--太原理工大学

  1. 为什么无人机开发几乎绕不开 ROS?

在无人机控制领域,尤其是”自主无人机“(非纯遥控飞行器),系统复杂度会迅速上升:

  • 传感器:IMU、相机、激光雷达、GPS、气压计
  • 算法模块:SLAM、状态估计、路径规划、避障
  • 控制模块:位置控制、姿态控制、任务逻辑
  • 通信模块:地面站、多机通信、远程链路

在这种背景下,如果完全依靠“裸代码 + 自己写通信”,工程成本会非常高。
ROS 的价值不在于“控制”,而在于“系统组织能力”。

在无人机中,ROS 通常承担以下角色:

  • 作为 高层系统中枢
  • 管理传感器数据流
  • 对接 SLAM、规划、感知算法
  • 与飞控(PX4 / ArduPilot)通信

而不是直接跑在电机控制环中。
2. ROS1 的核心架构与其在无人机中的现实表现
2.1 ROS1 的通信模型回顾
ROS1 采用的是 **Master + Node 的中心化架构:

  • 所有节点先向 ROS Master 注册
  • 节点之间通过 TCPROS / UDPROS 通信
  • Master 只负责“名字解析”,不传输数据

这种架构在桌面机器人、科研验证阶段非常好用,但在无人机中问题逐渐显现。
2.2 ROS1 在无人机工程中的典型优点
(1)生态极其成熟
这是 ROS1 最大的优势。

  • ORB-SLAM、VINS-Fusion、RTAB-Map
  • MAVROS(PX4 / ArduPilot 官方支持)
  • 大量教学和工程示例

对无人机初学者来说,ROS1 是成本最低的入门方案。
(2)学习曲线平缓

  • 节点、话题、服务模型简单
  • 调试工具完善(rviz / rqt)
  • CSDN、GitHub 资料极多

很多高校无人机实验室至今仍以 ROS1 为主,就是这个原因。

2.3 ROS1 在无人机中暴露出的关键问题

(1)实时性不足

ROS1 的通信机制并非为实时系统设计:

  • 基于 TCP,存在不确定延迟
  • 无法对通信进行严格时序控制
  • 不支持实时调度策略

在无人机中,这意味着:

  • SLAM 与控制之间存在延迟抖动
  • 高速飞行时状态信息“过期”
  • 控制稳定性受影响

因此ROS1 几乎不会直接参与飞控闭环
(2)网络依赖强,单点失效风险大

ROS Master 一旦异常:

  • 节点发现失败
  • 多机系统容易“全体失联”

在无人机多机编队、集群系统中,这是一个非常严重的隐患。
(3)多机系统支持非常有限

在 ROS1 中实现多无人机系统,往往需要:

  • 多个 ROS Master
  • 复杂的 namespace 和 remap
  • 额外桥接程序

工程复杂度很高,不利于扩展。
3. ROS2 的设计初衷:它本来就是为无人机而生的

ROS2 并不是 ROS1 的“升级版”,而是一次彻底重构

其设计目标本身就包含:

  • 实时系统支持
  • 多机器人系统
  • 分布式通信
  • 工业级可靠性

这与无人机系统的需求高度重合。

  1. ROS2 架构:从 Master 到 DDS 的本质变化

4.1 DDS 去中心化通信机制

ROS2 基于 DDS(Data Distribution Service):

  • 无 Master
  • 节点自动发现
  • 发布-订阅为底层原生能力

这对无人机意味着:

  • 系统鲁棒性显著提升
  • 网络中任意节点掉线不会导致全系统瘫痪
  • 天然支持多机通信

4.2 QoS:无人机工程中极其重要的一点

ROS2 允许对通信质量进行精细控制:

  • 是否可靠传输
  • 是否允许丢包
  • 历史数据缓存长度
  • 实时优先级

在无人机中可以做到:

  • 控制指令:高优先级、低延迟
  • 传感器数据:允许丢包
  • 日志信息:低优先级

这是 ROS1 完全不具备的能力

  1. ROS2 在无人机系统中的实际优势分析

5.1 更适合与飞控系统协同

在典型架构中:

飞控(PX4)
↑↓
ROS2(SLAM / 规划 / 决策)

ROS2 的实时性和确定性,使其:

  • 更适合作为“中高频控制逻辑层”
  • 能稳定提供位置、速度、轨迹参考
  • 与飞控之间的数据同步更可靠
    5.2 多无人机系统的天然优势

在 ROS2 中:

  • 每架无人机 = 一组节点
  • DDS 自动完成发现和通信
  • 不需要额外桥接 Master

这使得:

  • 编队飞行
  • 协同建图
  • 集群任务分配

在系统层面变得可控、可扩展。

5.3 更接近工程级系统设计

ROS2 支持:

  • 生命周期节点
  • 组件化部署
  • 与 RTOS / 实时 Linux 更好集成

这使 ROS2 不再只是“实验室工具”,而是:

可以真正进入无人机工程系统的中间件。

  1. ROS1 vs ROS2:无人机工程视角总结

6.1 什么时候 ROS1 仍然合适?

  • 学习阶段
  • 单机实验
  • 算法验证(SLAM / 感知)
  • 不追求实时性

ROS1 的最大价值在于“低门槛 + 快速验证”。

  • 6.2 什么时候必须选择 ROS2?
  • 多无人机系统
  • 对实时性有要求
  • 工程化项目
  • 长期维护系统
    7. 无人机系统中的实际选型建议(非常重要)

建议一:学习与工程分阶段

  • 前期:ROS1 + PX4 + 仿真

  • 后期:ROS2 + PX4 + 实机
    建议二:ROS 永远不要替代飞控

  • ROS 负责“想飞哪”

  • 飞控负责“怎么飞稳”

这一点在 ROS1 和 ROS2 中都成立。

建议三:尽早理解 ROS2,而不是等被迫迁移

ROS2 是趋势,不是选择题。