16. ROS 2 using Fast DDS middleware
Fast DDS 是开源机器人基金会 (OSRF) 的机器人操作系统 ROS 2 中默认的中间件实现,适用于所有长期支持 (LTS) 版本以及大多数非 LTS 版本。
ROS 2 是一款先进的机器人工程软件,由一系列免费的软件库和工具构成,用于构建机器人应用。本节介绍了一些用例,并展示了如何在 ROS 2 项目中充分利用 Fast DDS 的广泛功能。
ROS 2 栈与 Fast DDS 之间的接口由一个名为 rmw_fastrtps
的 ROS 2 包提供。该包在所有 ROS 2 分发版中均可用,无论是通过二进制方式还是源代码方式。rmw_fastrtps
实际上提供了两个不同的 ROS 2 中间件实现,均使用 Fast DDS 作为中间件层:rmw_fastrtps_cpp
和 rmw_fastrtps_dynamic_cpp
。两者之间的主要区别在于,rmw_fastrtps_dynamic_cpp
在运行时使用反射类型支持来决定序列化/反序列化机制,而 rmw_fastrtps_cpp
则使用自己的类型支持,在构建时生成每种消息类型的映射。在除已结束生命周期(EOL)的 Galactic 外的所有分发版中,默认的 ROS 2 RMW 实现是 rmw_fastrtps_cpp
。对于 EOL Galactic,需要设置环境变量 RMW_IMPLEMENTATION
来选择 rmw_fastrtps_cpp
,以便将 Fast DDS 用作中间件层。此环境变量也可以用于选择 rmw_fastrtps_dynamic_cpp
实现:
导出 RMW_IMPLEMENTATION 环境变量:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
或
export RMW_IMPLEMENTATION=rmw_fastrtps_dynamic_cpp
启动您的 ROS 2 应用程序:
RMW_IMPLEMENTATION=rmw_fastrtps_cpp ros2 run <package> <application>
或
RMW_IMPLEMENTATION=rmw_fastrtps_dynamic_cpp ros2 run <package> <application>
注意
在 EOL Galactic 上,您可能需要安装
rmw_fastrtps_cpp
包:
sudo apt install ros-galactic-rmw-fastrtps-cpp
以上内容概述了如何在 ROS 2 中使用 Fast DDS 中间件,包括相关包的信息及其环境配置方法。
内容由零声教学AI助手提供,问题来源于学员提问