【ROS2】概念:中级-不同的 ROS 2 中间件供应商

目录

  • 支持的 RMW 实现

  • 多种 RMW 实现

  • 默认 RMW 实现

ROS 2 构建在 DDS/RTPS 之上,作为其中间件,提供发现、序列化和传输。本文( https://design.ros2.org/articles/ros_on_dds.html )详细解释了使用 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 实现变体,如一个专门针对微控制器,另一个针对需要特殊安全认证的应用程序(我们目前仅支持其标准桌面版本)。

为了在 ROS 2 中使用 DDS/RTPS 实现,需要创建一个“ROS 中间件接口”(也称为 rmw 接口或 rmw )包,该包使用 DDS 或 RTPS 实现的 API 和工具实现抽象的 ROS 中间件接口。实现和维护支持 DDS 实现的 RMW 包需要大量工作,但支持至少几个实现对于确保 ROS 2 代码库不依赖于任何特定实现非常重要,因为用户可能希望根据项目需求更换实现。

支持的 RMW 实现 

961bae53eaa94fe1ab0fc7be3a01615c.png

 产品名称 许可证 RMW 实现 状态
eProsima Fast DDSApache 2 阿帕奇 2rmw_fastrtps_cpp完全支持。默认 RMW。与二进制版本一起打包。
Eclipse Cyclone DDSEclipse 公共许可证 v2.0rmw_cyclonedds_cpp完全支持。随二进制版本一起打包。
RTI Connext DDS 商业, 研究commercial, researchrmw_connextdds完全支持。支持包含在二进制文件中,但 Connext 单独安装。
GurumNetworks GurumDDS 商业commercialrmw_gurumdds_cpp社区支持。支持包含在二进制文件中,但 GurumDDS 单独安装。

有关使用多个 RMW 实现的实用信息,请参阅“使用多个 RMW 实现”教程。https://docs.ros.org/en/jazzy/How-To-Guides/Working-with-multiple-RMW-implementations.html

多种 RMW 实现

ROS 2 的二进制发行版对当前活跃的发行版提供了开箱即用的多个 RMW 实现支持(Fast DDS、RTI Connext Pro、Eclipse Cyclone DDS、GurumNetworks GurumDDS)。默认是 Fast DDS,因为我们将其与我们的二进制包一起分发,所以无需任何额外的安装步骤。

其他 RMWs 如 Cyclone DDS、Connext 或 GurumDDS 可以通过安装额外的软件包来启用,但无需重建任何东西或替换任何现有的软件包。

从源代码构建的 ROS 2 工作区可以同时构建和安装多个 RMW 实现。在编译核心 ROS 2 代码时,如果找到任何 RMW 实现,并且相关的 DDS/RTPS 实现已正确安装并配置了相关的环境变量,则将构建该 RMW 实现。例如,如果工作区中有 RTI Connext DDS 的 RMW 包代码https://github.com/ros2/rmw_connextdds ,并且还找到了 RTI 的 Connext Pro 安装,则将构建该代码。

在许多情况下,您会发现使用不同 RMW 实现的节点能够进行通信,但这并不适用于所有情况。以下是不支持的跨供应商通信配置列表:

  • Fast DDS <-> Connext

    • 由 Fast DDS 发布的 WString 无法在 macOS 上被 Connext 正确接收

  • Connext <-> Cyclone DDS

    • 不支持 WString 的发布/订阅通信

默认 RMW 实现 

如果一个 ROS 2 工作区有多个 RMW 实现,并且 Fast DDS 可用,则选择 Fast DDS 作为默认的 RMW 实现。如果未安装 Fast DDS RMW 实现,则将使用按字母顺序排列的第一个 RMW 实现标识符的 RMW 实现。实现标识符是提供 RMW 实现的 ROS 包的名称,例如 rmw_cyclonedds_cpp 。例如,如果同时安装了 rmw_cyclonedds_cpp 和 rmw_connextdds ROS 包,则 rmw_connextdds 将是默认值。如果安装了 rmw_fastrtps_cpp ,它将是默认值。

请参阅指南,了解在运行 ROS 2 示例时如何指定要使用的 RMW 实现。

附录

 基于 DDS 的 ROS

本文写于决定使用 DDS 和 RTPS 作为 ROS 2 的基础通信标准之前。有关 ROS 2 如何实现的详细信息,请参见核心文档。

c9eb67317eeec93acc3e2d72aa230f34.png

76d3a8cf3b371c6907063ea12a4ea289.png

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个关于ROS Noetic软件包依赖关系的问题。其中,下列软件包的依赖关系尚不足够满足要求,无法安装: ros-noetic-desktop-full: 依赖于 ros-noetic-desktop,但它不会被安装。 依赖于 ros-noetic-perception,但它不会被安装。 依赖于 ros-noetic-simulators,但它不会被安装。 依赖于 ros-noetic-urdf-sim-tu,但它不会被安装。 ### 回答2: 这个错误提示是说明在安装 ros-noetic-desktop-full 软件包时,发现它需要依赖一些其他的软件包,但是这些软件包未被安装。其中,ros-noetic-desktop、ros-noetic-perception、ros-noetic-simulators 和 ros-noetic-urdf-sim-tu 是四个未满足依赖关系的软件包。 这个错误提示一般是由于软件源的问题所导致的。在安装软件包时,系统会从软件源中查找该软件包以及它所需的依赖关系。如果软件源中不存在某个软件包的依赖关系,则会提示这个错误信息。 要解决这个问题,可以尝试以下几个方法: 1. 更新软件源:可通过修改软件源配置文件或使用软件源管理工具来更新软件源。更新后再次尝试安装软件包,看是否能够解决依赖关系问题。 2. 手动安装依赖关系:如果更新软件源后仍然无法解决依赖关系问题,可以尝试手动安装依赖关系。按照依赖关系的提示,逐个安装这四个软件包。安装完成后再次尝试安装 ros-noetic-desktop-full 软件包,看是否能够正常安装。 3. 使用 aptitude 命令安装:aptitude 命令可以自动处理依赖关系,可能会更好地解决这个问题。可以通过运行以下命令安装 ros-noetic-desktop-full 软件包: sudo aptitude install ros-noetic-desktop-full 以上是我的回答,希望能对你有所帮助。如果你还有其他问题,请随时回复。 ### 回答3: 这个问题意味着在安装 ros-noetic-desktop-full 软件包时,计算机无法满足所有需要的依赖关系。这些依赖关系包括 ros-noetic-desktop、ros-noetic-perception、ros-noetic-simulators 和 ros-noetic-urdf-sim-tu。 在解决这个问题之前,我们需要了解什么是依赖关系。在软件工程中,依赖关系指的是一个软件包需要另一个软件包才能正常运行的情况。例如,在 ROS 中,ros-noetic-desktop-full 需要依赖其他的软件包才能提供完整的功能。 为了解决这个问题,我们可以使用以下方法: 1. 更新软件包源列表。我们可以更新软件包源列表,这有助于计算机查找所需的软件包。在 Ubuntu 系统中,我们可以使用以下命令更新软件包源列表:sudo apt-get update。 2. 安装依赖关系。我们可以尝试单独安装缺失的依赖关系。在 ROS 中,我们可以使用以下命令安装缺失的软件包:sudo apt-get install ros-noetic-desktop ros-noetic-perception ros-noetic-simulators ros-noetic-urdf-sim-tu。 3. 检查软件包仓库。某些情况下,软件包源可能已经过时或不再受支持。我们可以检查软件包仓库,查看软件包是否可用。在 Ubuntu 系统中,我们可以使用以下命令查看软件包仓库:apt-cache search ros-noetic-desktop-full。 总之,无法满足依赖关系的问题是常见的,在解决这个问题之前,我们需要了解依赖关系的概念,并掌握一些解决方法。在 ROS 中,我们可以使用更新软件包源列表、安装依赖关系和检查软件包仓库等方法解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值