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, которые обрабатывают данные. Они обмениваются данными с помощью сообщений.
Издатель отправляет сообщения в конкретный раздел (например, «одометрия»), и подписчики этого раздела получают эти сообщения. С одной темой может быть связано несколько издателей и подписчиков.
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, 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.
Использование exampleHelperROS2ShutDownSampleNetwork
для удаления выборочных узлов, издателей и подписчиков из сети ROS 2. Чтобы удалить собственные узлы, используйте clear
с объектом узла, издателя или подписчика.
exampleHelperROS2ShutDownSampleNetwork