В чем разница между ROS2 и DDS? - PullRequest
0 голосов
/ 05 июля 2018

ROS2 - это распределенная архитектура, использующая обмен сообщениями издателя / подписчика между узлами.

ROS2 использует другой подход к своему уровню обмена сообщениями и теперь использует отраслевой стандарт, называемый Data Distributed Services (DDS).

Но DDS - это промежуточное ПО для связи, также поддерживающее издателя / подписчика.

Итак, мы можем использовать DDS напрямую, зачем использовать ROS2?

Ответы [ 4 ]

0 голосов
/ 17 марта 2019

Экосистема

DDS - это стандарт связи, предложенный OMG. Его целевой рынок носит более общий характер, например, вооруженные силы, управление воздушным движением, автономные транспортные средства, медицинские приборы. Мало кто из поставщиков предоставляет корпоративную версию и версию с открытым исходным кодом, но лишь немногие люди или рынок могут принять решение о своих будущих работах или дизайне.

Любой, кто хочет внедрить DDS в свой продукт, должен начать с нуля.

ROS2 больше похож на экосистему. Лидер ROS2 - OSRF предоставляет экосистему, документы и дружественные рамки для тех, кто хочет создать свое роботизированное приложение.

Каждый может представить свои мысли по основному дизайну или внести свой вклад в сообщество.

Более технический

Разница между Pub и Sub моделью между ROS и DDS

ДДС

Участник, тема, издатель, подписчик, читатель и владелец данных

да, у DDS есть издатель и подписчик. Более того, у него есть участник , тема , издатель , подписчик , datawriter и datareader они называются сущностью в общем пространстве данных DDS.

Каждый объект обладает различными атрибутами QoS и влияет на то, как объект управляет доставкой данных или жизненным циклом данных.

  • Участник

Участник контролирует создание, удаление, группировку объектов. У этого есть способность знать, что новое юридическое лицо присоединяется или уходит.

Другой участник идентифицируется по идентификатору домена (целое число).

  • Тема

Тема похожа на цель, владеющую информацией о QoS, которую писатель данных и устройство чтения данных могут связывать друг с другом.

  • Издатель и подписчик

Издатель и подписчик контролируют доставку данных и доступность данных на свои собственные DataReader и datawriter .

Только издатель может иметь несколько устройств записи данных, а подписчик может иметь только несколько устройств чтения данных.

  • DataWriter и DataReader

DataWriter - поставщик данных, а DataReader - потребитель данных. Они должны иметь одинаковое QoS для своей целевой темы.

DDS Название темы:

Отсоедините другие модели pub / sub, они не используют slash /, вместо этого они являются объектно-ориентированными.

ROS2

пространство имен и узлов.

  • пространство имен

Это похоже на тему, но имеет пространство имен.

ROS2 активно использует пространство имен и косая черта /. Начальное пространство имен начинается с /. Например, /turtle/cmd_vel, turtle - это пространство имен, а cmd_vel - его базовое имя.

  • узлы

Просто базовый элемент, который предоставляет или потребляет данные.

Вы можете проверить тему ros2 и имена служб для дизайна именования пабов / подчиненных ROS2.

Заключение

ROS2 больше фокусируется на разработке роботизированных приложений, что устраняет трудности при составлении сложных приложений Pub / Sub.

0 голосов
/ 05 июля 2018

Чтобы добавить немного о том, что Stoogy уже написал :

ROS - это гораздо больше, чем просто уровень связи. Это обеспечивает, например

  • множество пакетов для задач, общих для робототехники, от базовых вещей, таких как преобразование точек между различными координатными кадрами до приложений высокого уровня, таких как создание карты окружающей среды и использование ее для навигации по роботу без столкновения с препятствиями.
  • система сборки (catkin для ROS 1, colcon для ROS 2) для простой сборки этих пакетов и определения зависимостей между ними.
  • система запуска, позволяющая легко запускать сложную систему из нескольких приложений, зависящих друг от друга, и позволяющую легко изменять параметры.
  • интегрированное физическое моделирование, а также инструменты визуализации и мониторинга
0 голосов
/ 05 июля 2018

Я согласен, что ROS2 обеспечивает более высокий уровень абстракции, чем DDS, особенно для определенных типов роботизированных приложений. Кроме того, ROS2 предоставляет готовые типы данных и компоненты, предназначенные для робототехники. Таким образом, вы получаете много строительных блоков. Это определенно облегчает создание систем в этом домене.

Это говорит о том, что вам нужно знать, что использование ROS2 также требует затрат, а не собственных DDS. Один из способов, с помощью которого ROS2 упрощает задачу, заключается в предварительном выборе подмножества Qos и шаблона обмена информацией, поддерживаемого DDS. Таким образом, используя ROS2, невозможно получить доступ к определенным функциям DDS и Qos. Существует много вещей, связанных с публикацией и подпиской, которые вы можете делать с DDS, но не использовать ROS2 API поверх DDS. Существует также много типов данных, которые могут быть определены с использованием IDL DDS, которые не могут быть описаны с помощью IDL ROS2. Таким образом, вы также ограничиваете типы данных, которые можно отправлять и получать, правила эволюции типов и совместимости и т. Д. Для некоторых систем эти ограничения могут быть значительными. Функции были добавлены в DDS по причине ...

На производительность также негативно влияют добавленные слои и тот факт, что некоторые API-интерфейсы DDS не используются.

По сути, спектр приложений, на которые ориентирован DDS, гораздо шире, поэтому API, Qos, типы и т. Д. Должны быть более универсальными и гибкими.

0 голосов
/ 05 июля 2018

Действительно, ROS2 основан на DDS для связи. (https://github.com/ros2/ros2/wiki/DDS-and-ROS-middleware-implementations)

ROS2 используется, потому что он добавляет абстракцию, облегчающую использование DDS. DDS нуждается в большом количестве настроек и настроек (разделы, названия тем, режим обнаружения, создание сообщений и т. Д.), Которые выполняются в пакете RMW ROS2. Этот пакет также отвечает за обработку ошибок при публикации / получении (получении) сообщения.

Вы можете использовать DDS напрямую (если вы правильно настроите своего издателя и подписчика, вы также можете общаться с издателем и подписчиком ROS2), однако вам придется создать сообщение (.idl), вызвать генератор, чтобы получить соответствующую структуру и источники файлы, создать домен, назначить тему, настроить datawriters / datareader, .. (взгляните на некоторые примеры https://github.com/rticommunity/rticonnextdds-examples/tree/master/examples/listeners/c)

Итак, ROS2 делает вашу жизнь проще. Кроме того, над сообщениями можно использовать множество пакетов.

...