rosmessage

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

Описание

пример

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

Примечание

В следующем релизе ROS Toolbox будет использовать структуры сообщений вместо объектов для сообщений ROS.

Чтобы использовать структуры сообщений, установите "DataFormat" аргумент имя-значение в "struct". Для получения дополнительной информации см. раздел Структуры сообщений ROS.

пример

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

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

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

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

msg = rosmessage(___,"DataFormat","struct") создает пустое сообщение как структуру сообщения с любым из аргументов в предыдущих синтаксисах. Для получения дополнительной информации см. раздел Структуры сообщений ROS.

Примеры

свернуть все

Создайте сообщение ROS как структуру со std_msgs/String тип сообщения.

strMsg = rosmessage("std_msgs/String","DataFormat","struct")
strMsg = struct with fields:
    MessageType: 'std_msgs/String'
           Data: ''

Запустите мастер ROS.

rosinit
Launching ROS Core...
Done in 0.74013 seconds.
Initializing ROS master on http://192.168.0.10:51863.
Initializing global node /matlab_global_node_12392 with NodeURI http://bat6315glnxa64:44745/

Создайте издателя для /chatter тема с std_msgs/String тип сообщения. Установите "DataFormat" аргумент имя-значение для структуры сообщений ROS.

chatpub = rospublisher("/chatter","std_msgs/String","DataFormat","struct");

Создайте сообщение для отправки. Задайте Data свойство с вектором символов.

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

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

send(chatpub,msg);

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

rosshutdown
Shutting down global node /matlab_global_node_12392 with NodeURI http://bat6315glnxa64:44745/
Shutting down ROS master on http://192.168.0.10:51863.

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

Создайте массив из двух сообщений. Задайте DataFormat аргумент имя-значение для использования структур для сообщений ROS.

blankMsg = rosmessage("std_msgs/String","DataFormat","struct")
blankMsg = struct with fields:
    MessageType: 'std_msgs/String'
           Data: ''

msgArray = [blankMsg blankMsg]
msgArray=1×2 struct array with fields:
    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 будут удалены. Чтобы использовать сообщения ROS в качестве структур и использовать массивы структур, задайте DataFormat Пара "имя-значение" при вызове rosmessage функция.

Предварительно выделите объектный массив из сообщений 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