您的位置:首页 > 其它

kalmen filter的一些看法

2013-05-06 23:23 253 查看
卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全包含噪声的测量中,估计动态系统的状态。

简单来说,卡尔曼滤波器是一个“optimal recursivedata processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。

首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:
[align=center] X(k|k-1)=A X(k-1|k-1)+B U(k) ……… (1)[/align]
式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。我们用P表示covariance:
[align=center] P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)[/align]
式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):
[align=center] X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)[/align]
其中Kg为卡尔曼增益(Kalman Gain):
[align=center] Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)[/align]
到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:
[align=center] P(k|k)=(I-Kg(k) H)P(k|k-1) ……… (5)[/align]
其中I 为1的矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。这样,算法就可以自回归的运算下去。
卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5个基本公式。根据这5个公式,可以很容易用计算机编程实现。
在百度百科上有个队室内温度卡尔曼滤波预测,讲解非常详细。
网址:http://baike.baidu.com/view/302394.htm
最重要的是对描述的对象进行建模。
首先选好状态变量,比如:室内温度s=[s];预测一个点的位置,可以有s=[x,y,vx,vy,ax,ay];预测一个区域,s=[x,y,vx,vy,ax,ay,w,h];w,h表示区域的长宽;
再通过系统间的关系,确立状态转移矩阵A
再就是观测矩阵H的确立,主要看测量值与系统变量间的关系;
然后,使用高斯白噪声模型,建立预测值和测量值的偏差关系,确立Q,R;
最后,计算当前可信度P(k|k-1),并且更新可信度P(k|k)。
具体的运算步骤是,由(1)算出预测值X(k|k-1),然后由(2)计算当前的可信度P(k|k-1),再由(4)计算卡尔曼增益Kg(k),再由(3)汇总预测值X(k|k-1)和测量值Z(k),计算出最可信的值X(k|k)(可以认为是真实值),最后由(5)更新可信度P(k|k),用作下一轮计算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: