在ROS2中设置RTI DDS配置文件

时间:2018-09-03 13:54:17

标签: data-distribution-service ros2 rti-dds

我正在使用xml应用程序创建功能将ROS2与本机RTI DDS接口,即所有QoS设置都在该xml文件中。

现在,对于本机DDS应用程序,我可以设置此.xml文件,但是如何为基于ROS2的函数设置类似类型的配置文件?

1 个答案:

答案 0 :(得分:2)

您是否查看了https://github.com/ros2/ros2/wiki/About-Quality-of-Service-Settings中的资料? ROS2具有用于设置QoS的选项集。

通过在DDS应用程序中设置QoS策略以匹配ROS2中的设置,您可能会获得更大的成功。 (顺便说一句,这是RTI Admin Console使事情变得容易得多的地方;它立即显示参与者之间的QoS不匹配。)

我用来获得DDS / ROS2互操作性的DDS QoS设置包括:

  • 如果使用ROS2“ Ardent”:
    • 使用名为“ rt”的DDS分区(在<publisher_qos>下的QoS文件中设置)
  • 如果使用ROS2“ Bouncy”:
    • 在主题名称前加上“ rt /”
    • 禁止发送typeCode(在<participant_qos><resource_limits>下的QoS文件中,设置type_code和type_object == 0的max_serialized_length)
  • 对于任一发行版:
    • 可能需要包括对无限制的字符串和序列的支持。
    • 可能需要包括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应用程序。