Files

3.8 KiB
Raw Permalink Blame History

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. 软件架构层次

  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 代码块

相关资源