ROS2 是什么:概念与核心术语
一、ROS2 是什么:概念与核心术语
ROS2 不是操作系统,而是一套面向机器人的分布式中间件与工具链。它把「一个机器人程序」拆成若干互相通信的进程(节点),并规定了它们怎么传数据、怎么传参数、怎么组织启动、怎么把坐标系统一起来。底层通信由 DDS 实现,因此没有 ROS1 时代的中心节点(roscore),任何一个进程挂掉都不会拖垮整个系统。
它解决的问题是「多传感器、多执行器、多算法模块之间怎么解耦」。激光雷达、相机、IMU、底盘控制器、定位算法、规划算法由不同的人写、用不同的语言写,ROS2 用一套统一的话题/服务/动作接口把它们拼起来。没有这层抽象,每换一个雷达就要重写一遍驱动和上层。
与相邻方案的区别
| 方案 | 通信模型 | 适用 |
|---|---|---|
| ROS2 | DDS 发布/订阅 + 服务 + 动作,原生分布式,支持 QoS | 多模块机器人系统、需要工具链与生态(导航、机械臂、仿真) |
| ROS1 | 基于 TCP 的自定义协议,中心节点 roscore,无 QoS | 历史项目;新项目不建议 |
| 自研 ZeroMQ / 共享内存 | 自己定义协议 | 对延迟和确定性要求极高、模块数量固定的专用系统 |
| micro-ROS | 把 ROS2 通信栈裁剪后跑在 MCU 上 | 单片机直接接入 ROS2 图 |
核心术语表
| 术语 | 含义 | 说明 |
|---|---|---|
| 节点 Node | 一个进程内的一个逻辑单元 | 一个进程可以承载多个节点(组件化) |
| 话题 Topic | 多对多的异步数据流 | 传感器数据、状态广播用它 |
| 服务 Service | 一对一的同步请求应答 | 适合「问一次答一次」的配置类操作 |
| 动作 Action | 带反馈、可取消的长任务 | 导航到目标点、机械臂运动到姿态都用它 |
| 参数 Parameter | 节点的运行期配置 | 启动时从 YAML 加载,也可以运行时改 |
| QoS | 通信质量策略集合 | 可靠性、持久性、历史深度等;发布订阅两端不兼容时消息会被静默丢弃 |
| rmw / DDS | 中间件实现层 | 常见 CycloneDDS、Fast DDS,通过环境变量切换 |
| TF2 | 坐标变换库与变换树 | 机器人上几乎所有几何计算都依赖它 |
| 生命周期节点 | 带状态机的节点(未配置、非活跃、活跃等) | 导航栈靠它保证启动顺序 |
| colcon / ament | 构建工具与包规范 | 工作空间的构建与覆盖机制 |

