Запуск с 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://bat6306glnxa64:43411/.
Initializing global node /matlab_global_node_16418 with NodeURI http://bat6306glnxa64:39703/

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

rosnode list
/matlab_global_node_16418

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

exampleHelperROSCreateSampleNetwork

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

rosnode list
/matlab_global_node_16418
/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://bat6306glnxa64:44521/)
 
Subscribers:
* /node_2 (http://bat6306glnxa64:46393/)

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

rosnode info /node_1
Node: [/node_1]
URI: [http://bat6306glnxa64:44521/]
 
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://bat6306glnxa64:40001/
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.

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

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

exampleHelperROSShutDownSampleNetwork

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

rosshutdown
Shutting down global node /matlab_global_node_16418 with NodeURI http://bat6306glnxa64:39703/
Shutting down ROS master on http://bat6306glnxa64:43411/.

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