一、前言
ROS 2 构建在 DDS/RTPS 之上,DDS/RTPS作为ROS的中间件,提供发现、序列化和传输。本文详细解释了使用 DDS 实现和/或 DDS 的 RTPS 有线协议背后的机理。总而言之,DDS 是一个端到端的中间件,它提供与 ROS 系统相关的功能,例如分布式发现(不像 ROS 1 中那样集中)和控制运输的不同"服务质量"选项。
DDS 是由一系列供应商实施的行业标准,例如 RTI 的 Connext DDS、eProsima 的 Fast DDS、Eclipse 的 Cyclone DDS 或 GurumNetworks 的 GurumDDS。 RTPS(又名 DDSI-RTPS)是 DDS 用于通过网络进行通信的有线协议。
ROS 2 支持多种 DDS/RTPS 实现,因为在选择供应商/实现时它不一定是"一刀切"。在选择中间件实现时,您可能会考虑许多因素:许可证等后勤考虑因素,或平台可用性或计算占用空间等技术考虑因素。供应商可能会提供不止一种 DDS 或 RTPS 实施,以满足不同的需求。例如,RTI 的 Connext 实现有一些变体,其目的各不相同,比如一个专门针对微控制器,另一个针对需要特殊安全认证的应用程序(我们目前只支持他们的标准桌面版本)。
二、ROS2 支持的 RMW 实施
为了在 ROS 2 中使用 DDS/RTPS 实现,需要创建一个"ROS 中间件接口"( ROS Middle ware interface;又名 rmw 接口或只是 rmw)包,使用 DDS 或 RTPS 实现的 API 和工具来实现抽象 ROS 中间件接口。实现和维护 RMW 包以支持 DDS 实现需要大量工作,但支持至少几个实现对于确保 ROS 2 代码库不与任何特定实现绑定非常重要,因为用户可能希望根据具体情况切换实现根据他们项目的需要。
支持的 RMW 实现
Product name
License