среда, 9 августа 2017 г.

ROS. Запись сессии

Если вы хотите сохранить все сообщения, которыми обмениваются ноды во время работы, воспользуйтесь командой 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"
   />

Комментариев нет:

Отправить комментарий