ROS 2中的DDS中央件

[复制链接]
发表于 2025-11-16 15:43:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、简介

中央件是一个软件层,通常用于毗连差别的应用步调、服务或体系,以便它们可以或许相互通讯和交换数据。中央件并不直接向用户袒露,而是在体系之间充当“桥梁”或“调解人”。简朴明确成邮局的信箱,但它并不但仅是这么简朴。ROS1的中央件是ROS构造自己基于TCP/UDP机制创建的,而ROS2接纳了第三方的DDS作为中央件,将DDS服务接口举行了一层抽象,包管了上层应用层调用接口的同一性。ROS2为每家DDS供应商都开发了对应的DDS接口层,然后通过DDS抽象层来同一DDS的API。这里不做具体的DDS先容,只想说当我们在碰到如帧率非常、丢帧、大量数据同步非常的时间,可以思量更换DDS的方式举行办理。
二、默认支持的 DDS (Data Distribution Service) 实现


  • Fast DDS(开源):Fast DDS是ROS 2官方保举的DDS实现之一,由eProsima开发。Fast DDS提供了较低的耽误和高吞吐量,而且支持广泛的特性,如QoS(Quality of Service)设置、恒久性、可靠性等,是ROS 2中的默认DDS实现,性能较好,而且可以或许满足许多实时体系的要求。
    1. sudo apt install ros-<ros2-distro>-rmw-fastrtps  # ros2-distro 换成自己的ros版本,如 humble
    复制代码
  • Cyclone DDS(开源):Cyclone DDS是由Eclipse Cyclone DDS提供的开源DDS实现。特殊得当体系资源有限的嵌入式装备和对低耽误要求较高的应用场景。相对于 Fast DDS,Cyclone DDS提供了更多的调试信息且非常轻量。
    1. sudo apt install ros-<ros2-distro>-rmw-cyclonedds
    复制代码
  • RTI Connext DDS:RTI Connext DDS是由Real-Time Innovations (RTI) 提供的商业DDS实现。它是一个功能非常强盛的DDS实现,广泛应用于工业、汽车、航空航天等范畴,提供了丰富的特性和高可靠性。RTI Connext DDS可以通过ROS 2的商业支持提供,通常须要允许证和支持条约才气利用完备的功能,否则会以试用版的情势支持并具有一些限定,特殊留意!!!。
    1. sudo apt install ros-<ros2-distro>-rmw-connextdds
    复制代码

  • OpenSplice DDS(开源/商业):OpenSplice DDS是由ADLINK Technology提供的另一种DDS实现,实用于实时和高吞吐量的体系。尤其在工业控制和其他须要高可靠性、分布式体系的场景中非常常见。从ROS 2 Eloquent开始,OpenSplice DDS已不再被官方支持。高版本想要利用OpenSplice DDS,大概须要自行编译和设置,否则无法定位软件包。OpenSplice DDS的商业版本会涉及允许证和支持条约。开源版本遵照 Apache License 2.0协议。
    1. sudo apt install ros-<ros2-distro>-rmw-opensplice
    复制代码

三、切换DDS实现


  • ROS 2支持的DDS实现,可以通过设置ROS 2环境变量RMW_IMPLEMENTATION来指定利用的DDS实现。
    1. export RMW_IMPLEMENTATION=rmw_fastrtps_cpp        # Fast DDS(默认实现)
    2. export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp      # Cyclone DDS
    3. export RMW_IMPLEMENTATION=rmw_connextdds_cpp      # RTI Connext DDS
    4. export RMW_IMPLEMENTATION=rmw_opensplice_cpp      # OpenSplice DDS
    复制代码
  • 可以将这些export下令添加到~/.bashrc文件中,如许每次打开终端时都能自动设置DDS实现。
    1. echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc   # 不同 DDS实现
    2. source ~/.bashrc
    复制代码
  • 可以利用下令查察RMW_IMPLEMENTATION环境变量的值。
    1. echo $RMW_IMPLEMENTATION
    复制代码
  • 可以利用指令诊断和查抄ROS 2环境的状态。如果齐备正常,你会看到 “All checks passed”,以及当前正在利用的中央件实现(如 rmw_fastrtps_cpp)
    1. ros2 doctor
    2. ros2 doctor --report   # 使用选项 --report,来查看更详细的系统状态报告
    复制代码

小结

选择得当的DDS实现取决于你的应用需求、性能要求以及是否须要企业级支持。对于大多数开发者,Fast DDS和Cyclone DDS是符合的选择,而RTI Connext DDS和OpenSplice DDS则实用于工业级或大规模分布式体系。一些其他的内容可以参考ROS 2官方文档。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表