Rosbag или bag - это формат файла в ROS для хранения данных сообщений ROS. Эти сумки часто создаются путем подписки на одну или несколько тем ROS и хранения полученных данных сообщения в эффективной файловой структуре. MATLAB ® может считать эти файлы rosbag и помочь с фильтрацией и извлечением данных сообщений. В следующих разделах подробно описывается структура rosbags в MATLAB® и рабочий процесс извлечения данных из них.
При доступе к файлам журнала rosbag вызовите rosbag
и укажите путь к файлу объекта. MATLAB затем создает BagSelection
объект, содержащий индекс всех сообщений из rosbag.
The BagSelection
объект имеет следующие свойства, связанные с rosbag:
FilePath
: a вектора символов абсолютного пути к файлу 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 Wiki инструмент для декомпрессии сжатого rosbag.
Поддерживаются только rosbags в формате v2.0. Смотрите ROS Wiki для получения дополнительной информации о различных форматах сумок
Путь файла к rosbag должен быть всегда доступен. Поскольку процесс выбора сообщения не извлекает никаких данных, файл должен быть доступен для чтения при обращении к данным сообщения.
BagSelection
| readMessages
| rosbag