原文链接
rosbag的使用
1.录制包
录制所有的topic: rosbag record -a
录制指定的topic: rosbag record /topic1 /topic2
2.查看包的信息
rosbag info your.bag
这个命令主要是拿来看一个包里的topic,时长,信息类型等。对于比较小的包,直接rosbag play xx.bag
再rostopic list
即可。但像KITTI转出来的,20多G的,打开实在太慢了,相比起来,info足够。
3.播放包rosbag play
rosbag play xx.bag
-d
参数可以用来指定延迟播放的时间(Sec)
-s
参数用于指定从几秒开始:
从10秒开始播放:rosbag play -s 10 xx.bag
-u
参数表示仅播放包的前几秒
信息:
仅播放前十秒:rosbag play -u 10 xx.bag
-r
参数用来指定播放速度:
2倍速播放: rosbag play -r 2 xx.bag
从120s开始播放,只播放20s,就是播放120s~140s的时间段:
rosbag play xx.bag -s 120 -u 20
4.包过滤 rosbag filter
rosbag filter
命令可以用python指令来过滤包,能够使用的内置变量为topic
, m
, t.secs
和t.nsecs
。
按时间过滤的时候,需要注意的是应该用UNIX时间,这个时间可以用rosbag info
来确定。
rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86"
而如果需要截取一段时间,可以用and来连接:
rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86 and t.to_sec()>=1284703935.86"
按话题过滤的话,可以这样写:
过滤单个topic
rosbag filter input.bag output.bag "topic == '/tf'"
只保留/velodyne_point_cloud
和/visensor/imu
,使用or
和==
:
rosbag filter input.bag output.bag "topic == '/velodyne_point_cloud' or topic =='/visensor/imu' "
过滤两个topic:/velodyne_point_cloud
和/visensor/imu
,使用and
和!=
:
rosbag filter input.bag output.bag "topic != '/velodyne_point_cloud' and topic !='/visensor/imu' "