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