我正在实现一个卡尔曼滤波器,它融合了3d位置数据(提供了2种不同的计算机视觉算法)。我用一个9维的状态向量(位置、速度和加速度)来模拟这个问题.然而,来自每个传感器的数据并不是同时来的。由于我计算速度时,考虑到前一个数据接收点和当前数据点之间的时间步长,两个连续的数据点可能会有很大的不同,但只需很小的时间步长就可以分开,从而使位置看起来变化得很快。
我想知道是否有人对处理这个问题的最佳方法有洞察力或指导性--卡尔曼滤波器本身会容忍这种行为吗?或者,我是否应该将在时间窗口内接收的所有数据放入垃圾箱,并减少对一批数据执行更新/预测周期的频率?我所看到的用于目标跟踪的kalman滤波器资源只使用了一台相机(即同步数据),因此我很难找到与我的用例相关的信息。
任何帮助都是非常感谢的!谢谢!
发布于 2019-06-13 07:57:49
从你的问题和我们在评论中的谈话中我所了解到的一切,让我首先简短地描述这个问题,并提出解决方案。
--快速重述
您有一个有两个独立传感器的系统,它们以不同的速率(30 5Hz和5 5Hz)进行测量(并且可能有一些时间抖动)。好消息是,每一个这样的测量都完全足以进行卡尔曼滤波的更新步骤。每个测量都有一个时间戳。
另一个重要的问题是,测量(也许)的精度很差,所以位置的变化看起来不可信。
--可能的解决方案
dt将是0.01 s。F和Q矩阵(它们都强烈依赖于此值)设计dt和dt矩阵。呼叫顺序:
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元素的位置将告诉过滤器不要改变它太快。因此,传感器的(可能的)不良性能将被部分消除(将低通滤波器视为直觉)。我希望它能帮到你。如果我理解错了,请纠正我。它将有助于看到你的传感器读数的图表(如果可能的话,参考轨道)。
https://stackoverflow.com/questions/56555068
复制相似问题