rospublisher

Опубликуйте сообщение по теме

Описание

Используйте rospublisher, чтобы создать издателя ROS для отправки сообщений через сеть ROS. Чтобы создать сообщения ROS, используйте rosmessage. Отправьте эти сообщения через издателя ROS с функцией send.

Объект Publisher, созданный функцией, представляет издателя в сети ROS. Объект публикует определенный тип сообщения по данной теме. Когда объект Publisher публикует сообщение к теме, все подписчики на тему получают это сообщение. Та же тема может иметь несколько издателей и подписчиков.

Издатель получает тип сообщения темы из списка тем на ведущем устройстве ROS. Когда глобальный узел MATLAB® публикует сообщения по той теме, узлы ROS, которые подписываются на ту тему, получают те сообщения. Если тема не находится в ведущем списке тем ROS, эта функция отображает сообщение об ошибке. Если ведущий список тем ROS уже содержит соответствующую тему, ведущее устройство ROS добавляет глобальный узел MATLAB в список издателей для той темы. Видеть список доступных названий темы, в подсказке команды MATLAB, rostopic list типа.

Можно создать объект Publisher с помощью функции rospublisher, или путем вызова robotics.ros.Publisher:

  • rospublisher только работает с глобальным узлом с помощью rosinit. Это не требует указателя объекта узла в качестве аргумента.

  • robotics.ros.Publisher работает с дополнительными узлами, которые создаются с помощью robotics.ros.Node. Это требует указателя объекта узла в качестве первого аргумента.

Создание

Синтаксис

pub = rospublisher(topicname)
pub = rospublisher(topicname,msgtype)
pub = rospublisher(___,Name,Value)
[pub,msg] = rospublisher(___)
pub = robotics.ros.Publisher(node,topicname)
pub = robotics.ros.Publisher(node,topicname,type)
pub = robotics.ros.Publisher(___, "IsLatching",value)

Описание

pub = rospublisher(topicname) создает издателя для определенного названия темы и устанавливает свойство TopicName. Тема должна уже существовать в ведущем списке тем ROS с установленным MessageType.

пример

pub = rospublisher(topicname,msgtype) создает издателя для темы и добавляет, что тема к ведущей теме ROS перечисляет. Входные параметры установлены в свойства TopicName и MessageType издателя. Если тема уже существует, и msgtype отличается от типа темы в ведущем списке тем ROS, функция отображает сообщение об ошибке.

pub = rospublisher(___,Name,Value) предоставляет дополнительные возможности, заданные одним или несколькими аргументами пары Name,Value с помощью любого из аргументов от предыдущих синтаксисов. Name является именем свойства, и Value является соответствующим значением.

[pub,msg] = rospublisher(___) возвращает сообщение, msg, который можно отправить с издателем, pub. Сообщение инициализируется со значениями по умолчанию. Можно также получить сообщение ROS с помощью функции rosmessage.

pub = robotics.ros.Publisher(node,topicname) создает издателя для темы с именем, topicname. node является указателем на объект robotics.ros.Node, к которому присоединяет этот издатель. Если node задан как [], издатель пытается присоединить к глобальному узлу.

пример

pub = robotics.ros.Publisher(node,topicname,type) создает издателя с заданным типом сообщения, type. Если тема уже существует, MATLAB проверяет тип сообщения и отображает ошибку, если входной тип отличается. Если ведущий список тем ROS уже содержит соответствующую тему, ведущее устройство ROS добавляет глобальный узел MATLAB в список издателей для той темы.

pub = robotics.ros.Publisher(___, "IsLatching",value) задает, фиксируется ли издатель с булевской переменной, value. Если издатель фиксируется, это сохраняет последнее отправленное сообщение и отправляет его любым новым подписчикам. По умолчанию IsLatching включен.

Свойства

развернуть все

Это свойство доступно только для чтения.

Имя опубликованной темы, заданной как скаляр строки или вектор символов. Если тема не существует, объект создает тему с помощью своего связанного типа сообщения.

