- PVSM.RU - https://www.pvsm.ru -

ROS на Raspberry Pi: Использование rosbag для сохранения данных топиков

Добрый день, уважаемые читатели!
Данная статья является внеочередной в серии [1]. Ее можно рассматривать как полезное дополнение к статье [2]. Здесь я расскажу о таком полезном инструменте в ROS как rosbag. Кого заинтересовало, прошу под кат.

Что это rosbag?

rosbag позволяет сохранять данные, публикуемые в топики ROS в специальные файлы с раширением bag. Затем эти файлы можно воспроизвести посредством того же rosbag; данные при этом будут публиковаться в те же самые топики, в которые они публиковались изначально. Это позволяет, например, имитировать получение данных с сенсоров при отсутствии таковых.

Запись данных с топика в bag файл

Для примера, мы будем записывать данные с камеры Raspberry Pi. Если вспомнить статью [2], где мы получали видеопоток с камеры и публиковали его в топик image_raw. Сейчас мы как раз воспользуемся этим же узлом ROS для получения данных для записи. Мы запишем видеопоток из топика image_raw в rosbag файл raspicam_image_raw.bag, а затем воспроизведем его, получив оригинальный поток без использования камеры.

Итак запустим узел raspi_cam_ros:

rosrun raspi_can_ros capture

Покажем список активных топиков:

rostopic list

Среди топиков будет наш топик image_raw. Теперь воспользуемся rosbag для записи топика:

rosbag record /image_raw -o raspicam_image_raw

Запишем несколько минут видеопотока. Лучше не записывать очень длинные потоки, поскольку bag файлы занимают приличное место в памяти. Например, у меня запись длиной в минуту с половиной заняла 90 Мб.
Сначала посмотрим, что содержит наш bag файл:

rosbag info <имя файла>

path:        2016-05-07-13-00-23.bag
version:     2.0
duration:    55.1s
start:       May 07 2016 15:00:24.86 (1462626024.86)
end:         May 07 2016 15:01:19.96 (1462626079.96)
size:        89.7 MB
messages:    102
compression: none [102/102 chunks]
types:       sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743]
topics:      /image_raw   102 msgs    : sensor_msgs/Image

Прогрывание данных bag файла

Теперь остановим наш узел и воспроизведем запись:

rosbag play raspicam_image_raw.bag -r 1 --loop

Покажем данные с топика image_raw в окне rqt_image_view:

rosrun rqt_image_view rqt_image_view

Воспроизведение записи bag файла на Raspberry Pi 2 можно посмотреть на видео.

Существует специальный инструмент rqt_bag для записи и работы с bag файлами. На официальной странице [3] вы можете подробнее узнать об этой утилите.
Думаю, вы найдете множество применений для утилиты rosbag. Это довольно мощная утилита и без нее трудно обойтись при полноценном использовании ROS.
Желаю удачи в проектах с использованием ROS!

Автор: vovaekb90

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/raspberry-pi/120309

Ссылки в тексте:

[1] серии: https://geektimes.ru/post/268876/

[2] статье: https://geektimes.ru/post/268928/

[3] официальной странице: http://wiki.ros.org/rqt_bag

[4] Источник: https://geektimes.ru/post/275606/