假设我有一个rosbag,上面记录了一些消息。
我想提取一些消息,对其进行一些操作,然后记录另一个结果"袋。
之后我想要rosbag play
两个包文件,我希望他们以相同的速度播放,因此同步。
我该怎么做?
Rosbag在播放时同步多个包。根据rosbag文档:
如果使用了两个单独的袋子文件,它们将根据时间戳被视为具有交错时间的单个袋子。这意味着如果你录制一个包,等待一个小时,然后录制第二个包,当你把它们一起播放时,你会在播放过程中有一个小时的死亡时间。
如果在回放一个rosbag时,您想要记录第二个bag的时间戳与第一个bag对齐,请确保将/use_sim_time
设置为true。否则,新包中的消息将会被戳上当前系统时间,这不是您想要的。
rosparam set use_sim_time true
您可以使用rosbag api。如果你只是编辑数据元素,你所要做的就是确保std_msgs/Header
字段从输入复制到输出msg,因为这是存储时间戳的地方。如果您想播放两个包文件,您只需将它们作为普通参数传递给rosbag play
,例如rosbag play *.bag
,以播放当前目录中的所有包文件。如果您有兴趣将它们合并到单个包文件中,也可以查看rosbag cookbook。