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/BR2021bd_1751886_255755/mlx_to_docbook2/tpddfbd76c/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 object. The axes object contains an object of type line.

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

свернуть все

Имя файла и пути для rosbag вы хотите получить доступ в виде строкового скаляра или вектора символов. Этот путь может быть относительным или абсолютным.

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

свернуть все

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

Информация о содержимом rosbag, возвращенного как структура. Эта структура содержит поля, связанные с 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