前言
由于概率论要求有个结课论文,加上之前学习了下简单的Kalman滤波,发现还有很多有意思的内容不太理解,于是水了这么篇文章。
Kalman滤波
卡尔曼滤波算法需要满足两个前提,另外还有一个隐含的前提:
系统为有限维的线性系统,如果系统非线性,可以用扩展卡尔曼滤波算法(EKF)进行最优估计。
噪声服从高斯分布,即高斯白噪声。
系统在k时刻的状态只与k-1时刻状态和当前输入有关(马尔可夫性)。
卡尔曼滤波算法的过程如下,首先定义 F k F_k Fk为状态转移矩阵,体现k-1时刻对k时刻的影响; G k G_k Gk为控制输入矩阵,表示控制输入对于状态的影响; w k w_k wk为过程噪声矩阵,其服从均值为0,协方差矩阵为 Q k Q_k Qk的高斯分布。
那么从k-1时刻估计k时刻,可以使用下式进行估计, x k \ x_k xk为状态变量在k时刻的真值:
x k = F k x k − 1 + G k u k + w k ( 1 − 1 ) {x_k=F}_kx_{k-1}+G_ku_k+w_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1-1) xk=Fkxk−1+Gkuk+wk (1−1)
那么我们观测的先验估计为, x k ∣ k − 1 x_{k|k-1} xk∣k−1为状态变量x根据k-1时刻对k时刻的估计值:
x k ∣ k − 1 = F k x k − 1 ∣ k − 1 + G k u k + w k ( 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时刻的观测量 z k z_k zk,观测矩阵 H k H_k Hk表示状态空间到观测空间的映射, v k v_k vk为观测噪声矩阵,同样为服从均值为0,协方差矩阵为 R k R_k Rk的观测噪声矩阵。那么对于从k时刻的观测估计状态量有:
z k = H k x k + v k ( 1 − 3 ) z_k=H_kx_k+v_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1-3) zk=Hkxk+vk (1−3)
预测过程的误差可使用协方差矩阵 P k ∣ k − 1 P_{k|k-1} Pk∣k−1表示,有 P k ∣ k − 1 = C o v ( x k ∣ k − 1 , x k ∣ 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) ,可以写为:
P k ∣ k − 1 = F k P k − 1 ∣ k − 1 F k t + Q k ( 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
利用协方差矩阵的性质有:
= F k C o v ( x k − 1 ∣ k − 1 , F k x k ∣ k − 1 ) + 0 + Q k = F k [ C o v ( F k x k ∣ k − 1 , x k ∣ k − 1 ) ] T + Q k = F k [ F k C o v ( x k ∣ k − 1 ) ] T + Q k = F k P k − 1 ∣ k − 1 F k t + Q k {\ =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)+