ROS2 + DDS:Полевое руководство по взаимодействию
Хотя ROS 2 спроектирован так, чтобы использовать DDS в качестве инфраструктуры подключения (дополнительную информацию см. В моем предыдущем сообщении в блоге - ROS 2 + DDS:When Ecosystems Merge), процесс интеграции имеет несколько особенностей, которые необходимо учитывать, чтобы получить чистую систему DDS. для беспрепятственного взаимодействия с системой ROS 2. Этот блог служит практическим руководством по совместимости и охватывает некоторые из известных проблем, связанных с выпуском ROS 2 «Bouncy Bolson» (июль 2018 г.), и способы их решения.
Обновления с ROS 2
ROS 2 - это развивающийся проект. В будущих выпусках ROS 2 могут быть изменения, которые еще больше повлияют на совместимость. При этом всегда помните, что при использовании rmw_connext_cpp
слой под ROS 2 - это все еще Connext DDS. Мощность и гибкость, присущие библиотекам Connext, по-прежнему доступны с использованием тех же методов, что и в реализации без ROS. Вы контролируете свою систему.
Вот список настроек, которые могут повлиять на совместимость между чистыми системами DDS и ROS 2 (ROS 2 «Bouncy Bolson», если не указано иное):
Имена тем и разделы
ROS 2 идентифицирует пространство имен данных темы, кодируя его в имени или разделе DDS темы. Темы пользовательских данных будут в пространстве имен «rt» (тема ROS), закодированном в DDS как:
Типы данных тем
При использовании уровня Connext RMW в ROS2 вы могли заметить, что все темы ROS2 «rt / *» сообщаются во время обнаружения как имеющие один и тот же тип данных:
Этот тип определения вставляется слоем ROS2 rmw_connext_cpp для представления сериализации данных темы, даже если данные темы не изменились. При попытке установить соединение с темой DDS с использованием исходного типа данных произойдет несоответствие QoS, препятствующее подключению.
Самым простым решением является подавление этого объявления кода типа от участников ROS2. Это можно сделать, добавив файл USER_QOS_PROFILES.xml в каталог, используемый для запуска участников ROS2. Этот файл содержит настройки QoS для подавления совместного использования кода типа и типа объекта, например:
Обратите внимание, что в этом файле также устанавливается надежность «Best Effort» - это только пример отправной точки.
Также обратите внимание, что этот файл QoS влияет только на участников ROS2, которые были запущены для того же каталога, что и файл QoS. При необходимости каждый участник ROS2 может иметь свой собственный файл QoS в отдельном каталоге.
Выбор транспорта
Подключение системы DDS к системе ROS2 может привести к появлению предупреждений о неадресуемых локаторах / транспортных средствах, которые не установлены. Это результат того, что участники имеют разные списки доступных транспортов, например, участник A (udpv4) обнаруживает участника B (udpv4, udpv6); Будет выдано предупреждение о том, что участник A не сможет подключиться с помощью udpv6.
Выбор транспорта с помощью Connext RMW под ROS2 использует те же методы, что и в системе, состоящей только из Connext:
- Установите разрешенные транспорты в файле USER_QOS_PROFILES.xml, добавив в раздел
, например:
UDPV4 | SHMEM
- Установите начальные одноранговые узлы (и включите / отключите многоадресную рассылку), добавив файл «NDDS_DISCOVERY_PEERS» в каталог, используемый для запуска приложения. Текстовый файл должен содержать разделенный запятыми список желаемых одноранговых узлов для обнаружения, например:
localhost, 192.168.1.12, shmem://
(в этом примере отключается многоадресное обнаружение)
Выбор RMW в ROS2
Обязательно установите переменную среды, чтобы выбрать Connext в качестве уровня RMW в ROS2:
RMW_IMPLEMENTATION =rmw_connext_cpp
Это также можно передать в командной строке при запуске приложений ROS2, например:
RMW_IMPLEMENTATION =rmw_connext_cpp ros2 запустить demo_nodes_cpp Talker
Безграничная поддержка
В некоторых темах ROS2 используются неограниченные последовательности и строки. Приложения DDS, которые стремятся к взаимодействию с использованием этих тем, должны будут включить «неограниченную поддержку» в генераторе кода DDS.
Взгляд в будущее с RTI
Следите за новостями в следующей статье из этой серии, которая покрывает важный (хотя и временный) пробел в линейке ROS2:запись и воспроизведение тематических данных.
Если вы готовы начать работу с командой RTI и улучшить свои системы связи, свяжитесь с нами сегодня. Наши специалисты готовы вам помочь.
Интернет вещей
- Руководство по лазерной маркировке
- Open DDS против программного обеспечения RTI DDS
- ROS2 + DDS:сыграйте снова
- Интеграция ROS2 + DDS:при слиянии экосистем | RTI
- Робот ROS
- Руководство по быстрому производству
- В пути с IoT
- Руководство для покупателей промышленных платформ Интернета вещей
- Руководство по элементам жесткости для печатных плат
- Ваше руководство по обслуживанию и ремонту тяжелой техники на месте