ROS2学习(5)------ROS2 功能包介绍
- 操作系统:ubuntu22.04
- IDE:Visual Studio Code
- 编程语言:C++11
- ROS版本:2
ROS 2(Robot Operating System 2)功能包是ROS 2生态系统的基本组成单元,每个功能包旨在实现特定的功能或提供一组相关的工具。功能包可以包含源代码、库文件、配置文件、数据集、文档等资源。下面是对ROS 2功能包的详细介绍:
功能包结构
一个典型的ROS 2功能包(package)具有以下目录结构:
my_package/
├── CMakeLists.txt # 构建脚本
├── package.xml # 包描述文件
├── launch/ # 启动文件目录
│ └── my_launch_file.launch.py # Python启动文件示例
├── src/ # 源代码目录
│ └── my_source_code.cpp
├── include/ # 头文件目录
│ └── my_header.hpp
├── resource/ # 资源文件目录
├── scripts/ # 可执行脚本目录
│ └── my_script.sh
└── msg/ # 自定义消息类型目录
└── srv/ # 自定义服务类型目录
└── action/ # 自定义动作类型目录
关键文件介绍
-
CMakeLists.txt:这是CMake构建系统的配置文件,用于指定如何编译和链接你的代码。对于使用ament_cmake构建系统(ROS 2推荐的方式)的C++包尤其重要。
-
package.xml:这是一个XML格式的文件,包含了关于该包的信息,如名称、版本、维护者信息、依赖关系等。它帮助ROS 2了解包的需求,并确保在使用前正确安装所有必要的依赖项。
-
launch/ 目录:存放启动文件,这些文件定义了一组节点以及它们应该如何被启动。从ROS 2 Foxy开始,官方推荐使用Python编写的.launch.py文件来定义启动配置。
-
msg/, srv/, action/ 目录:分别用于定义自定义的消息类型、服务类型和动作类型。这些文件定义了节点之间交换的数据结构。
创建一个新的ROS 2功能包
你可以使用ros2 pkg create命令快速创建一个新的ROS 2功能包。例如,要创建一个名为example_pkg的C++包,可以运行:
ros2 pkg create example_pkg --build-type ament_cmake --dependencies rclcpp std_msgs
这条命令会生成一个基本的包结构,并自动为你设置一些初始的依赖项(在这个例子中是rclcpp和std_msgs)。
发布与订阅
ROS 2功能包通常会包括发布者(Publisher)和订阅者(Subscriber)节点。这些节点通过话题(Topic)进行通信。例如,一个简单的发布者节点可能会向/chatter话题发送消息,而一个订阅者节点则监听同一话题并处理接收到的消息。
其他重要概念
- 参数(Parameters):允许动态地调整节点的行为而不必重新编译代码。
- 生命周期节点(Lifecycle Nodes):提供了更严格的节点状态管理机制,支持配置、激活、去激活等状态转换。
- 服务质量(QoS)策略:允许用户根据应用需求定制化配置数据传输的行为,如可靠性、耐久性等。
结论
ROS 2功能包的设计使得开发者能够以模块化的方式组织代码,便于复用和维护。每个包都可以独立开发、测试和部署,极大地提高了开发效率。同时,ROS 2提供的丰富工具和库也大大简化了机器人应用程序的开发过程。