关于 ROS
ROS(Robot Operating System,机器人操作系统)是一个开源生态系统,为构建、部署、运行和维护机器人应用提供框架、工具和库。 本文将介绍该生态系统的主要组成部分,并概述它们的用途。
领域:ROS 框架、ROS 工具、ROS 能力 | 内容类型:简介 | 经验要求:初学者
ROS 在机器人学的许多领域都有应用。 在物流领域,ROS 提供导航、地图构建、运动控制以及多机器人协调等能力,帮助机器人在仓库中搬运货物。 在制造领域,它结合视觉系统,支持自动拾取与放置等需要高精度的任务。 在医疗领域,ROS 驱动的机器人系统可以辅助患者护理,并提升临床工作流程的效率。
观看 ROS 介绍视频,可以快速了解 ROS 的全貌。
虽然名字里有”操作系统”,但 ROS 并不是传统意义上的操作系统,而是一套工具和库,帮助开发者使用不同的编程语言、在不同的平台上开发机器人。

ROS 框架负责机器人各部分之间及其内部组件之间的通信,是整个系统的”管道”(plumbing)。 它包括消息传递、标准接口,以及对多种编程语言和平台的支持。
例如,框架负责将数据从相机发送到处理节点(node),或将命令从规划系统传递给电机控制器。 它还提供了跨系统共享软件的结构,让开发者能够构建模块化且可复用的解决方案。
ROS 由以下基本组件组成:
- 节点(Nodes)
- 接口(Interfaces:话题 topic、服务 service 和动作 action)
- 参数(Parameters)
- 客户端库(Client libraries)
ROS 中的工具帮助开发者构建、测试和监控系统。 这些工具本身并不提供机器人行为,但能让开发过程更加高效。
例如,可视化工具可以在测试时以 3D 方式显示机器人的传感器、位置和环境,这在无人机或移动机器人项目中非常常见。 借助启动工具(launch tools),开发者可以在实际部署之前,定义并验证机器人的启动方式和运行管理策略。 数据录制与回放工具则允许你记录机器人的行为以供日后分析,这在调试机器人为何出现异常行为时特别有用。
ROS 提供的核心工具集使你能够处理开发工作流程中的以下环节:
- 内省(Introspection)
- 分析(Analysis)
- 节点管理(Node management)
- 调试(Debugging)
- 构建(Builds)
- 可视化(Visualization)
- 包文档(Package documentation)
ROS 中的能力(Capabilities)是即用型软件包,提供机器人的常用功能,例如操作(manipulation)、运动规划(motion planning)和感知(perception)。 这些软件包让开发者无需从零开始即可添加高级行为。
例如,操作(Manipulation)包可以控制机械臂,在自动化工作流中执行拾取和放置等任务。 运动规划(Motion Planning)包通过在机器人所处的环境中计算安全路径,帮助机器人从一点移动到另一点。 感知(Perception)包则使机器人能够检测和识别物体或人,支持取回物体等任务,也可以应用于需要根据视觉信息做出响应的场景。 同一能力往往有多种实现可供选择,开发者可以在不同实现之间切换和实验,找到最适合自己需求的方案。
注意: 除了由 Open Robotics 维护的包之外,你还可以选择由 ROS 社区贡献的众多包。
ROS 开箱即用或通过支持的第三方解决方案提供以下核心能力:
- 仿真(Simulation)
- 运动规划(Motion planning)
- 导航(Navigation)
- 操作(Manipulation)
- 感知(Perception)
ROS 社区是由开发者、研究人员、公司和贡献者组成的全球网络,他们共同推动开源软件库的发展和完善。 任何人都可以为框架、工具和能力做出贡献。正是有了社区,共享代码、交流想法和协作开发项目才变得如此便捷。
ROS 与其他 Open Robotics 平台协同工作,让开发和部署更加便捷。
- Gazebo:提供基于物理的仿真环境,开发者可以在使用真实硬件之前先在虚拟环境中测试机器人。
- Open-RMF(Robotics Middleware Framework,机器人中间件框架):帮助不同的机器人协同工作,并与电梯和门等建筑系统进行交互。
- ros-controls:使用 ROS 实现机器人的实时控制。
借助这些集成,无论团队预算多少、规模大小,设计、测试和管理复杂环境中的机器人都变得更加容易。
ROS 发行版
Section titled “ROS 发行版”ROS 发行版(distribution)是按照固定周期发布的一组打包的 ROS 软件。 每个发行版提供核心库和工具的稳定版本,以及大量社区包。 这使得开发者更容易在统一的代码库上工作,并保持项目的兼容性。
ROS 有两个主要版本:
- ROS 1:原始框架。
- ROS 2:当前正在积极开发的版本。
ROS 1 的开发已经终止,不再计划发布新版本;而 ROS 2 则在持续开发中,每年发布新的发行版。 新发行版包含各种更新和改进,开发者可以根据自身需求在稳定性和最新功能之间做出选择。
ROS 可以在 Ubuntu、Windows 和 macOS 上运行,但我们强烈建议你在 ROS 发行版的 Tier 1 平台上运行 ROS。 macOS 上的 ROS 由社区支持,我们不推荐新用户使用。
Ubuntu 的支持取决于 ROS 发行版,每个发行版都需要特定版本的 Ubuntu LTS(长期支持版)。 其他平台可能需要从源代码构建或使用容器。
有关当前支持的平台和支持等级的完整详细信息,请参阅相关发布说明。