在 ROS2 中设置 RTI DDS 配置文件
Setting up the RTI DDS configuration file in ROS2
我正在使用 xml 应用程序创建将 ROS2 与本机 RTI DDS 连接,即意味着所有 QoS 设置都在此 xml 文件中。
现在,对于本机 DDS 应用程序,我可以设置此 .xml 文件,但我如何为基于 ROS2 的功能设置类似类型的配置文件?
您是否查看了 material 中的内容:https://github.com/ros2/ros2/wiki/About-Quality-of-Service-Settings? ROS2 具有一组有限的用于设置 QoS 的选项。
通过在 DDS 应用程序中设置 QoS 策略以匹配 ROS2 中的设置,您可能会取得更大的成功。 (顺便说一句,这是一个 RTI 管理控制台让事情变得更容易的地方;它会立即显示参与者之间的任何 QoS 不匹配)。
我用来获得 DDS/ROS2 互操作性的 DDS QoS 设置包括:
- 如果使用 ROS2 'Ardent':
- 使用名为 "rt" 的 DDS 分区(在
<publisher_qos>
下的 QoS 文件中设置)
- 如果使用 ROS2 'Bouncy':
- 在主题名称前加上 "rt/"
- 抑制 typeCode 发送(在
<participant_qos><resource_limits>
下的 QoS 文件中设置 max_serialized_length for type_code and type_object == 0)
- 对于任一版本:
- 可能需要包括对无限字符串和序列的支持。
- 可能需要包含 UDPv6 并禁用 SHMEM 传输
ROS2 RMW代码中QoS设置不多; Connext 库将使用正常搜索顺序 (detailed here) 查找用户 QoS 设置的来源——这意味着您可以使用多种方法向 ROS2 下的 Connext 库提供您自己的 QoS 设置。这是我所做的:
- 要在 ROS2 中禁用多播,请在将启动 ROS2 应用程序的目录(输入 ros2 命令的目录和 运行)中创建一个名为 "NDDS_DISCOVERY_PEERS" 的文件。在此文件中放置一个用于发现的初始对等点列表(确保排除多播和 shmem)格式,详见 here。
- 我的文件有:localhost,192.168.1.44
- 对于其他 QoS 设置,将包含您要在 ROS2 中使用的 QoS 设置的 "USER_QOS_PROFILES.xml" 文件放在与上述相同的目录中。这些设置将影响从该目录启动的 ROS2 应用程序。
我正在使用 xml 应用程序创建将 ROS2 与本机 RTI DDS 连接,即意味着所有 QoS 设置都在此 xml 文件中。
现在,对于本机 DDS 应用程序,我可以设置此 .xml 文件,但我如何为基于 ROS2 的功能设置类似类型的配置文件?
您是否查看了 material 中的内容:https://github.com/ros2/ros2/wiki/About-Quality-of-Service-Settings? ROS2 具有一组有限的用于设置 QoS 的选项。
通过在 DDS 应用程序中设置 QoS 策略以匹配 ROS2 中的设置,您可能会取得更大的成功。 (顺便说一句,这是一个 RTI 管理控制台让事情变得更容易的地方;它会立即显示参与者之间的任何 QoS 不匹配)。
我用来获得 DDS/ROS2 互操作性的 DDS QoS 设置包括:
- 如果使用 ROS2 'Ardent':
- 使用名为 "rt" 的 DDS 分区(在
<publisher_qos>
下的 QoS 文件中设置)
- 使用名为 "rt" 的 DDS 分区(在
- 如果使用 ROS2 'Bouncy':
- 在主题名称前加上 "rt/"
- 抑制 typeCode 发送(在
<participant_qos><resource_limits>
下的 QoS 文件中设置 max_serialized_length for type_code and type_object == 0)
- 对于任一版本:
- 可能需要包括对无限字符串和序列的支持。
- 可能需要包含 UDPv6 并禁用 SHMEM 传输
ROS2 RMW代码中QoS设置不多; Connext 库将使用正常搜索顺序 (detailed here) 查找用户 QoS 设置的来源——这意味着您可以使用多种方法向 ROS2 下的 Connext 库提供您自己的 QoS 设置。这是我所做的:
- 要在 ROS2 中禁用多播,请在将启动 ROS2 应用程序的目录(输入 ros2 命令的目录和 运行)中创建一个名为 "NDDS_DISCOVERY_PEERS" 的文件。在此文件中放置一个用于发现的初始对等点列表(确保排除多播和 shmem)格式,详见 here。
- 我的文件有:localhost,192.168.1.44
- 对于其他 QoS 设置,将包含您要在 ROS2 中使用的 QoS 设置的 "USER_QOS_PROFILES.xml" 文件放在与上述相同的目录中。这些设置将影响从该目录启动的 ROS2 应用程序。