前言
由于概率论要求有个结课论文,加上之前学习了下简单的Kalman滤波,发现还有很多有意思的内容不太理解,于是水了这么篇文章。
Kalman滤波
卡尔曼滤波算法需要满足两个前提,另外还有一个隐含的前提:
系统为有限维的线性系统,如果系统非线性,可以用扩展卡尔曼滤波算法(EKF)进行最优估计。
噪声服从高斯分布,即高斯白噪声。
系统在k时刻的状态只与k-1时刻状态和当前输入有关(马尔可夫性)。
卡尔曼滤波算法的过程如下,首先定义FkF_kFk为状态转移矩阵,体现k-1时刻对k时刻的影响;GkG_kGk为控制输入矩阵,表示控制输入对于状态的影响;wkw_kwk为过程噪声矩阵,其服从均值为0,协方差矩阵为QkQ_kQk的高斯分布。
那么从k-1时刻估计k时刻,可以使用下式进行估计, xk\ x_k xk为状态变量在k时刻的真值:
xk=Fkxk−1+Gkuk+wk (1−1) {x_k=F}_kx_{k-1}+G_ku_k+w_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1-1) xk=Fkxk−1+Gkuk+wk (1−1)
那么我们观测的先验估计为,xk∣k−1x_{k|k-1}xk∣k−1为状态变量x根据k-1时刻对k时刻的估计值:
xk∣k−1=Fkxk−1∣k−1+Gkuk+wk (1−2) {x_{k|k-1}=F}_kx_{k-1|k-1}+G_ku_k+w_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1-2) xk∣k−1=Fkxk−1∣k−1+Gkuk+wk (1−2)
定义k时刻的观测量zkz_kzk,观测矩阵HkH_kHk表示状态空间到观测空间的映射,vkv_kvk为观测噪声矩阵,同样为服从均值为0,协方差矩阵为RkR_kRk的观测噪声矩阵。那么对于从k时刻的观测估计状态量有:
zk=Hkxk+vk (1−3) z_k=H_kx_k+v_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1-3) zk=Hkxk+vk (1−3)
预测过程的误差可使用协方差矩阵Pk∣k−1P_{k|k-1}Pk∣k−1表示,有Pk∣k−1=Cov( xk∣k−1,xk∣k−1)P_{k|k-1}= {Cov(\ x}_{k|k-1},x_{k|k-1})Pk∣k−1=Cov( xk∣k−1,xk∣k−1) ,可以写为:
Pk∣k−1=FkPk−1∣k−1Fkt+Qk (1−4) {P_{k|k-1}=F}_kP_{k-1|k-1}{F_k}^t+Q_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1-4)\ Pk∣k−1=FkPk−1∣k−1Fkt+Qk (1−4)
推导过程如下:
KaTeX parse error: Expected group after '\bigm' at end of input: …_k)\ +Q_k\bigm
利用协方差矩阵的性质有:
=FkCov( xk−1∣k−1,Fkxk∣k−1)+0+Qk= Fk[Cov(Fkxk∣k−1,xk∣k−1)]T+Qk= Fk[FkCov(xk∣k−1)]T+Qk= FkPk−1∣k−1Fkt+Qk {\ =F_kCov(\ x}_{k-1|k-1},F_kx_{k|k-1})+0+Q_k \\ {=\ F}_k\left[Cov\left(F_kx_{k|k-1},x_{k|k-1}\right)\right]^T+Q_k\\ =\ F_k\left[F_kCov\left(x_{k|k-1}\right)\right]^T+Q_k\\ =\ F_kP_{k-1|k-1}{F_k}^t+Q_k =FkCov( xk−1∣k−1,Fkxk∣k−1)+0+Qk= Fk[Cov(