rosbag

Откройте и проанализируйте файл журнала rosbag

Описание

пример

bag = rosbag(filename) создает индексируемую BagSelection объект, bag, который содержит все индексы сообщений из rosbag в пути filename. Чтобы получить BagSelection объект, использование rosbag. Для доступа к данным вызовите readMessages или timeseries для извлечения соответствующих данных.

rosbag, или сумка, является форматом файла для хранения данных сообщений ROS. Они используются, в основном, для регистрации сообщений в сети ROS. Можно использовать эти сумки для автономного анализа, визуализации и хранения. Смотрите страницу ROS Wiki для получения дополнительной информации о rosbags.

bagInfo = rosbag('info',filename) возвращает информацию как структуру, bagInfo, что касается содержимого rosbag в filename.

пример

rosbag info filename отображает информацию в MATLAB® Командное окно о содержимом rosbag в filename. Информация включает количество сообщений, время начала и конца, темы и типы сообщений.

Примеры

свернуть все

Получите информацию из rosbag. Укажите полный путь к rosbag, если он еще не доступен в пути MATLAB ®.

bagselect = rosbag('ex_multiple_topics.bag');

Выберите подмножество сообщений, отфильтрованных по времени и теме.

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

Чтобы просмотреть информацию о файле журнала rosbag, используйте rosbag info filename, где filename является rosbag (.bag) файл.

rosbag info 'ex_multiple_topics.bag'
Path:     /tmp/BR2021ad_1684407_61364/mlx_to_docbook2/tpdfefb16c/ros-ex32890909/ex_multiple_topics.bag
Version:  2.0
Duration: 2:00s (120s)
Start:    Dec 31 1969 19:03:21.34 (201.34)
End:      Dec 31 1969 19:05:21.34 (321.34)
Size:     23.6 MB
Messages: 36963
Types:    gazebo_msgs/LinkStates [48c080191eb15c41858319b4d8a609c2]
          nav_msgs/Odometry      [cd5e73d190d741a2f92e81eda573aca7]
          rosgraph_msgs/Clock    [a9c97c1d230cfc112e270351a944ee47]
          sensor_msgs/LaserScan  [90c7ef2dc6895d81024acba2ac42f369]
Topics:   /clock               12001 msgs  : rosgraph_msgs/Clock   
          /gazebo/link_states  11999 msgs  : gazebo_msgs/LinkStates
          /odom                11998 msgs  : nav_msgs/Odometry     
          /scan                  965 msgs  : sensor_msgs/LaserScan 

Получите преобразования из rosbag (.bag) файлы путем загрузки rosbag и проверки доступных систем координат. Из этих систем координат используйте getTransform для запроса преобразования между двумя системами координат.

Загрузите rosbag.

bag = rosbag('ros_turtlesim.bag');

Получите список доступных систем координат.

frames = bag.AvailableFrames;

Получите последнее преобразование между двумя системами координат.

tf = getTransform(bag,'world',frames{1});

Проверьте доступность преобразования в определенное время и получите преобразование. Использование canTransform чтобы проверить, доступно ли преобразование. Задайте время, используя rostime.

tfTime = rostime(bag.StartTime + 1);
if (canTransform(bag,'world',frames{1},tfTime))
    tf2 = getTransform(bag,'world',frames{1},tfTime);
end

Загрузите 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, к которому вы хотите получить доступ, задается как строковый скаляр или вектор символов. Этот путь может быть относительным или абсолютным.

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

свернуть все

Выбор сообщений rosbag, возвращаемых как BagSelection указатель на объект.

Сведения о содержимом росбага, возвращенные как структура. Эта структура содержит поля, связанные с файлом rosbag и его содержимым. Образец выхода для rosbag как структуры:

Path:     \ros\data\ex_multiple_topics.bag
Version:  2.0
Duration: 2:00s (120s)
Start:    Dec 31 1969 19:03:21.34 (201.34)
End:      Dec 31 1969 19:05:21.34 (321.34)
Size:     23.6 MB
Messages: 36963
Types:    gazebo_msgs/LinkStates [48c080191eb15c41858319b4d8a609c2]
          nav_msgs/Odometry      [cd5e73d190d741a2f92e81eda573aca7]
          rosgraph_msgs/Clock    [a9c97c1d230cfc112e270351a944ee47]
          sensor_msgs/LaserScan  [90c7ef2dc6895d81024acba2ac42f369]
Topics:   /clock               12001 msgs  : rosgraph_msgs/Clock   
          /gazebo/link_states  11999 msgs  : gazebo_msgs/LinkStates
          /odom                11998 msgs  : nav_msgs/Odometry     
          /scan                  965 msgs  : sensor_msgs/LaserScan 

Введенный в R2019b