【问题标题】:ROS topic sync with different frame rates不同帧率的 ROS 主题同步
【发布时间】:2018-11-07 01:44:15
【问题描述】:

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

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

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

在某些情况下,传入主题之一,比如 主题 A 的速率是其他主题的一半,比如 B 和 C,而我没有想要放弃 B 或 C 主题中的任何一个以让给 A,是否有现成的方法或算法?

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

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

【问题讨论】:

    标签: ros


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。这听起来像一个好主意。目前我所做的只是将每个订阅的(快速)消息放入一个向量中,并计算(慢)消息回调函数中时间戳的差异并进行线性插值。我会尝试缓存一个并测试它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2021-11-04
    • 2013-02-24
    • 2023-03-16
    相关资源
    最近更新 更多