rosbag

Открытый и синтаксический анализ rosbag файл журнала

Синтаксис

bag = rosbag(filename)
bagInfo = rosbag('info',filename)
rosbag info filename

Описание

пример

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/BR2019ad_1062519_57051/mlx_to_docbook5/tp003f1b1f/robotics-ex61825935/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)

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

свернуть все

Имя файла и пути для 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 

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