ROS2

Robot Operating System 2 第二代机器人操作系统[1]

并不是一个传统意义上的操作系统(如 Windows 或 Linux),而是一个用于构建机器人应用的开源软件框架和中间件
它提供了一系列库、工具和约定,核心目标是实现代码的复用、模块化以及跨平台的机器人软件开发,使得软件的复用性更高,简化机器人开发任务,是加速机器人落地的软件库和工具集

设计目标:面向真实世界应用

ROS 2 是对其前身 ROS 1 的彻底重新设计,旨在解决 ROS 1 在真实世界商业和研究应用中遇到的局限。其核心设计目标包括:

相关章节

ROS2 相关基础
ROS2 的安装
ROS2 Architecture
Ros2 bag

概念 Concepts

Basic Concepts
ROS2 Nodes
ROS2 Topics
ROS2 Services
RCL
ROS2 Package
ROS2 Message
ROS2 Communication

实际实践

创建工作区
编写节点 rclcpp 或 rclpy
编译构建 colcon build
运行节点 ros2 run
测试通信 ros2 topic echo / ros2 topic pub
ROS and mqtt 代码使用

核心概念:计算图模型 (Computation Graph)

一个 ROS 2 系统由一系列松散耦合的、可独立运行的节点 (Nodes) 组成,这些节点通过一个通用的通信层进行交互,形成一个“计算图”。
Pasted image 20260101204203.png

1. 节点 (Nodes)

节点是 ROS 2 中的基本可执行单元。一个机器人系统通常由许多各司其职的节点组成。例如,一个节点负责从摄像头读取图像,另一个节点负责处理图像以检测障碍物,还有一个节点负责根据障碍物信息控制电机。

2. 通信机制

节点之间通过三种核心机制进行通信:

3. 其他概念

与 ROS 1 的主要区别

类别 ROS 1 ROS 2
网络传输 基于TCP/UDP的自定义协议 现有标准(DDS),抽象层支持添加其他协议
网络架构 中央名称服务器(roscore) 对等节点发现
平台支持 Linux Linux、Windows 和 macOS
客户端库 各种语言独立编写 共享一个共同的底层C库(rcl)
节点与进程 每个进程单节点 每个进程多节点
线程模型 回调队列和处理程序 可交换的执行器
节点状态管理 生命周期节点
嵌入式系统 最小实验性支持(rosserial) 商业支持的实现(micro-ROS)
参数访问 基于XMLRPC的辅助协议 使用服务调用实现
参数类型 赋值时推断类型 类型声明并强制执行

核心生态系统

相关工具 简要介绍
Rviz2 Data
RQT GUI Framwork
Gazebo
Colcon

  1. https://docs.ros.org/ ↩︎