将 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
+128
View File
@@ -0,0 +1,128 @@
# 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)