Операционная система робота (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://bat6346glnxa64:40515/. Initializing global node /matlab_global_node_30277 with NodeURI http://bat6346glnxa64:40441/
Использование rosnode
list
видеть все узлы в сети ROS. Обратите внимание на то, что единственный доступный узел является глобальным узлом, созданным rosinit
.
rosnode list
/matlab_global_node_30277
Используйте exampleHelperROSCreateSampleNetwork
заполнить сеть ROS с тремя дополнительными узлами и демонстрационными издателями и подписчиками.
exampleHelperROSCreateSampleNetwork
Используйте rosnode list
снова видеть три новых узла (node_1
, node_2,
и node_3
).
rosnode list
/matlab_global_node_30277 /node_1 /node_2 /node_3
Рисунок показывает текущее состояние сети ROS. Глобальный узел MATLAB отключается, поскольку он в настоящее время не имеет никаких издателей, подписчиков или сервисов.
Используйте rostopic
list
видеть доступные темы в сети ROS. Существует три активных темы: /pose
, /rosout
, и /scan
. Тема логгирования значения по умолчанию, rosout
, всегда присутствует в сети ROS. Другие две темы были созданы как часть демонстрационной сети.
rostopic list
/pose /rosout /scan
Используйте rostopic info
<topicname>
получить определенную информацию об определенной теме. Команда ниже показов, что /node_1
публикует (отправляет сообщения в), /pose
тема и /node_2
подписывается (получает сообщения от) до той темы. Смотрите обмениваются Данными с Издателями ROS и Подписчиками для получения дополнительной информации.
rostopic info /pose
Type: geometry_msgs/Twist Publishers: * /node_1 (http://bat6346glnxa64:37973/) Subscribers: * /node_2 (http://bat6346glnxa64:42621/)
Использование rosnode
info <
nodename>
получить информацию об определенном узле. Команда ниже показов, что node_1
публикует к /pose
и /rosout
темы и подписываются на /scan
тема.
rosnode info /node_1
Node: [/node_1] URI: [http://bat6346glnxa64:37973/] Publications (2 Active Topics): * /pose * /rosout Subscriptions (1 Active Topics): * /scan Services (0 Active):
Сервисы ROS обеспечивают механизм для вызовов процедуры через сеть ROS. Сервисный клиент отправляет сообщение запроса в сервисный сервер, который обрабатывает информацию в запросе и возвращается с сообщением ответа (см. Call and Provide ROS Services).
Использование rosservice
list
видеть все доступные сервисные серверы в сети ROS. Команда ниже показов, что два сервиса (/add
и /reply
) доступны.
rosservice list
/add /reply
Используйте rosservice info
<servicename>
получить информацию об определенном сервисе.
rosservice info /add
Node: /node_3 URI: rosrpc://bat6346glnxa64:44573/ Type: roscpp_tutorials/TwoInts Args: A B
Издатели, подписчики и сервисы используют сообщения ROS, чтобы обмениваться информацией. Каждое сообщение ROS имеет связанный тип сообщения, который задает типы данных и размещение информации в том сообщении (См. работу с Основными сообщениями ROS).
Использование rostopic
type
<topicname>
видеть тип сообщения, используемый темой. Команда ниже показов, что /pose
тема использует сообщения типа geometry_msgs/Twist
.
rostopic type /pose
geometry_msgs/Twist
Использование rosmsg
show
<messagetype>
просмотреть свойства типа сообщения. 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_30277 with NodeURI http://bat6346glnxa64:40441/ Shutting down ROS master on http://bat6346glnxa64:40515/.