3.8 KiB
3.8 KiB
ROS2 代码结构图
ROS2 工作区目录结构
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 软件架构
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 核心包依赖关系
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 节点通信模型
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. 软件架构层次
- 应用程序层: 用户编写的ROS2节点
- 客户端库层: 语言特定的API(C++、Python、C)
- RCL层: 通用的ROS客户端库
- RMW层: ROS中间件抽象接口
- DDS层: 具体的DDS实现
4. 通信模式
- 话题(Topics): 发布/订阅模式,单向异步通信
- 服务(Services): 请求/响应模式,同步通信
- 动作(Actions): 目标/反馈/结果模式,长时间运行的任务
使用方法
- 将本文件在支持 Mermaid 图的 Markdown 查看器中打开(如 VS Code with Mermaid 插件、GitHub、GitLab 等)
- 图表将自动渲染为可视化图形
- 如需修改图表,编辑对应的 Mermaid 代码块