Вы просматривали материал в: https://github.com/ros2/ros2/wiki/About-Quality-of-Service-Settings? ROS2 имеет ограниченный набор параметров для настройки QoS.
Возможно, вы добьетесь большего успеха, настроив политики QoS в приложении DDS в соответствии с настройками в ROS2. (Кстати, это место, где RTI Admin Console значительно упрощает работу; оно сразу выявляет любые несоответствия QoS между участниками).
Настройки DDS QoS, которые я использовал для обеспечения взаимодействия DDS / ROS2, включают:
- При использовании ROS2 'Ardent':
- использовать раздел DDS с именем "rt" (установлен в файле QoS в
<publisher_qos>
)
- При использовании ROS2 'Bouncy':
- Префикс названия темы с "rt /"
- Подавить отправку typeCode (задается в файле QoS в
<participant_qos><resource_limits>
max_serialized_length для type_code и type_object == 0)
- Для любого выпуска:
- Может потребоваться включить поддержку неограниченных строк и последовательностей.
- Может потребоваться включить UDPv6 и отключить транспорты SHMEM
В коде ROS2 RMW не так много настроек QoS; библиотеки Connext будут искать источник пользовательских настроек QoS, используя обычный порядок поиска ( подробно здесь ) - это означает, что вы можете предоставить свои собственные настройки QoS для библиотек Connext в ROS2, используя различные методы. Вот что я сделал:
- Чтобы отключить многоадресную рассылку в ROS2, создайте файл с именем «NDDS_DISCOVERY_PEERS» в каталоге, из которого будут запускаться ваши приложения ROS2 (каталог, в который вводится и запускается команда ros2). Поместите в этот файл список начальных одноранговых узлов для обнаружения (убедитесь, что исключаете многоадресную передачу и shmem) в формате, детализированном здесь .
- Мой файл имел: localhost, 192.168.1.44
- Для других настроек QoS поместите в тот же каталог, что и выше, файл «USER_QOS_PROFILES.xml», содержащий настройки QoS, которые вы хотели бы использовать в ROS2. Эти настройки влияют на приложения ROS2, запускаемые из этого каталога.