如何同步两个ROS包?



假设我有一个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。

最新更新