![](https://csdnimg.cn/release/download_crawler_static/22728589/bg1.jpg)
卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处
理算法)”。采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更
新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。其他的就不
介绍了。
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)的协方差还没更新。
我们用 P 表示协方差:
式(2)中,P(k|k-1)是 X(k|k-1)对应的协方差,P(k-1|k-1)是 X(k-1|k-1)对应的协方差,A’
表示 A 的转置矩阵,Q 是系统过程的协方差。式子 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):
到现在为止,我们已经得到了 k 状态下最优的估算值 X(k|k)。但是为了要令卡尔曼滤波
器不断的运行下去直到系统过程结束,我们还要更新 k 状态下 X(k|k)的协方差:
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)。这样,算法就可以自回归的运算下去。
卡尔曼滤波参数的调整:其参数有三个,P0 是初始化最优角度估计的协方差(初始化
最优角度估计可设为零),它是一个初值。Q 是预测值的协方差,R 是测量值的协方差。对 Q
和 R 的设定只需记住,Q/(Q+R)的值就是卡尔曼增益的收敛值,比如其值为 0.2,那么卡尔曼
增益会向 0.2 收敛(对于 0.2 的含义解释一下,比如预测角度值是 5 度,角度测量值是 10
度,那么最优化角度为:5+0.2*(10-5)=6。从这里可以看出,卡尔曼增益越小,说明预测