Если вы хотите сохранить все сообщения, которыми обмениваются ноды во время работы, воспользуйтесь командой rosbag. Она не только позволяет записать сообщения, но также повторно воспроизвести их, т.е. вы можете сохранить сессию, а затем заново её "прокрутить".
Запись осуществляется по команде
rosbag record -O имя_файла.bag список_топиков
Если нужно сохранить сообщения всех топиков, используйте команду с флагом "-a". По-умолчанию, данные записываются в "человекочитаемом" виде, но занимают больше места. Использование флага "-j" позволит сжать запись, но сделает её нечитаемой. Для окончания записи нажмите Ctrl+C.
Получить информацию о записи, включая размер файла, длительность и т.п., позволяет команда
rosbag info имя_файла.bag
Для воспроизведения записи выполните
rosbag play имя_файла.bag
К примеру, запустите черепаху.
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
Теперь в отдельном терминале включите запись данных о скорости перемещения в файл move.bag
rosbag record -O move.bag /turtle1/cmd_vel
и погоняйте черепаху по экрану, затем остановите запись. Команда
rosbag play move.bag
заставит ее продолжить движение в тех же направлениях, в которых она перемещалась ранее. Т.к. мы не записывали координаты, движение будет происходить относительно последнего положения черепахи.
Команда rosbag может быть вызвана через rosrun, т.е. в виде
rosrun rosbag ...
Это позволяет использовать её в файле запуска. При этом параметры для записи будут иметь вид
<node
pkg="rosbag"
name="record"
type="play"
args="-O имя_файла.bag список_топиков"
/>
а для воспроизведения
<node
pkg="rosbag"
name="play"
type="play"
args="имя_файла.bag"
/>
Комментариев нет:
Отправить комментарий