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, обрабатывающих данные. Они обмениваются данными с помощью сообщений.
Издатель отправляет сообщения в определенный раздел (например, «одометрия»), и подписчики на этот раздел получают эти сообщения. С одной темой может быть связано несколько издателей и подписчиков.
Домен - это физическая сегментация сети. Он идентифицируется уникальным целым значением, известным как идентификатор домена. По умолчанию идентификатор домена - 0.
Каждый узел в сети ROS 2 при создании объявляет о своем присутствии только другим узлам в том же идентификаторе домена.
Сеть ROS 2 построена на стандарте распределения данных (DDS), который позволяет подключать несколько узлов по распределенной сети.
Протокол RTPS (Real Time publisher-subscriber) предоставляет сети ROS 2 возможность отправлять сообщения в ненадежных сетевых условиях.
ROS 2 предлагает различные политики качества обслуживания (QoS), которые позволяют настраивать обмен данными между узлами. Дополнительные сведения см. в разделе Управление политиками качества обслуживания в ROS 2.
Дополнительные сведения см. в разделе Операционная System2 робота (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.
Использовать exampleHelperROS2ShutDownSampleNetwork для удаления образцов узлов, издателей и подписчиков из сети ROS 2. Для удаления собственных узлов используйте clear с узлом, издателем или объектом подписчика.
exampleHelperROS2ShutDownSampleNetwork