首页 > 解决方案 > 不同帧率的 ROS 主题同步

问题描述

假设我有多个 ROS 主题要订阅。通常我可以将 message_filters::sync_policies 与精确时间或近似时间一起使用。但由于财产

消息只使用一次。两个集合不能共享相同的消息。有些消息可以被丢弃。

这意味着它只会在所有主题链接到一个集合时运行绑定的回调函数。

在某些情况下,传入主题之一,假设主题 A的速率是其他主题的一半,假设B 和 C,并且我不想放弃任何 B 或 C 主题以屈服于 A,是否存在现成的方法或算法?

例如,我可以复制或插入 A 消息。或者我可以产生一些“假”的 A 消息(不需要太多资源),这样我就可以轻松地进入回调函数。

如果没有这样的包,我想我可能会尝试编写一个可能有助于某些特殊情况的包。如果我自己做这个,我必须花很多时间来确保它有效。你怎么看?

标签: ros

解决方案


使用message_filters::Cache可能是您的手动解决方法。

  • 如果一切顺利,请使用至少 2 个队列缓存您topic A的队列,但至少我会走得更高一点。
  • 在您的(同步的)主题topic B/C回调中,您可以topic A使用getLatestTime().

因此,您的代码中有两个(缓存topic A和同步topic B/C的)订阅者。


推荐阅读