exponenta event banner

rospublisher

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

Описание

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

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

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

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

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

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

Создание

Описание

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 = ros.Publisher(node,topicname) создает издателя для темы с именем, topicname. node robotics.ros.Node указатель на объект, к которому присоединяет этот издатель. Если node задан как [], издатель пытается присоединить к глобальному узлу.

пример

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

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

Свойства

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

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

Это свойство установлено при создании TopicName аргумент. Значение не может быть изменено после создания.

Пример: "/chatter"

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

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

Это свойство установлено при создании MessageType аргумент. Значение не может быть изменено после создания.

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

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

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

Это свойство установлено при создании IsLatching аргумент. Значение не может быть изменено после создания.

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

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

Это свойство установлено при создании NumSubscribers аргумент. Значение не может быть изменено после создания.

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

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

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

Примеры

свернуть все

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

rosinit
Initializing ROS master on http://bat6306glnxa64:39229/.
Initializing global node /matlab_global_node_44050 with NodeURI http://bat6306glnxa64:37213/

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

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

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

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

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

send(chatpub,msg);

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

rosshutdown
Shutting down global node /matlab_global_node_44050 with NodeURI http://bat6306glnxa64:37213/
Shutting down ROS master on http://bat6306glnxa64:39229/.

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

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

rosinit
Initializing ROS master on http://bat6306glnxa64:33759/.
Initializing global node /matlab_global_node_46210 with NodeURI http://bat6306glnxa64:42439/

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

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

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

rosshutdown
Shutting down global node /matlab_global_node_46210 with NodeURI http://bat6306glnxa64:42439/
Shutting down ROS master on http://bat6306glnxa64:33759/.

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

rosinit
Initializing ROS master on http://bat6306glnxa64:41709/.
Initializing global node /matlab_global_node_62600 with NodeURI http://bat6306glnxa64:33449/

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

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

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

rospublisher('/chatter',msg)
ans =

     []

Завершите работу сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_62600 with NodeURI http://bat6306glnxa64:33449/
Shutting down ROS master on http://bat6306glnxa64:41709/.

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

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

master = ros.Core;

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

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

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

pub = 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')

Введенный в R2019b