rosbag или сумка являются форматом файла в ROS для того, чтобы хранить данные о сообщении ROS. Эти сумки часто создаются, подписываясь на одну или несколько тем ROS и храня полученные данные о сообщении в эффективной файловой структуре. MATLAB® может считать эти rosbag файлы и справку с фильтрацией и извлечением данных о сообщении. Следующие разделы детализируют структуру rosbags в MATLAB® и рабочем процессе для извлечения данных от них.
При доступе rosbag к файлам журнала, вызовите rosbag
и задайте путь к файлу к объекту. MATLAB затем создает BagSelection
объект, который содержит индекс всех сообщений от rosbag.
BagSelection
объекту связали следующие свойства с rosbag:
FilePath
: вектор символов абсолютного пути к rosbag файлу.
StartTime
: скаляр, указывающий время первое сообщение, был зарегистрирован
EndTime
: скаляр, указывающий время последнее сообщение, был зарегистрирован
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
Время начала
Время окончания
, и MessageList
) определить, как выбрать подмножество сообщений для анализа.
Избранные сообщения: Вызовите select
создать выбор сообщений на основе ваших желаемых свойств.
Данные о сообщении извлечения: Вызовите readMessages
или timeseries
получить данные о сообщении или как массив ячеек или как структуру данных временных рядов.
Визуализируйте, анализируйте или обработайте данные: Используйте извлеченные данные в своем определенном приложении. Можно отобразить данные на графике или разработать алгоритмы, чтобы обработать данные.
Следующий рисунок также показывает рабочий процесс.
Существует несколько ограничений в поддержке rosbag в MATLAB:
MATLAB может только проанализировать несжатый rosbags. Смотрите Wiki ROS для инструмента, чтобы распаковать сжатый rosbag.
Только rosbags в v2.0 формате поддерживаются. Смотрите Wiki ROS для получения дополнительной информации о различных форматах сумки
Путь к файлу к rosbag должен всегда быть доступным. Поскольку процесс выбора сообщения не получает данных, файл должен быть доступен для чтения, когда к данным о сообщении получают доступ.
BagSelection
| readMessages
| rosbag