将 note 笔记库同步到 note_sync,AI_compiler 作为 submodule

This commit is contained in:
ylhan
2026-08-20 17:42:14 +08:00
commit 8a4210f380
44 changed files with 5080 additions and 0 deletions
+165
View File
@@ -0,0 +1,165 @@
# ROS 2 基础概念
ROS 2 (Robot Operating System 2) 是一个用于构建机器人应用程序的开源框架。它提供了一套工具、库和约定,帮助开发者创建可维护、可扩展且可重用的机器人软件。
## 1. Node (节点)
**节点** 是 ROS 2 中最小的可执行单元,代表一个单一功能模块。每个节点执行特定任务(如控制传感器、处理图像、规划路径等),并通过标准接口与其他节点通信。
- **特点**:
- 轻量级,单一职责
- 使用命名空间避免命名冲突
- 支持多种客户端库(C++、Python、Java等)
- **核心概念**:
- 节点名称:唯一标识符,如 `/camera_driver`
- 命名空间:用于组织节点,如 `/robot1/camera_driver`
## 2. Discovery (发现机制)
**发现机制** 是 ROS 2 中节点自动发现其他节点和服务的过程。它允许节点在网络中找到彼此并建立通信,无需硬编码地址。
- **工作原理**:
- 使用 DDS (Data Distribution Service) 作为底层通信中间件
- 通过参与者(Participant)、主题(Topic)和服务(Service)的发现实现
- 自动管理连接的建立和断开
- **关键组件**:
- ROS 2 守护进程 `ros2 daemon`(后台运行,管理发现)
- DDS 域(Domain ID):控制节点可见性(同一域的节点才能通信)
## 3. Interfaces (接口)
**接口** 定义了节点之间通信的消息格式。ROS 2 提供了三种主要通信接口类型:
### 3.1 Topics (话题) - 发布/订阅通信
**话题** 是节点之间传递数据的命名通道。一个节点可以**发布**(发送)数据到某个话题,其他节点可以**订阅**(接收)该话题的数据。
- **特点**:
- 单向、异步通信
- 一对多或多对多通信模式
- 消息类型严格定义(如 `std_msgs/String`、`sensor_msgs/Image`)
- **使用场景**:
- 持续数据流(如传感器数据、状态信息)
### 3.2 Services (服务) - 请求/响应通信
**服务** 实现节点之间的双向同步通信。一个节点提供**服务**,其他节点发送**请求**并等待**响应**。
- **特点**:
- 请求/响应模式
- 同步通信(客户端等待服务端处理)
- 需要定义请求和响应的消息类型(.srv 文件)
- **使用场景**:
- 一次性任务(如获取配置、执行动作)
### 3.3 Actions (动作) - 目标导向通信
**动作** 是服务的扩展,支持长时间运行的任务,并提供反馈和取消功能。
- **特点**:
- 目标-反馈-结果模式
- 可取消、可获取进度反馈
- 异步执行
- 消息类型定义在 .action 文件中
- **使用场景**:
- 长时间运行的任务(如导航、抓取物体)
## 4. Parameters (参数)
**参数** 是节点的配置值,可以在运行时动态修改。参数支持多种数据类型(整数、浮点数、字符串、布尔值等)。
- **管理方式**:
- 命令行设置
- 配置文件(YAML)
- 运行时动态修改(通过 `ros2 param` 命令或 API)
- **常用操作**:
- `ros2 param list`:列出节点参数
- `ros2 param set`:设置参数值
- `ros2 param get`:获取参数值
## 5. Introspection (内省)
**内省** 允许开发者在运行时检查和监控 ROS 2 系统的状态。通过内省工具,您可以查看节点、话题、服务和参数的信息。
- **常用工具**:
- `ros2 node list`:列出所有节点
- `ros2 topic list`:列出所有话题
- `ros2 service list`:列出所有服务
- `ros2 topic echo`:查看话题消息内容
- `ros2 node info`:查看节点详细信息
## 6. Launch (启动系统)
**Launch** 允许您同时启动多个节点和配置它们的参数。使用 Python 或 XML 编写的启动文件可以简化系统启动过程。
- **特点**:
- 同时启动多个节点
- 配置节点参数
- 设置命名空间和重映射
- 支持条件启动和依赖关系
- **常用工具**:
- `ros2 launch`:执行启动文件
- 启动文件格式:Python(推荐)、XML、YAML
## 7. Client Libraries (客户端库)
**客户端库** 是 ROS 2 提供的编程接口,允许开发者使用不同语言编写节点。
- **主要客户端库**:
- **rclcpp**:C++ 客户端库(推荐用于高性能应用)
- **rclpy**:Python 客户端库(推荐用于快速原型开发)
- **rcljava**:Java 客户端库
- **其他**:Swift、Go 等语言的社区支持
- **核心特性**:
- 统一的 API 接口
- 自动内存管理
- 支持所有 ROS 2 通信模式
## 8. 通信中间件
ROS 2 使用 **DDS (Data Distribution Service)** 作为默认通信中间件,提供可靠的实时数据交换。DDS 是工业标准的中间件,适用于嵌入式系统和高性能计算。
- **DDS 特性**:
- 高可靠性
- 低延迟
- 实时支持
- 可扩展性
- 服务质量(QoS)配置
## 9. 服务质量(QoS)
**QoS (Quality of Service)** 配置允许您控制通信的可靠性、持久性和其他特性。QoS 设置对于确保系统在不同环境下的性能至关重要。
- **主要 QoS 策略**:
- Reliability:可靠传输(保证交付)或最佳 effort(不保证交付)
- Durability:数据是否持久化(对晚加入的节点可见)
- History:保留消息历史的深度
- Deadline/Lifespan:消息的截止时间和寿命
## 10. 系统架构概览
ROS 2 系统由以下层次组成:
1. **应用层**:节点、话题、服务、动作
2. **中间件层**:DDS 通信系统
3. **工具层**:命令行工具、可视化工具、调试工具
4. **硬件抽象层**:传感器、执行器、硬件接口
## 11. 与 ROS 1 的主要区别
- **通信中间件**:ROS 1 使用 TCPROS/UDPROS,ROS 2 使用 DDS
- **节点发现**:ROS 1 依赖 roscore,ROS 2 去中心化
- **接口类型**:ROS 2 添加了 Actions
- **参数系统**:ROS 2 支持动态参数配置
- **编译系统**:ROS 1 使用 catkin,ROS 2 使用 colcon
- **支持的语言**:ROS 2 对 Python 3 的支持更好,添加了更多语言选项
这些基础概念是理解和使用 ROS 2 的核心。通过掌握这些概念,您可以开始构建复杂的机器人系统,并利用 ROS 2 的强大功能。