日常使用中有时需要提取bag包中的某个topic数据为新的bag包,或者裁剪其中的一段时间数据。这些功能均可以通过rosbag filter
命令实现。
下面,我们简单介绍一下其使用流程:
- 首先,使用
rosbag info
查看当前bag包中的数据信息。如:
rosbag info calib_1.bag
可以看到,其中包含ouster的激光雷达数据(/os_cloud_node_1/points),内部IMU数据(/os_cloud_node_1/imu)以及外部IMU数据(/imu/data),总时长为202s。
下面,我们使用rosbag filter
命令进行如下操作:
提取指定Topic
rosbag filter calib_1.bag out_imu.bag "topic == '/imu/data'"
提取calib_1.bag包中的/imu/data
数据,提取后的数据存放在新生成的out_imu.bag中。
我们再使用rosbag info
查看out_imu.bag包中的内容,如下所示:
提取指定时间段
rosbag filter out_imu.bag clip_imu.bag "t.to_sec() >= 1683601485.25 and t.to_sec() <= 1683601495.25"
提取t.to_sec() >= 1683601485.25 and t.to_sec() <= 1683601495.25时间段之间的数据,时长为10S,提取后的clip_imu.bag信息如下所示:
此外,大家还可以通过设置不同的条件组合,满足自己的需求。