如何处理卡尔曼滤波器中的异步数据

Posted

技术标签:

【中文标题】如何处理卡尔曼滤波器中的异步数据【英文标题】:How to deal with asyncronous data in a kalman filter 【发布时间】:2019-06-12 05:14:59 【问题描述】:

我正在实现一个融合 3d 位置数据的卡尔曼滤波器(由 2 种不同的计算机视觉算法提供)。我正在使用 9 维状态向量(位置、速度和加速度)对问题进行建模。但是,来自每个传感器的数据不会同时出现。由于我通过考虑接收先前数据和当前数据点之间的时间步长来计算速度,因此两个连续的数据点可能完全不同,但仅相隔很小的时间步长,因此看起来位置已经改变迅速。

我想知道是否有人对解决此问题的最佳方法有见解或方向 - 卡尔曼滤波器本身是否能够容忍这种行为?或者我应该将在一个时间窗口内收到的所有数据放入一个 bin 中,并在一批数据上不那么频繁地执行更新/预测周期?我看到的在对象跟踪中使用卡尔曼滤波器的资源只使用了一个相机(即同步数据),所以我很难找到与我的用例相关的信息。

非常感谢任何帮助!谢谢!

【问题讨论】:

每台计算机的数据是否在同一时间点出现,或者每台计算机的数据之间是否存在时间间隔? 感谢您的回复。如果我正确理解您的问题 - 数据是实时的,因此(x,y,z)位置的新测量值来自一台计算机约 5 赫兹,另一台计算机约 30 赫兹。每个新的测量值都带有一个时间戳,这是我在计算速度等时使用的时间值。 是的,这就是我想知道的。我对这句话有点困惑:“两个连续的数据点可能完全不同,但仅相隔很小的时间步长”。这是否意味着数据有一些延迟?在之前的评论中,您写了关于实时测量的文章。 假设在时间 t=t_1 我收到来自传感器 1 的测量值 m1。我使用此测量值执行卡尔曼预测和更新周期。然后在时间 t=t_1 + 0.02 秒,我收到来自传感器 2 的测量值 m2。我再次执行卡尔曼预测和更新周期。但是,测量值 m1m2 可能相隔 1 米的空间距离。过滤器会认为位置在短时间内发生了快速变化。然后,在第三个时间步长 t=t2+0.02,我们可能会收到来自传感器 1 的另一个测量值 m3,它类似于 m1 但远离 m2等 在我看来,传感器的精度很差,与计时问题没有太大关系。如果这种不确定性可以通过正态分布来建模,那没关系。您的协方差 R 会很高,但过滤器会正常工作。 【参考方案1】:

根据我从您的问题和我们在 cmets 的对话中了解到的所有信息,让我首先简要描述一下问题并提出解决方案。

快速回顾

您的系统具有两个独立的传感器,它们以不同的速率(30Hz 和 5Hz)进行测量(并且可能会有一些时间抖动)。好消息是每次这样的测量都完全足以进行卡尔曼滤波器的更新步骤。每个测量都有一个时间戳。

另一个重要的一点是,测量(可能)精度很差,因此位置的变化看起来不合理。

可能的解决方案

    定义调用卡尔曼滤波器的最小时间间隔,这样接收到的测量值都不必等待太长时间才能处理。在我看来,100Hz 的频率可能是一个不错的首选。在这种情况下,您的 dt 将是 0.01 秒。

    根据所选的dt 设计您的FQ 矩阵(它们都强烈依赖于这个值)。

    在没有测量的每个调用中执行预测步骤。测量值一到,就进行更新。所以你的调用顺序看起来像:

调用顺序:

 init()
 predict()
 predict()
 predict()
 predict()
 update(sensor1)
 predict()
 update(sensor2)
 update(sensor1)
 predict()
 predict()
 update(sensor1)
 predict()
 and so on...

    要处理精度问题,您可以使用参考信号(地面实况)。与参考相比,分析每个信号(x, y, z) 的每个传感器读数的误差。卡尔曼滤波器仅适用于读数,其误差呈正态分布,均值为零。如果你看到一些系统性的偏移,也许你可以摆脱它。根据观察到的误差,您可以计算标准偏差(和方差),这样您就可以告诉您的过滤器测量结果有多好。这将是您的R 矩阵。

    如果您没有参考,您可以在原地不动的情况下进行一些测量。因此,您的参考位置将是恒定的,您可以查看读数的分散情况。

    调整Q 矩阵的元素并描述状态元素的可能动态。用于位置的较小 Q 元素会告诉过滤器不要太快改变它。因此,传感器的(可能)性能不佳将被部分消除(将低通滤波器视为直觉)。

希望对你有帮助。如果我理解错误,请纠正我。 查看传感器读数图(如果可能的话,参考轨迹)会很有帮助。

【讨论】:

以上是关于如何处理卡尔曼滤波器中的异步数据的主要内容,如果未能解决你的问题,请参考以下文章

具有 2 个测量噪声的卡尔曼滤波器

使用伪距数据进行卡尔曼滤波器时无法调整输入和输出数组的大小

一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)

一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)

一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)

一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)