readMessages

Считайте сообщения из rosbag

Описание

пример

msgs = readMessages(bag) возвращает данные из всех сообщений в BagSelection объект, bag. Сообщения возвращены в массиве ячеек сообщений.

Получить BagSelection объект, использовать rosbag.

пример

msgs = readMessages(bag,rows) возвращает данные из сообщений в строках, заданных rows. Область значений строк [1, bag.NumMessages].

пример

msgs = readMessages(___,"DataFormat","struct") возвращает данные как массив ячеек структур с помощью любого набора предыдущих входных параметров. Используя структуры может быть значительно быстрее, чем использование объектов сообщения, и пользовательские данные о сообщении могут быть считаны непосредственно, не загружая использование определений сообщения rosgenmsg.

Примечание

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

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

Примеры

свернуть все

Считайте rosbag и фильтр по теме и время.

bagselect = rosbag('ex_multiple_topics.bag');
bagselect2 = select(bagselect,'Time',...
[bagselect.StartTime bagselect.StartTime + 1],'Topic','/odom');

Возвратите все сообщения как массив ячеек.

allMsgs = readMessages(bagselect2);

Возвратите первые десять сообщений как массив ячеек.

firstMsgs = readMessages(bagselect2,1:10);

Загрузите rosbag.

bag = rosbag('ros_turtlesim.bag');

Выберите определенную тему.

bSel = select(bag,'Topic','/turtle1/pose');

Считайте сообщения как структуру. Задайте DataFormat пара "имя-значение" при чтении сообщений. Смотрите первую структуру в возвращенном массиве ячеек структур.

msgStructs = readMessages(bSel,'DataFormat','struct');
msgStructs{1}
ans = struct with fields:
        MessageType: 'turtlesim/Pose'
                  X: 5.5016
                  Y: 6.3965
              Theta: 4.5377
     LinearVelocity: 1
    AngularVelocity: 0

Извлеките точки xy из сообщений и постройте траекторию робота.

Используйте cellfun извлекать весь X и Y поля от структуры. Эти поля представляют xy положения робота во время записи rosbag.

xPoints = cellfun(@(m) double(m.X),msgStructs);
yPoints = cellfun(@(m) double(m.Y),msgStructs);
plot(xPoints,yPoints)

Figure contains an axes. The axes contains an object of type line.

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

свернуть все

Все сообщения содержатся в rosbag в виде BagSelection объект.

Строки BagSelection объект в виде n - вектор элемента, где n является количеством строк, чтобы получить сообщения из. Каждая запись в векторе соответствует пронумерованному сообщению в сумке. Область значений строк [1, bag.NumMessage].

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

свернуть все

Данные о сообщении ROS, возвращенные как объект, массив ячеек объектов сообщения или массив ячеек структур. Данные прибывают из BagSelection объект создал использование rosbag. Необходимо задать "DataFormat","struct" в функции, чтобы получить сообщения как массив ячеек структур. Используя структуры может быть значительно быстрее, чем использование объектов сообщения, и пользовательские данные о сообщении могут быть считаны непосредственно, не загружая использование определений сообщения rosgenmsg.

Вопросы совместимости

развернуть все

Изменение поведения в будущем релизе

Смотрите также

| |

Введенный в R2019b
Для просмотра документации необходимо авторизоваться на сайте