Rosbag или bag - формат файла в ROS для хранения данных сообщения ROS. Эти пакеты часто создаются путем подписки на один или более разделов ROS и сохранения принятых данных сообщения в эффективной файловой структуре. MATLAB ® может считывать эти файлы rosbag и помогать с фильтрацией и извлечением данных сообщений. В следующих разделах подробно описывается структура rosbags в MATLAB ® и поток операций для извлечения данных из них.
При доступе к файлам журнала rosbag вызовите rosbag и укажите путь к файлу объекта. Затем MATLAB создает BagSelection объект, содержащий индекс всех сообщений из rosbag.
BagSelection объект имеет следующие свойства, связанные с rosbag:
FilePath: символьный вектор абсолютного пути к файлу rosbag.
StartTime: скаляр, указывающий время записи первого сообщения
EndTime: скаляр, указывающий время записи последнего сообщения
NumMessages: скаляр, указывающий, сколько сообщений содержится в файле
AvailableTopics: Список того, какие темы и типы сообщений были записаны в сумке. Он хранится в виде табличных данных, в которых перечисляется количество сообщений, тип сообщения и определение сообщения для каждого раздела. Дополнительные сведения о типах данных таблицы см. в разделе Доступ к данным в таблицах. Вот пример вывода этой таблицы:
ans =
NumMessages MessageType MessageDefinition
___________ ______________________ _________________
/clock 12001 rosgraph_msgs/Clock [1x185 char]
/gazebo/link_states 11999 gazebo_msgs/LinkStates [1x1247 char]
/odom 11998 nav_msgs/Odometry [1x2918 char]
/scan 965 sensor_msgs/LaserScan [1x2123 char] MessageList: список каждого сообщения в пакете со строками, отсортированными по временной метке момента записи сообщения. Этот список можно индексировать, и таким образом можно выбрать часть списка. Запрос select позволяет выбирать подмножества на основе метки времени, темы или типа сообщения.
Также обратите внимание, что BagSelection содержит индекс для всех сообщений. Однако для извлечения данных по-прежнему необходимо использовать функции. Для получения этой информации см. раздел readMessages для получения сообщений на основе индексов в виде массива ячеек или см. timeseries для считывания данных указанных свойств в виде временного ряда.
При работе с rosbags существует общая процедура извлечения данных.
Загрузить rosbag: Вызов rosbag и путь к файлу для загрузки и создания BagSelection.
Проверить доступные сообщения: Проверить BagSelection свойства (AvailableTopics, NumMessages, StartTime, EndTime, и MessageList), чтобы определить, как выбрать подмножество сообщений для анализа.
Выбор сообщений: Вызов select для создания выбора сообщений на основе требуемых свойств.
Извлечение данных сообщения: Вызов readMessages или timeseries получение данных сообщения в виде либо массива ячеек, либо структуры данных временных рядов.
Визуализация, анализ или обработка данных: используйте извлеченные данные для конкретного приложения. Можно построить график данных или разработать алгоритмы обработки данных.
На следующем рисунке также показан рабочий процесс.

Есть несколько ограничений в поддержке rosbag в MATLAB:
MATLAB может анализировать только несжатые rosbags. Для получения информации об инструменте распаковки сжатой розбэг см. вики ROS.
Поддерживаются только rosbags в формате v2.0. Для получения дополнительной информации о различных форматах сумок см. вики ROS
Путь к файлу rosbag всегда должен быть доступен. Поскольку процесс выбора сообщения не извлекает никаких данных, файл должен быть доступен для чтения при обращении к данным сообщения.
BagSelection | readMessages | rosbag