Files

128 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ROS2 代码结构图
## ROS2 工作区目录结构
```mermaid
flowchart TD
Workspace[ROS2 工作区] --> src[src/ 源代码目录]
Workspace --> build[build/ 构建目录]
Workspace --> install[install/ 安装目录]
Workspace --> log[log/ 日志目录]
src --> Package1[包1]
src --> Package2[包2]
src --> PackageN[...]
Package1 --> P1_CMake[CMakeLists.txt]
Package1 --> P1_PackageXML[package.xml]
Package1 --> P1_src[src/ 源代码]
Package1 --> P1_include[include/ 头文件]
Package1 --> P1_msgs[msg/ 消息定义]
Package1 --> P1_srvs[srv/ 服务定义]
Package1 --> P1_actions[action/ 动作定义]
```
## ROS2 软件架构
```mermaid
flowchart TD
App[应用程序] --> ClientLibs[客户端库]
subgraph ClientLibs [客户端库]
direction LR
RCLcpp[C++ 客户端库 rclcpp]
RCLpy[Python 客户端库 rclpy]
RCL[C 客户端库 rcl]
end
ClientLibs --> RCL_Interface[RCL 接口]
RCL_Interface --> RMW[ROS 中间件接口 RMW]
subgraph DDS_Implementations [DDS 实现]
direction LR
FastDDS[Fast DDS]
CycloneDDS[Cyclone DDS]
RTI_Connext[RTI Connext]
OpenSplice[OpenSplice]
end
RMW --> DDS_Implementations
DDS_Implementations --> Network[网络通信]
```
## ROS2 核心包依赖关系
```mermaid
flowchart TD
ROS2_Core[ROS2 核心] --> ament_core[ament_core<br/>构建系统]
ROS2_Core --> rcl[rcl<br/>C语言客户端库]
ROS2_Core --> rclcpp[rclcpp<br/>C++客户端库]
ROS2_Core --> rclpy[rclpy<br/>Python客户端库]
rcl --> rmw[rmw<br/>中间件接口]
rclcpp --> rcl
rclpy --> rcl
rmw --> rmw_implementation[rmw_implementation<br/>中间件实现]
rmw_implementation --> DDS[DDS 实现]
ROS2_Tools[ROS2 工具] --> ros2cli[ros2cli<br/>命令行工具]
ROS2_Tools --> colcon[colcon<br/>构建工具]
ROS2_Tools --> launch_ros[launch_ros<br/>启动系统]
```
## ROS2 节点通信模型
```mermaid
flowchart LR
NodeA[ROS2 节点 A] -->|发布话题| Topic1[话题 /topic1]
NodeB[ROS2 节点 B] -->|订阅话题| Topic1
NodeC[ROS2 节点 C] -->|请求服务| Service1[服务 /service1]
NodeD[ROS2 节点 D] -->|提供服务| Service1
NodeE[ROS2 节点 E] -->|发送目标| Action1[动作 /action1]
NodeF[ROS2 节点 F] -->|执行动作| Action1
NodeF -->|反馈| NodeE
NodeF -->|结果| NodeE
```
## 说明
### 1. 工作区目录结构
- **src/**: 包含所有ROS2包的源代码
- **build/**: 构建过程中生成的中间文件
- **install/**: 安装目录,包含可执行文件、库和资源
- **log/**: 构建和运行时的日志文件
### 2. ROS2包的基本结构
每个ROS2包通常包含:
- `CMakeLists.txt`: CMake构建配置文件
- `package.xml`: 包元数据文件
- `src/`: C++或Python源代码
- `include/`: C++头文件
- `msg/`, `srv/`, `action/`: 消息、服务、动作定义文件
### 3. 软件架构层次
1. **应用程序层**: 用户编写的ROS2节点
2. **客户端库层**: 语言特定的API(C++、Python、C)
3. **RCL层**: 通用的ROS客户端库
4. **RMW层**: ROS中间件抽象接口
5. **DDS层**: 具体的DDS实现
### 4. 通信模式
- **话题(Topics)**: 发布/订阅模式,单向异步通信
- **服务(Services)**: 请求/响应模式,同步通信
- **动作(Actions)**: 目标/反馈/结果模式,长时间运行的任务
## 使用方法
1. 将本文件在支持 Mermaid 图的 Markdown 查看器中打开(如 VS Code with Mermaid 插件、GitHub、GitLab 等)
2. 图表将自动渲染为可视化图形
3. 如需修改图表,编辑对应的 Mermaid 代码块
## 相关资源
- [ROS2 官方文档](https://docs.ros.org/)
- [ROS2 架构设计](https://design.ros2.org/)
- [Mermaid 语法指南](https://mermaid.js.org/syntax/flowchart.html)