Запуск с ROS

Операционная система робота (ROS) является коммуникационным интерфейсом, который позволяет различным частям системы робота обнаружить, отправить и получить данные. Поддержка MATLAB® ROS является библиотекой функций, которая позволяет вам обмениваться данными с поддерживающими ROS физическими роботами или средствами моделирования робота, такими как Gazebo®.

Этот пример вводит как:

  • Настройте ROS в MATLAB

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

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

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

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

  • Ведущее устройство ROS координирует различные части сети ROS. Это идентифицировано Основным URI (Унифицированный идентификатор ресурса), который задает имя узла или IP-адрес машины, куда ведущее устройство запускается.

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

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

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

Для получения дополнительной информации смотрите Операционную систему робота (ROS) и раздел Concepts по веб-сайту ROS.

Инициализируйте сеть ROS

Используйте rosinit, чтобы инициализировать ROS. По умолчанию rosinit создает ведущее устройство ROS в MATLAB и запускает "глобальный узел", который соединяется с ведущим устройством. "Глобальный узел" автоматически используется другими функциями ROS.

rosinit
Initializing ROS master on http://bat6230glnxa64:40831/.
Initializing global node /matlab_global_node_02289 with NodeURI http://bat6230glnxa64:40037/

Используйте rosnode list, чтобы видеть все узлы в сети ROS. Обратите внимание на то, что единственный доступный узел является глобальным узлом, созданным rosinit.

rosnode list
/matlab_global_node_02289

Используйте exampleHelperROSCreateSampleNetwork, чтобы заполнить сеть ROS с тремя дополнительными узлами и демонстрационными издателями и подписчиками.

exampleHelperROSCreateSampleNetwork

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

rosnode list
/matlab_global_node_02289
/node_1
/node_2
/node_3

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

Глобальный узел MATLAB отключается, поскольку он в настоящее время не имеет никаких издателей, подписчиков или сервисов.

Темы

Используйте rostopic list, чтобы видеть доступные темы в сети ROS. Заметьте, что существует три активных темы: /pose, /rosout, и /scan. rosout является темой журналирования значения по умолчанию, которая всегда присутствует в сети ROS. Другие две темы были созданы как часть демонстрационной сети.

rostopic list
/pose  
/rosout
/scan  

Используйте rostopic info, чтобы получить определенную информацию об определенной теме. Команда ниже показов, которые публикует /node_1 (отправляет сообщения в) /pose тема и /node_2 подписываются (получает сообщения из), что тема (см., обмениваются Данными с Издателями ROS и Подписчиками для получения дополнительной информации).

rostopic info /pose
Type: geometry_msgs/Twist
 
Publishers:
* /node_1 (http://bat6230glnxa64:44505/)
 
Subscribers:
* /node_2 (http://bat6230glnxa64:45657/)

Используйте rosnode info, чтобы получить информацию об определенном узле. Команда ниже показа, который node_1 публикует к /pose и /rosout темам, и подписывает на /scan тему.

rosnode info /node_1
Node: [/node_1]
URI: [http://bat6230glnxa64:44505/]
 
Publications (2 Active Topics): 
 * /pose
 * /rosout
 
Subscriptions (1 Active Topics): 
 * /scan
 
Services (0 Active): 

Сервисы

ROS Services обеспечивает механизм для "вызовов процедуры" через сеть ROS. Сервисный клиент отправляет сообщение запроса в сервисный сервер, который обрабатывает информацию в запросе и возвращается с сообщением ответа (см. Call and Provide ROS Services).

Используйте rosservice list, чтобы видеть все доступные сервисные серверы в сети ROS. Команда ниже показов, что два сервиса (/add и /reply) доступны.

rosservice list
/add
/reply

Используйте rosservice info, чтобы получить информацию об определенном сервисе.

rosservice info /add
Node: /node_3
URI: rosrpc://bat6230glnxa64:44727/
Type: roscpp_tutorials/TwoInts
Args: A B

Сообщения

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

Используйте rostopic type, чтобы видеть тип сообщения, используемый темой. Команда ниже показов, что /pose тема использует сообщения типа geometry_msgs/Twist.

rostopic type /pose
geometry_msgs/Twist

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

rosmsg show geometry_msgs/Twist
% This expresses velocity in free space broken into its Linear and Angular parts.
Vector3  Linear
Vector3  Angular
rosmsg show geometry_msgs/Vector3
% This represents a vector in free space. 

double X
double Y
double Z

Используйте rosmsg list, чтобы видеть полный список типов сообщений, доступных в MATLAB.

Закройте сеть ROS

Используйте exampleHelperROSShutDownSampleNetwork, чтобы удалить демонстрационные узлы, издателей и подписчиков от сети ROS. Эта команда только необходима, если демонстрационная сеть была создана более раннее использование exampleHelperROSStartSampleNetwork.

exampleHelperROSShutDownSampleNetwork

Используйте rosshutdown, чтобы закрыть сеть ROS в MATLAB. Это закрывает ведущее устройство ROS, которое было начато rosinit и удаляет глобальный узел. Рекомендуется использовать rosshutdown, если вы сделаны, работая с сетью ROS.

rosshutdown
Shutting down global node /matlab_global_node_02289 with NodeURI http://bat6230glnxa64:40037/
Shutting down ROS master on http://bat6230glnxa64:40831/.

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