ROS2 程序结构


一、ROS 包组成

└── example_pkg
    ├── CMakeLists.txt
    ├── config
       └── param.yaml
    ├── include
       └── example_pkg
           ├── example_node.hpp
           └── user_function.hpp
    ├── launch
       └── example.launch.py
    ├── package.xml
    └── src
        ├── example_node.cpp
        ├── main.cpp
        └── user_function.cpp
  • config 中存放的是本节点中包含的参数配置文件

  • launch 中包含了启动本节点需要启动的必要 Node。如以相机为例,若要启动 vslam 则必须要同时启动相机节点。

  • main.cpp 程序的唯一入口。只负责配置参数和实例化 ROS 节点。

  • user_function.cpp 用户的所有逻辑实现的指代,用户的逻辑文件可能有很多。

  • example_node.cpp 负责调用所有用户逻辑,所有 ROS 中的定义以及 ROS 的解析在这部分完成,将 ROS 数据转为非 ROS 数据类型传入到 user_function 中。

二、自定义消息

└── example_pkg_interfaces
    ├── CMakeLists.txt
    ├── action
       └── ActionFiles.action
    ├── msg
       └── MsgFiles.msg
    ├── package.xml
    └── srv
        └── ServeFiles.srv

在一些情况下会不可避免的使用自定义的消息,因此建议将所有包的自定义接口写在一个统一的仓库里。这样对于其他机器使用自定义接口时只需要编译一个包就可以了,而不是从每一个包中将其自定义的消息整理出来。