В чем разница между ROS2 и DDS?

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

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

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

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


person Jams.Liu    schedule 05.07.2018    source источник


Ответы (4)


Экосистема

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

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

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

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

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

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

ДДС

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

да, у DDS есть издатель и подписчик. Кроме того, у него есть участник, тема, издатель, подписчик, создатель данных и < em>устройство чтения данных, они называются объектом в общем пространстве данных DDS.

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

  • Участник

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

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

  • Тема

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

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

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

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

  • DataWriter и DataReader

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

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

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

РОС2

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

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

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

ROS2 активно использует пространство имен и косую черту /. Он имеет пространство имен, начинающееся с /. Например, /turtle/cmd_vel, черепаха — это пространство имен, а cmd_vel — это базовое имя.

  • узлы

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

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

Вывод

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

person YuSheng    schedule 17.03.2019

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

ROS — это гораздо больше, чем просто коммуникационный уровень. Он обеспечивает, например

  • множество пакетов для задач, распространенных в робототехнике, от базовых вещей, таких как преобразование точек между различными системами координат, до приложений высокого уровня, таких как создание карты окружающей среды и использование ее для перемещения робота по ней, не сталкиваясь с препятствиями.
  • система сборки (catkin для ROS 1, colcon для ROS 2) для простой сборки этих пакетов и определения зависимостей между ними.
  • система запуска, позволяющая легко запускать сложную систему из нескольких приложений, которые зависят друг от друга, и позволяющая легко изменять параметры.
  • интегрированное физическое моделирование, а также средства визуализации и мониторинга
person luator    schedule 05.07.2018
comment
Спасибо, что добавили больше информации о том, что это не только общение. Это гораздо больше, как вы сказали. Разве для ROS2 система сборки не является colcon (старая система сборки была изменена до выпуска бодрого релиза)? - person Stoogy; 05.07.2018
comment
@Stoogy Вы правы насчет инструмента сборки, я обновил ответ. - person luator; 06.07.2018

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

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

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

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

person Stoogy    schedule 05.07.2018

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

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

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

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

person Gerardo Pardo    schedule 05.07.2018