在我总结Kalman filtering之前请允许我发泄一下,网上的各版本的卡尔曼滤波方程的变量字母真是多,而范例却全都是同一个测量气温的简单例子,单纯看书的话公式自己又推不出来,真是日了狗了。
好了,说到卡尔曼滤波,我对卡尔曼滤波的初步理解就是(反正这句话也是抄的,看看就好了,我其实也不懂):根据当前时刻的观测值、上一时刻的预测值及预测误差,计算得到当前的最优量去预测下一刻的量。至于对卡尔曼滤波意义理解的话可以在知乎上搜一下,有个测猪体重的例子感觉十分生动。公式推导的话智商过低的本人也是推不出来的,所以在此仅希望帮助大家学会运用,如果帮得上的话。
首先,我们引入一个离散控制过程的系统。该系统可用一个线性随机微分方程来描述:
X(k)=AX(k-1)+BU(k)+W(k)
Z(k)=HX(k)+V(k)
X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声,他们的协方差分别是Q,R。由于系统中一般不太有控制量,所以B这个参数一般为0,也就是没有U(K)。
以下是编程需要的五个卡尔曼滤波的迭代方程:
首先利用系统的过程模型来预测系统下一状态,设在k时刻的系统状态为x(k),则可以根据系统模型,由上一状态预测出现在状态:
X(k|k-1)=AX(k-1|k-1)+Bu(k).....................(1)
其中x(k|k-1)是上一时刻的状态对现在时刻状态的预测,x(k-1|k-1)是上一时刻状态的最优结果, u(k)为现在时刻状态的控制量。
(主要看一下X(k|k-1)这样的变量到底代表什么)
系统的状态已经更新,现在需要更新系统的误差估计协方差矩阵,用p(k|k-1)表示误差估计协方差矩阵: