卡尔曼滤波器和突然测量跳跃



好的,这是我需要做的:

我想使用卡尔曼滤波器(可能是自适应的)进行一些跟踪。我的测量(当它们可用时)非常好,与实际测量的误差非常小。在某些情况下,尽管测量值会跳到一个值,完全偏离我要寻找的正确位置,然后在几帧后返回到它们的正确位置。

问题是,如果我的滤波器(非自适应)具有测量噪声协方差(R)和状态误差协方差(Q)矩阵的特定值,结果就不是很准确,因为即使对于这1%的情况,我也必须在R和Q之间做出妥协。

所以我决定使用自适应卡尔曼滤波器,就像他们在这里做的那样:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.367.1747&rep=rep1&type=pdf

他们基于创新序列来估计测量噪声协方差矩阵。基本上,他们在先前样本上使用移动窗口,并计算先前测量先前估计之间的误差协方差。例如5个过去的测量值和5个先前的估计值。当错误的测量出现在窗口下时,协方差增加,因此R也增加。

但在实践中,R增加(但还不够),因此在下一步中,估计仍然很好,但只是有点接近错误的测量。在下一步中(因为现在先前的估计已经向测量移动了一点),R变得更小,结果新的估计更加接近测量,以此类推。

最后,在几帧之后,估计跟随错误的测量。这里有一个情节来更好地理解我的意思。

https://www.dropbox.com/s/rkv0tjcm4s54kv3/untitled.tif

也许我想做的是完全错误的,用自适应卡尔曼滤波器是做不到的。也许有人在过去广泛使用卡尔曼滤波器,他以前也遇到过这个问题,可以提供帮助。

欢迎任何想法!

在回答之前,我想确保我答对了你的问题。

您有测量结果,其中一些是好的(低测量噪声),而另一些是异常值
您遇到的问题是调整测量噪声协方差矩阵。

实际上,您可以调整以获得良好的测量结果
通过使用误差协方差来拒绝异常值测量。如果创新落在您使用误差协方差矩阵定义的椭圆之外,则测量将被拒绝
每当测量被拒绝时,您只需再次应用预测步骤,然后等待另一个测量。

是的,问题正是这个。

然而,我设法在不需要定义任何椭圆的情况下解决了它。我所做的是正确的,除了如果我有很多(比方说五十个)连续的异常值,那就不起作用。

如果你考虑到你窗户的大小,这是正常的。例如,如果只有10个样本,而有20个异常值,显然这是行不通的。但对于连续5个异常值,效果非常好。一般来说,我没有使用你建议的任何阈值("如果创新落在椭圆之外")来拒绝测量。我保留了测量值,但与此同时,当我开始出现异常值时,误差测量协方差变得非常大。因此,该估计更多地基于先前的估计而不是当前的测量。

如果我使用了你的方法,这确实更符合逻辑(拒绝当前的测量,如果它是基于阈值的异常值),我就有问题,我必须先验地定义这个阈值,对吧?也许我错过了什么。。

相关内容

  • 没有找到相关文章

最新更新