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://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/.

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

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

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 array
    {'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