卡尔曼滤波

 

卡尔曼滤波算法
        首先引入一个离散控制过程的系统,用一个线性随机微分方程来描述:X(k)
= A X(k - 1 ) + B U(k) + W(k),系统的测量值: 
Z(k)
= H X(k) + V(k) 。X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H 是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声,他们的covariance 分别是Q,R(这里我们假设他们不随系统状态变化而变化)。 
        利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态: 
X(k
| k - 1 ) = A X(k - 1 | k - 1 ) + B U(k) ……….. ( 1
式(
1 )中,X(k | k - 1 )是利用上一状态预测的结果,X(k - 1 | k - 1 )是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。 
到现在为止,系统结果已经更新了,可是,对应于X(k
| k - 1 )的covariance还没更新。我们用P表示covariance: 
P(k
| k - 1 ) = A P(k - 1 | k - 1 ) A’ + Q ……… ( 2
式(
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): 
X(k
| k) =  X(k | k - 1 ) + Kg(k) (Z(k) - H X(k | k - 1 )) ……… ( 3
其中Kg为卡尔曼增益(Kalman Gain): 
Kg(k)
=  P(k | k - 1 ) H’  /  (H P(k | k - 1 ) H’  +  R) ……… ( 4
到现在为止,我们已经得到了k状态下最优的估算值X(k
| k)。但是为了要另卡尔曼滤波不断的运行下去直到系统过程结束,我们还要更新k状态下X(k | k)的covariance: 
P(k
| k) = (I - Kg(k) H)P(k | k - 1 ) ……… ( 5
其中I 为1的矩阵,对于单模型单测量,I
= 1 。当系统进入k + 1状态时,P(k | k)就是式子( 2 )的P(k - 1 | k - 1 )。这样,算法就可以自回归的运算下去。 

你可能感兴趣的:(卡尔曼滤波)