ROS Bags. Работа с данными
На этом занятии мы столкнемся с новой для нас темой - это bag файлы.
Идея их использования довольно проста и немного похожа на машину времени. Мы можем включить "запись" и сохранять все сообщения, которые происходят в нашей системе, результат этой записи сохраняется в .bag файлах.
Также, имея .bag файл, мы можем сколь угодно раз проигрывать записанный отрезок времени. Такой подход упрощает отладку алгоритмов, когда нам для проверки не нужно моделировать объекты реального мира, а достаточно один раз записать данные.
Для работы с .bag служит консольная утилита rosbag, перечислим основные ее аргументы
rosbag record [TOPIC_NAME] Начать запись .bag
rosbag play [FILE_NAME] Проиграть .bag файл
rosbag compress [FILE_NAME] Архивировать файл
rosbag decompress [FILE_NAME] Разархивировать файл
rosbag record -a Записать все сообщения
Применение
Запустим скрипт, который мы написали когда разбирались с топиками pub.py. Мы помним, что он публикует данные в топик /welcome_topic
python3 pub.py
Проверим, что в топике действительно есть данные
rostopic echo /welcome_topic
data: "Hello robot"
---
data: "Hello robot"
Начнем запись топика. Лучше подождать секунд 15, прежде чем остановить запись.
rosbag record /welcome_topic
[ INFO] [1625835886.569004918]: Subscribing to /welcome_topic
[ INFO] [1625835886.574587140]: Recording to 2021-07-09-16-04-46.bag.
Мы видим, что запись пошла в файл 2021-07-09-16-04-46.bag
Остановим тестовый скрипт и "проиграем" файл
rosbag play 2021-07-09-16-04-46.bag
[ INFO] [1625836223.604592718]: Opening 2021-07-09-16-04-46.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[RUNNING] Bag Time: 1625835902.209460 Duration: 14.730354 / 23.037502
В топике welcome_topic появились данные.
rostopic echo /welcome_topic
data: "Hello robot"
---
data: "Hello robot"
---
data: "Hello robot"
---