Запуск с ROS 2

Robot Operating System 2 (ROS 2) является второй версией ROS, которая представляет собой коммуникационный интерфейс, позволяющий различным частям системы роботов обнаруживать, отправлять и получать данные. Поддержка MATLAB ® для ROS 2 - это библиотека функций, которая позволяет обмениваться данными с физическими роботами с поддержкой ROS 2 или роботами-симуляторами, такими как Gazebo ®. ROS 2 построена на стандарте распределения данных (DDS), который представляет собой сквозное промежуточное программное обеспечение, обеспечивающее такие функции, как обнаружение, сериализация и транспортировка. Эти функции соответствуют проекту принципам ROS 2, таким как распределенное обнаружение и контроль за различными опциями «Качество обслуживания» для транспортировки. DDS использует Реальное время протокол Publish-Subscribe (RTPS), который обеспечивает связь по ненадежным сетевым протоколам, таким как UDP. Для получения дополнительной информации см. RTPS.

В этом примере показано, как:

  • Настройка ROS 2 в MATLAB

  • Получите информацию о возможностях в сети ROS 2

  • Получите информацию о сообщениях ROS 2

Чтобы узнать о ROS, смотрите Запуск с ROS.

Терминология ROS 2

  • Сеть ROS 2 содержит различные части робота системы (такой как планировщик или интерфейс камеры), которые взаимодействуют по сети ROS 2. Сеть может быть распределена по нескольким машинам.

  • Узел ROS 2 является сущностью, который содержит набор связанных возможностей ROS 2 (таких как издатели и подписчики). Сеть ROS 2 может иметь много узлов ROS 2.

  • Издатели и подписчики являются различными видами сущностей ROS 2, которые обрабатывают данные. Они обмениваются данными с помощью сообщений.

  • Издатель отправляет сообщения в конкретный раздел (например, «одометрия»), и подписчики этого раздела получают эти сообщения. С одной темой может быть связано несколько издателей и подписчиков.

  • A Области является физической сегментацией сети. Он идентифицируется уникальным целым значением, известным как Domain ID. По умолчанию идентификатор области 0.

  • Каждый узел в сети ROS 2 при создании рекламирует свое присутствие только для других узлов в том же идентификаторе области.

  • Сеть ROS 2 построена на стандарте распределения данных (DDS), который позволяет соединять несколько узлов через распределенную сеть.

  • Протокол RTPS (Реальное время publisher-subscriber) предоставляет сети ROS 2 возможности отправки сообщений в ненадежных сетевых условиях.

  • ROS 2 предлагает различные политики качества обслуживания (QoS), которые позволяют настраивать коммуникацию между узлами. Для получения дополнительной информации смотрите Управление политиками качества обслуживания в ROS 2.

Для получения дополнительной информации смотрите Robot Operating System2 (ROS 2) и раздел « Концепции» на веб-сайте ROS 2.

Инициализация сети ROS 2

В отличие от ROS, ROS 2 не требует инициализации в MATLAB. Сеть ROS 2 автоматически начинается с создания узлов.

Использование ros2node для создания узла.

test1 = ros2node("/test1")
test1 = 
  ros2node with properties:

    Name: '/test1'
      ID: 0

Использование ros2 node list для просмотра всех узлов в сети ROS 2.

ros2 node list
/test1

Использование clear для завершения работы узла в сети ROS 2.

clear test1

Использование exampleHelperROS2CreateSampleNetwork для заполнения сети ROS тремя дополнительными узлами с выборочными издателями и подписчиками.

exampleHelperROS2CreateSampleNetwork

Использование ros2 node list снова и заметьте, что существует три новых узла, node_1, node_2, и node_3).

ros2 node list
/node_1
/node_2
/node_3

Визуальное представление текущего состояния сети ROS 2 показано ниже. Используйте его как ссылку, когда вы исследуете эту выборку сети в оставшейся части примера.

Темы

Использование ros2 topic list для просмотра доступных тем в сети ROS 2. Заметьте, что есть три активные темы: /pose, /parameter_events и /scan. Тема /parameter_events является глобальной темой, которая всегда присутствует в сети ROS 2. Он используется узлами для мониторинга или изменения параметров в сети. Две другие темы/ scan и/ pose были созданы как часть выборки сети.

ros2 topic list
/parameter_events
/pose
/scan

Каждая тема связана с типом сообщения. Использование ros2 topic list -t для просмотра типа сообщений в разделах.

ros2 topic list -t
            Topic                       MessageType           
    _____________________    _________________________________

    {'/parameter_events'}    {'rcl_interfaces/ParameterEvent'}
    {'/pose'            }    {'geometry_msgs/Twist'          }
    {'/scan'            }    {'sensor_msgs/LaserScan'        }

Сообщения

Издатели и подписчики используют сообщения ROS 2 для обмена информацией. Каждое сообщение ROS 2 имеет связанный тип сообщения, который определяет типы данных и размещение информации в этом сообщении. Для получения дополнительной информации смотрите Работа с базовыми сообщениями ROS 2.

Использование ros2 msg show для просмотра свойств типа сообщения. The geometry_msgs/Twist тип сообщения имеет два свойства, Linear и Angular. Каждое свойство является сообщением типа geometry_msgs/Vector3, который в свою очередь обладает тремя свойствами типа double.

ros2 msg show geometry_msgs/Twist
# This expresses velocity in free space broken into its linear and angular parts.

Vector3  linear
Vector3  angular
ros2 msg show geometry_msgs/Vector3
# This represents a vector in free space.

float64 x
float64 y
float64 z

Использование ros2 msg list для просмотра полного списка типов сообщений, доступных в MATLAB.

Отсоединение от сети ROS 2

Использование exampleHelperROS2ShutDownSampleNetwork для удаления выборочных узлов, издателей и подписчиков из сети ROS 2. Чтобы удалить собственные узлы, используйте clear с объектом узла, издателя или подписчика.

exampleHelperROS2ShutDownSampleNetwork

Следующие шаги