使用卡尔曼滤波器估算位置

7
我正在进行一个关于室内定位的项目。我已经使用了NS2和一个名为Senelex的matlab GUI来查找节点的原始位置和估计位置。现在,我想使用卡尔曼滤波器来估计节点/目标的位置。
例如:
如果我将目标的速度视为恒定值,如何使用估计或节点的原始位置的确定值作为卡尔曼滤波器的输入。
以下是节点的估计位置和原始位置。
ori = [6.62650602409639 194.444444444445;
        6.62650602409639 10.6837606837607;
        192.168674698795 7.83475783475797;
        192.168674698795 191.595441595442;
        70.4819277108434 171.652421652422;
        129.518072289157 168.803418803419;
        24.6987951807229 144.586894586895;
        42.7710843373494 79.0598290598291];


est   = [6.62650602409639 194.444444444445;
            6.62650602409639 10.6837606837607;
            192.168674698795 7.83475783475797;
            192.168674698795 191.595441595442;
            70.7600705547484 171.847603055024;
            129.443055817301 168.734648868329;
            25.01956026761   144.890243978875;
            42.6058125534278 79.1446327727804];

如何将这些作为卡尔曼滤波器的输入并使用卡尔曼滤波器估计目标?

这个问题可以更好地阐述你已经尝试过什么。现在的正确答案可能是从任何一本书中复制关于卡尔曼滤波的章节,这希望不是你所需要的。 - thiton
如果您需要代码方面的帮助,您应该在[SO]上发布一些内容,以便我们可以帮助您。如果您有概念性问题,请查看我们的姊妹站点[dsp.se]。 - Adam Lear
1个回答

9
我建议您从比较简单的卡尔曼滤波器教程开始学习:Kalman滤波器介绍Kalman滤波器网站有很多好的资源,包括Matlab工具箱的链接。一旦您掌握了方程式,Kalman滤波器的实现并不是一个非常复杂的程序。

以下是一些Java版本的卡尔曼滤波器链接: 我相信大多数编程语言都有可用的源代码。这些示例是我使用过的。

我读到卡尔曼滤波器将预测未来位置。但是,当输出中当前位置和下一个位置之间存在很大差异时,它如何预测未来位置呢?(请查看我的问题中的原始数据)。如果我有错,请纠正我,先生。 - user1002272
1
@Desizner:卡尔曼滤波器背后的基本思想是利用最可靠的信息来预测下一个状态。它通过信息来源的方差来衡量可靠性。因此,无论位置发生多大或小的变化,滤波器都会尽力预测下一个状态。如果满足某些条件,则卡尔曼滤波器是最优的。如果目标速度是恒定的,就像您所指出的那样,可以将其建模并由卡尔曼滤波器使用。 - Richard Povinelli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接