rosmessage

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

Синтаксис

msg = rosmessage(messagetype)
msg = rosmessage(pub)
msg = rosmessage(sub)
msg = rosmessage(client)
msg = rosmessage(server)

Описание

пример

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

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

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

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.

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