Начало работы с 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
Launching ROS Core...
Done in 0.72162 seconds.
Initializing ROS master on http://192.168.0.10:49493.
Initializing global node /matlab_global_node_94272 with NodeURI http://bat6312glnxa64:43893/

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

rosnode list
/matlab_global_node_94272

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

exampleHelperROSCreateSampleNetwork

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

rosnode list
/matlab_global_node_94272
/node_1
/node_2
/node_3

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

Темы

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

rostopic list
/pose  
/rosout
/scan  
/tf    

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

rostopic info /pose
Type: geometry_msgs/Twist
 
Publishers:
* /node_1 (http://bat6312glnxa64:45373/)
 
Subscribers:
* /node_2 (http://bat6312glnxa64:44653/)

Использование rosnode info <nodename> получить информацию об определенном узле. Команда ниже показов, что node_1 публикует к /pose, /rosout и /tf темы, подписывается на /scan тема и предоставляет услуги:/node_1/get_loggers и/node_1/set_logger_level. Услуги по логгированию значения по умолчанию: get_loggers и set_logger_level обеспечиваются всеми узлами, созданными в сети ROS.

rosnode info /node_1
Node: [/node_1]
URI: [http://bat6312glnxa64:45373/]
 
Publications (3 Active Topics): 
 * /pose
 * /rosout
 * /tf
 
Subscriptions (1 Active Topics): 
 * /scan
 
Services (2 Active): 
 * /node_1/get_loggers
 * /node_1/set_logger_level

Сервисы

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

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

rosservice list
/add
/matlab_global_node_94272/get_loggers
/matlab_global_node_94272/set_logger_level
/node_1/get_loggers
/node_1/set_logger_level
/node_2/get_loggers
/node_2/set_logger_level
/node_3/get_loggers
/node_3/set_logger_level
/reply

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

rosservice info /add
Node: /node_3
URI: rosrpc://bat6312glnxa64:53827
Type: roscpp_tutorials/TwoInts
Args: MessageType 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. 
% It is only meant to represent a direction. Therefore, it does not
% make sense to apply a translation to it (e.g., when applying a 
% generic rigid transformation to a Vector3, tf2 will only apply the
% rotation). If you want your data to be translatable too, use the
% geometry_msgs/Point message instead.

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_94272 with NodeURI http://bat6312glnxa64:43893/
Shutting down ROS master on http://192.168.0.10:49493.

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