ROS 是什么、为什么需要它:从零理解机器人操作系统(一)
ROS 是什么、为什么需要它:从零理解机器人操作系统(一)
通用基础优先 · 第一篇|ROS 通识系列|事实基线:2026-10-24

一图读懂本文:五节要点 + 数采平台衔接 + 新手/老手双视角。先看图建立框架,再逐节展开。
做数采平台这段时间,我发现一个绕不开的事实:机器人本体的控制与数据采集,天然是建立在 ROS 之上的。乐聚 KUAVO 的 SDK 是 ROS 1,主流采集链路 rosbag → parquet → LeRobot 也以 ROS 话题为基本数据单元。所以这套系列,先从"ROS 到底是什么"讲起——不急着敲命令,先把心智模型立住。
一、一句话理解:ROS 不是操作系统
名字里带"OS",但它不是像 Windows、Linux 那样的操作系统。准确地说,ROS(Robot Operating System)是一套运行在 Linux 之上的"机器人中间件 / 元操作系统":
- 它提供硬件抽象(不用关心"这款相机/那款电机的驱动细节");
- 提供进程间通信框架(节点之间怎么传数据);
- 提供一套工具链(可视化、调试、录制回放、包管理)。
你可以把它类比成"机器人界的 Spring + RPC + 一堆运维工具"——它管的是怎么把一堆零散的传感器、控制器、算法模块,组织成一个能协同工作的系统。
二、为什么需要 ROS:没有它会发生什么
假设没有 ROS,你想让一台机械臂"看到零件→算坐标→抓取",得自己从头写:
- 相机驱动 → 自己解析 USB/网络协议;
- 图像处理模块 → 和主控怎么传图?(共享内存?socket?)
- 运动规划 → 和底层控制器怎么通信?
- 多个模块之间的启动顺序、命名、错误处理全得手写。
结果就是每个团队、每台机器人都重复造轮子,而且造出来的"轮子"彼此不兼容。ROS 的价值正在于此:
| 痛点 | ROS 给的解法 |
|---|---|
| 硬件驱动各自为政 | 统一的消息接口(camera_info、Image、JointState…) |
| 模块间通信无标准 | Topic / Service / Action 三种标准通信原语 |
| 没有现成工具 | rviz 可视化、rqt 调试、rosbag 录制、rosnode 探查 |
| 算法难复用 | 以"包(package)"为单位的生态,官方索引几万个包 |
对我们数采平台来说,ROS 意味着:只要本体暴露了标准的 ROS 接口,我们的采集、转换、适配层就能跨品牌复用——这正是项目"统一动作空间 / retargeting"思路的底层支撑。
三、发展简史与发行版:为什么今天要分 ROS 1 和 ROS 2
ROS 始于 2007 年 Willow Garage,2010 年开源。早期版本(Indigo、Kinetic、Melodic…)统称 ROS 1。它的通信依赖一个中心节点 roscore(ROS Master),用自研的 TCPROS/UDPROS,实时性和嵌入式支持较弱。
2017 年起推出 ROS 2,底层换成工业级 DDS(Data Distribution Service)中间件,解决了 ROS 1 的多机器人、实时性、嵌入式三大短板。关键时间线(来源 docs.ros.org / endoflife.date):
| 发行版 | 类型 | 发布 | 支持截止 | 备注 |
|---|---|---|---|---|
| ROS 1 Noetic | 最后 ROS1 | 2020-05 | 2025-05 EOL | 整个 ROS 1 线已终结 |
| ROS 2 Humble | LTS | 2022-05-23 | 2027-05-31 | Ubuntu 22.04 |
| ROS 2 Jazzy | LTS(推荐) | 2024-05-23 | 2029-05-31 | Ubuntu 24.04 |
| ROS 2 Kilted | 短期版 | 2025-05-23 | ~2026 年底 | 非 LTS,迁移不选它 |
| ROS 2 Lyrical | LTS(最新) | 2026-05-22 | 2031-05-31 | 偶数年 LTS |
注:ROS 2 每年 5-23 发版,偶数年 LTS(支持 5 年)、奇数年普通版(1.5 年)。KUAVO 当前仍是 ROS 1,所以本系列对两者都会覆盖。
ros1_bridge 桥接,逐步迁移,不要一次性重写。四、核心架构全景:ROS 计算图(Computation Graph)
ROS 系统运行时,是一张由"计算图"组成的网络。无论 ROS 1 还是 ROS 2,下面这几样是必须建立的底层概念:
roscore(ROS Master)做名字登记;ROS 2 靠 DDS 的 Domain 做去中心化发现。这是 ROS 1 与 ROS 2 最本质的架构差异。
.msg / .srv / .action 接口。跨品牌统一,先统一接口。
图:ROS 计算图最小全景。下一篇会逐个拆开,并用命令行 `rosnode` / `rostopic` 实际探查一张图。
五、适用边界与常见误区
ROS 很强,但不是银弹,提前认清边界能少踩很多坑:
- 误区 1:ROS 能跑实时控制。→ ROS 1 不行;ROS 2 借助 DDS + 底层实时内核接近实时,但 1kHz 电流环这类硬实时仍需底层控制器兜底(和我们之前分析"小脑不会消失"一致)。
- 误区 2:用了 ROS 就自动跨平台。→ 接口语义要自己统一,ROS 只提供"通信管道",不保证"两边说的同一种话"。
- 误区 3:ROS 1 还能长期用。→ Noetic 已于 2025-05 EOL,新设备不应再选 ROS 1。
六、本系列后续与数采平台的衔接
接下来我们会按这条线推进:
- 02 核心概念与计算图:把上面的 8 个概念拆细,用命令行实跑;
- 03–04 通信机制:Topic / Service / Action 逐个讲透,配最小 demo;
- 10 rosbag:直接落到
rosbag → parquet → LeRobot的数采实战; - 13–14 ROS2 与落地:评估 KUAVO 链路是否迁 ROS 2,给出 adapter 层设计。
读者只要跟着把 01、02 读透,再配合每篇的小 demo,就能在数采平台上"看得懂、改得动、采得来"。
七、小结
- ROS 是中间件,不是操作系统,跑在 Linux 上;
- 它用节点 + 三种通信原语(Topic/Service/Action)+ 统一消息接口,解决机器人软件的分工与复用;
- ROS 1 已 EOL(2025-05),新项目上 ROS 2(Jazzy / Lyrical LTS),老设备用 ros1_bridge 过渡;
- 对我们有什么用:rosbag 是数采数据的源头,统一 ROS 接口是跨品牌适配层的地基。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)