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/BR2019bd_1276998_130124/mlx_to_docbook2/tp02541720/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)

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

свернуть все

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