Пример: "/chatter"

Типы данных: char

Это свойство доступно только для чтения.

Тип сообщения опубликованных сообщений, заданных как скаляр строки или вектор символов. Этот тип сообщения остается связанным с темой и должен использоваться для новых опубликованных сообщений.

Пример: "std_msgs/String"

Типы данных: char

Это свойство доступно только для чтения.

Индикатор того, фиксируется ли издатель, заданный как true или false. Издатель, который фиксируется, сохраняет последнее отправленное сообщение и снова посылает его любым новым подписчикам.

Типы данных: логический

Это свойство доступно только для чтения.

Количество подписчиков на опубликованную тему, заданную как целое число.

Типы данных: double

Функции объекта

sendОпубликуйте сообщение ROS к теме
rosmessageСоздайте сообщения ROS

Примеры

свернуть все

Соединитесь с сетью ROS.

rosinit
Initializing ROS master on http://bat6230glnxa64:37057/.
Initializing global node /matlab_global_node_44579 with NodeURI http://bat6230glnxa64:41089/

Создайте издателя для темы '/chatter' с типом сообщения 'std_msgs/String'.

chatpub = rospublisher('/chatter','std_msgs/String');

Создайте сообщение, чтобы отправить. Задайте свойство Data.

msg = rosmessage(chatpub);
msg.Data = 'test phrase';

Отправьте сообщение через издателя.

send(chatpub,msg);

Сеть Shutdown ROS.

rosshutdown
Shutting down global node /matlab_global_node_44579 with NodeURI http://bat6230glnxa64:41089/
Shutting down ROS master on http://bat6230glnxa64:37057/.

Создайте издателя ROS и просмотрите связанные свойства для объекта robotics.ros.Publisher. Добавьте подписчика, чтобы просмотреть обновленные свойства.

Запустите ведущее устройство ROS.

rosinit
Initializing ROS master on http://bat6230glnxa64:43243/.
Initializing global node /matlab_global_node_73071 with NodeURI http://bat6230glnxa64:37683/

Создайте издателя и просмотрите его свойства.

pub = rospublisher('/chatter','std_msgs/String');

topic = pub.TopicName
topic = 
'/chatter'
subCount = pub.NumSubscribers
subCount = 0

Подпишитесь на тему издателя и просмотрите изменения в свойстве NumSubscribers.

sub = rossubscriber('/chatter');
pause(1)

subCount = pub.NumSubscribers
subCount = 1
rosshutdown
Shutting down global node /matlab_global_node_73071 with NodeURI http://bat6230glnxa64:37683/
Shutting down ROS master on http://bat6230glnxa64:43243/.

Соединитесь с сетью ROS.

rosinit
Initializing ROS master on http://bat6230glnxa64:43373/.
Initializing global node /matlab_global_node_93805 with NodeURI http://bat6230glnxa64:38685/

Создайте сообщение, чтобы отправить. Задайте свойство Data.

msg = rosmessage('std_msgs/String');
msg.Data = 'test phrase';

Отправьте сообщение через тему '/chatter'.

rospublisher('/chatter',msg)
ans =

     []

Сеть Shutdown ROS.

rosshutdown
Shutting down global node /matlab_global_node_93805 with NodeURI http://bat6230glnxa64:38685/
Shutting down ROS master on http://bat6230glnxa64:43373/.

Создайте объект Publisher с помощью конструктора класса.

Запустите ведущее устройство ROS.

master = robotics.ros.Core;

Создайте узел ROS, который соединяется с ведущим устройством.

node = robotics.ros.Node('/test1');

Создайте издателя и отправьте данные о строке. Издатель присоединяет к объекту узла в первом аргументе.

pub = robotics.ros.Publisher(node, '/robotname', 'std_msgs/String');
msg = rosmessage('std_msgs/String');
msg.Data = 'robot1';
send(pub,msg);

Очистите узел ROS и издатель. Закройте ведущее устройство ROS.

clear('pub','node')
clear('master')

Представленный в R2015a