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 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
Launching ROS Core...
................................Done in 1.2349 seconds.
Initializing ROS master on http://192.168.0.10:50578.
Initializing global node /matlab_global_node_92041 with NodeURI http://bat1072001glnxa64:40899/

Создайте издателя для '/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_92041 with NodeURI http://bat1072001glnxa64:40899/
Shutting down ROS master on http://192.168.0.10:50578.
..........

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

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

rosinit
Launching ROS Core...
...............................Done in 1.2912 seconds.
Initializing ROS master on http://192.168.0.10:53816.
Initializing global node /matlab_global_node_67828 with NodeURI http://bat1072001glnxa64:41575/

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

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_67828 with NodeURI http://bat1072001glnxa64:41575/
Shutting down ROS master on http://192.168.0.10:53816.
.......

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

rosinit
Launching ROS Core...
.......................Done in 1.4611 seconds.
Initializing ROS master on http://192.168.0.10:59546.
Initializing global node /matlab_global_node_91572 with NodeURI http://bat1072001glnxa64:45201/

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

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

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

rospublisher('/chatter',msg)
ans =

     []

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

rosshutdown
Shutting down global node /matlab_global_node_91572 with NodeURI http://bat1072001glnxa64:45201/
Shutting down ROS master on http://192.168.0.10:59546.
.....

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

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

master = ros.Core;
Launching ROS Core...
................................Done in 1.214 seconds.

Создайте узел 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