ROS Файлы журнала (rosbags)

Введение

Rosbag или bag - это формат файла в ROS для хранения данных сообщений ROS. Эти сумки часто создаются путем подписки на одну или несколько тем ROS и хранения полученных данных сообщения в эффективной файловой структуре. MATLAB ® может считать эти файлы rosbag и помочь с фильтрацией и извлечением данных сообщений. В следующих разделах подробно описывается структура rosbags в MATLAB® и рабочий процесс извлечения данных из них.

Структура rosbag 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 для чтения данных заданных свойств в виде временных рядов.

Рабочий процесс для выбора rosbag

При работе с 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 должен быть всегда доступен. Поскольку процесс выбора сообщения не извлекает никаких данных, файл должен быть доступен для чтения при обращении к данным сообщения.

См. также

| |

Похожие темы