0

想象一下,我有一个 rosbag,上面记录了一些消息。

我想提取一些消息,对其进行一些操作,然后记录另一个“结果”包。

后来我想要rosbag play两个包文件,我希望它们以相同的速度播放,因此同步。

我怎样才能做到这一点?

4

2 回答 2

0

Rosbag 在播放时会同步多个包。根据rosbag 文档

如果使用两个单独的包文件,则根据时间戳将它们视为具有交错时间的单个包。这意味着如果您录制一个包,等待一个小时,然后录制第二个包,当您一起播放它们时,您将在播放中间有一个长达一小时的死区。

如果在播放 rosbag 时,您想记录第二个包的时间戳与第一个包一致,请确保设置/use_sim_time为 true。否则新包里的消息会被打上当前系统时间,这不是你想要的。

rosparam set use_sim_time true
于 2021-11-10T21:50:18.200 回答
0

您可以使用rosbag api。如果您只是在编辑数据元素,您所要做的就是确保将std_msgs/Header字段从输入复制到输出 msg,因为这是存储时间戳的地方。如果你想播放两个包文件,你只需将它们作为普通参数传递给rosbag play例如rosbag play *.bag播放当前目录中的所有包文件。如果你有兴趣做一些事情,比如将它们组合成一个单独的包文件,你也可以查看rosbag 食谱。

于 2021-09-07T22:10:19.580 回答