目录
1.ROS2架构
在ROS 2(Robot Operating System 2)中,系统通常由以下几个核心部分组成,它们共同构成了ROS 2的架构和功能:
-
Plumbing(管道):
- 这个术语在ROS 2中用来形象地描述其通信基础设施。它包括了底层的通信机制,如话题(Topics)、服务(Services)、动作(Actions)等,这些机制允许节点(Nodes)之间进行数据交换和通信。
- 通过DDS(Data Distribution Service)实现的RMW(ROS Middleware Interface)是ROS 2通信的核心,它提供了一种去中心化、可扩展的方式来分发数据。
-
Tools(工具):
- ROS 2提供了一系列的工具,用于开发、测试、调试和部署机器人应用程序。这些工具包括命令行工具(如
ros2
命令行界面)、图形界面工具(如RViz、Gazebo)、以及用于构建和打包软件的工具(如colcon、ament)。 - 这些工具旨在简化开发流程,提高开发效率,并帮助开发者更好地管理和维护机器人软件。
- ROS 2提供了一系列的工具,用于开发、测试、调试和部署机器人应用程序。这些工具包括命令行工具(如
-
Capabilities(功能):
- ROS 2的“功能”指的是它提供的各种软件功能和服务,如参数服务器、节点管理、包管理、依赖关系解析等。
- 这些功能支持机器人应用程序的构建和运行,包括运行时服务、资源管理和应用程序生命周期管理。
-
Ecosystem(生态系统):
- ROS 2的生态系统包括了广泛的软件包、库、工具和最佳实践,这些都是由一个活跃的社区开发和维护的。
- 生态系统还包括了文档、教程、研讨会、会议和在线资源,这些资源为ROS 2的学习、开发和贡献提供了支持。
2.DDS概念
ROS2的话题、服务、参数、动作实现底层依靠DDS完成。
ROS通信基于Broker模式,ROS2通信基于数据为中心模式,采用DDS(数据分发服务)的数据通信机制。
为了实现对多个DDS的兼容,ROS2设计了ROS Middleware中间件,DDS厂商按照ROS2中间件的接口标准开发对应的驱动RMW impl,在ROS2架构中的四大组成部分中,由于DDS的引入,在 ROS1 中,用户需要编写自定义的通信管道来处理数据的发布和订阅。ROS2 引入 DDS 之后,这些管道由 DDS 实现提供,用户不再需要为基本的数据传输功能编写额外的代码。
在命令行中配置DDS的qos
ros2 topic pub /chatter std_msgs/msg/Int32 "data:42" --qos-reliability best_effort
ros2 topic echo /chatter --qos-reliaiblity reliable
ros2 topic echo /chatter --qos-reliability best_effort
ros2 topic info /chatter --verbose
配置qos时,确保发布方和订阅方的服务质量管理参数一致。