rosmessage

Создайте сообщения ROS

Описание

пример

msg = rosmessage(messagetype) создает пустой объект сообщения ROS с типом сообщения. messagetype строковый скаляр является чувствительным к регистру, и никакие частичные соответствия не позволены. Это должно совпадать с сообщением в списке, данном путем вызова rosmsg("list").

пример

msg = rosmessage(pub) создает пустое сообщение, определенное темой, опубликованной pub.

msg = rosmessage(sub) создает пустое сообщение, определенное подписанной темой sub.

msg = rosmessage(client) создает пустое сообщение, определенное сервисом, сопоставленным с client.

msg = rosmessage(server) создает пустое сообщение, определенное сервисным типом server.

Примеры

свернуть все

strMsg = rosmessage('std_msgs/String')
strMsg = 
  ROS String message with properties:

    MessageType: 'std_msgs/String'
           Data: ''

  Use showdetails to show the contents of the message

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

rosinit
Initializing ROS master on http://bat6346glnxa64:36387/.
Initializing global node /matlab_global_node_57884 with NodeURI http://bat6346glnxa64:37495/

Создайте издателя для '/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_57884 with NodeURI http://bat6346glnxa64:37495/
Shutting down ROS master on http://bat6346glnxa64:36387/.

Можно создать объектный массив, чтобы хранить несколько сообщений. Массив является индексируемым, похожим на любой другой массив. Можно изменить свойства каждого объекта или доступа определенные свойства от каждого элемента с помощью записи через точку.

Создайте два - массив объекта сообщения.

msgArray = [rosmessage('std_msgs/String') rosmessage('std_msgs/String')]
msgArray = 
  1x2 ROS String message array with properties:

    MessageType
    Data

Присвойте данные элементам отдельного объекта массива.

msgArray(1).Data = 'Some string'; 
msgArray(2).Data = 'Other string';

Считайте весь Data свойства от объектов сообщения в массив ячеек.

allData = {msgArray.Data}
allData = 1x2 cell
    {'Some string'}    {'Other string'}

Чтобы предварительно выделить массив с помощью сообщений ROS, используйте arrayfun или cellfun функции вместо repmat. Эти функции правильно создают массивы объектов или массивы ячеек для классов Handle.

Предварительно выделите объектный массив сообщений ROS.

msgArray = arrayfun(@(~) rosmessage('std_msgs/String'),zeros(1,50));

Предварительно выделите массив ячеек сообщений ROS.

msgCell = cellfun(@(~) rosmessage('std_msgs/String'),cell(1,50),'UniformOutput',false);

Входные параметры

свернуть все

Тип сообщения в виде строкового скаляра или вектора символов. Строка является чувствительной к регистру, и никакие частичные соответствия не позволены. Это должно совпадать с сообщением в списке, данном путем вызова rosmsg("list").

Издатель ROS в виде Publisher указатель на объект. Можно создать объект с помощью rospublisher.

Подписчик ROS в виде Subscriber указатель на объект. Можно создать объект с помощью rossubscriber.

Сервисный клиент ROS в виде ServiceClient указатель на объект. Можно создать объект с помощью rossvcclient.

Сервисный сервер ROS в виде ServiceServer указатель на объект. Можно создать объект с помощью rossvcserver.

Выходные аргументы

свернуть все

Сообщение ROS, возвращенное как Message указатель на объект.

Введенный в R2019b