rosbag简介
rosbag 既可以指命令行中数据包相关命令,也可以指 c++/python 的 rosbag 库。这里的 rosbag 是指前者。
rosbag 主要用于记录、回放、分析 rostopic 中的数据。它可以将指定 rostopic 中的数据记录到 .bag 后缀的数据包中,便于对其中的数据进行离线分析和处理。
对于 subscribe 某个 topic 的节点来说,它无法区分这个 topic 中的数据到底是实时获取的数据还是从 rosbag 中回放的数据。这就有助于我们基于离线数据快速重现曾经的实际场景,进行可重复、低成本的分析和调试。
本文以简单的 turtlesim 为例,介绍如何用 rosbag 相关命令记录和回放 rostopic 。
录制数据
启动与 turtlesim 相关的两个 ros node
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
前者打开 turtle simulation 的平面仿真环境,后者是一个键盘操作节点。
在开始记录 rostopic 之前,放了方便起见,先创建一个专门的文件夹,存放数据包
mkdir ~/bagfiles
然后进入该文件夹,开始录制数据包:
cd ~/bagfiles
rosbag record -a
其中-a选项表示将当前发布的所有 topic 数据都录制保存到一个 rosbag 文件中。
也可以只记录某些感兴趣的 topic,命令如下:
rosbag record /topic_name1 /topic_name2 /t