exponenta event banner

Начало работы с ROS 2

Robot Operating System 2 (ROS 2) - вторая версия ROS, представляющая собой коммуникационный интерфейс, позволяющий различным частям роботизированной системы обнаруживать, отправлять и получать данные. MATLAB ® support for ROS 2 - это библиотека функций, позволяющая обмениваться данными с физическими роботами или роботами-симуляторами с поддержкой ROS 2, такими как Gazebo ®. ROS 2 построена на основе стандарта распределения данных (DDS), который является сквозным промежуточным программным обеспечением, обеспечивающим такие функции, как обнаружение, сериализация и транспортировка. Эти функции соответствуют принципам проектирования АФК 2, таким как распределенное обнаружение и управление различными вариантами «качества обслуживания» при транспортировке. DDS использует протокол Real Time 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, обрабатывающих данные. Они обмениваются данными с помощью сообщений.

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

  • Домен - это физическая сегментация сети. Он идентифицируется уникальным целым значением, известным как идентификатор домена. По умолчанию идентификатор домена - 0.

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

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

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

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

Дополнительные сведения см. в разделе Операционная System2 робота (ROS 2) и разделе Концепции на веб-сайте ROS 2.

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

В отличие от ROS, ROS 2 не требует инициализации в MATLAB. Сеть АФК 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

Ниже показано визуальное представление текущего состояния сети АФК 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 для просмотра свойств типа сообщения. 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

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