exponenta event banner

rosbag

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

Описание

пример

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

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

bagInfo = rosbag('info',filename) возвращает информацию в виде структуры, bagInfo, которая о содержании розбаг на 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 является розбаг (.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 запрос преобразования между двумя координатными кадрами.

Загрузите розбаг.

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

Загрузите розбаг.

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