Операционная система робота (ROS) является коммуникационным интерфейсом, который позволяет различным частям системы робота обнаружить, отправить и получить данные. Поддержка MATLAB® ROS является библиотекой функций, которая позволяет вам обмениваться данными с поддерживающими ROS физическими роботами или средствами моделирования робота, такими как Gazebo®.
Этот пример вводит как:
Настройте ROS в MATLAB
Получите информацию о возможностях в сети ROS
Получите информацию о сообщениях ROS
Сеть ROS включает различные части системы робота (такие как планировщик или интерфейс камеры), которые связываются по ROS. Сеть может быть распределена по нескольким машинам.
Ведущее устройство ROS координирует различные части сети ROS. Это идентифицировано Основным URI (Унифицированный идентификатор ресурса), который задает имя узла или IP-адрес машины, куда ведущее устройство запускается.
Узел ROS является сущностью, которая содержит набор связанных возможностей ROS (таких как издатели, подписчики и сервисы). Сеть ROS может иметь много узлов ROS.
Издатели, подписчики и сервисы являются различными видами сущностей ROS, которые обрабатывают данные. Они обмениваются данными с помощью сообщений.
Издатель отправляет сообщения в определенную тему (такие как "одометрия"), и подписчики на ту тему получают те сообщения. Может быть несколько издателей и подписчиков, сопоставленных с одной темой.
Для получения дополнительной информации смотрите Операционную систему робота (ROS) и раздел Concepts по веб-сайту 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.
Используйте 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/.