0. 线性卡尔曼滤波的假设
- 连续变化的系统:如系统是稳定的,不存在外部输入导致的变化,为什么不尝试使用均值滤波或者低通滤波这种更加简单的滤波算法,当然这并不是说LKF算法不能解决这种问题,但是用到最后我们会发现,其实效果和低通滤波并没有什么区别;
- 线型高斯的系统:这个描述起来可能稍显复杂,本质上来说,LKF是贝叶斯滤波的一种简化形式,如果系统不服从线型高斯假设,后延概率密度函数就不能用均值和协方差来描述了,这个在后续讲解会有体现;
1. 卡尔曼滤波的原理
kalman滤波首先满足马尔科夫假设,即系统的当前状态,只和系统上一个时刻有关。基于这个假设,我们就有了两个量可以用来做滤波,上一时刻的结果和当前时刻的量测,此时最简单的是做什么?没错,低通滤波,简单,高效,而且总是在接近真值。但是,不足够准确!
如何能更加准确?
首先,不要直接用上一时刻的值,而是将上一时刻的结果推到当前时刻,这样就会比之前更加的准确;
我们也就得到了卡尔曼滤波的第一步Prediction两个重要的公式
-
状态先验,将过去时刻的状态推到当前
x ˇ k = F k − 1 x k − 1 + G k − 1 u k − 1 \check x_{k} = F_{k-1}x_{k-1} + G_{k-1}u_{k-1} xˇk=Fk−1xk−1+Gk−1uk−1 -
更新协方差,在外推的过程中,协方差矩阵也需要更新
P ˇ k = F k − 1 P ^ k − 1 F k − 1 T + Q k − 1 \check P_k = F_{k-1}\hat P_{k-1}F_{k-1}^T + Q_{k-1} Pˇk=F