0 前言
卡尔曼滤波(Kalman Filter,KF)以贝叶斯滤波为理论基础,并通过假设状态量随机变量(以下简称状态量)、观测量均服从正态分布,假设过程噪声、观测噪声均服从均值为 0 的正态分布,以及假设状态转移函数和观测函数均为线性函数,实现对连续型随机过程的递推状态估计。简言之,卡尔曼滤波是在贝叶斯滤波框架下求解线性高斯问题。
1 贝叶斯滤波的三大概率密度函数
在此前的文章《从概率到贝叶斯滤波》中,已经讲到贝叶斯滤波的先验概率密度函数、似然概率密度函数和后验概率密度函数:
(1) 先验概率密度函数
f X k − ( x ) = ∫ − ∞ + ∞ f Q k [ x − f ( v ) ] f X k − 1 + ( v ) d v f_{X_k}^-(x)=\int_{-\infty}^{+\infty}f_{Q_k}[x-f(v)]f_{X_{k-1}}^+(v)\mathrm{d}v fXk−(x)=∫−∞+∞fQk[x−f(v)]fXk−1+(v)dv
(2) 似然概率密度函数
f Y k ∣ X k ( y k ∣ x ) = f R k [ y k − h ( x ) ] f_{Y_k|X_k}(y_k \ | \ x) = f_{R_k}[y_k-h(x)] fYk∣Xk(yk ∣ x)=fRk[yk−h(x)]
(3) 后验概率密度函数
f X k + ( x ) = η k ⋅ f R k [ y k − h ( x ) ] ⋅ f X k − ( x ) f_{X_k}^+(x)=\eta_k·f_{R_k}[y_k-h(x)]·f_{X_k}^-(x) fXk+(x)=ηk⋅fRk[yk−h(x)]⋅fXk−(x)
其中,后验概率密度函数中的归一化常数 η k \eta_k ηk 为:
η k = { ∫ − ∞ + ∞ f R k [ y k − h ( x ) ] f X k − ( x ) d x } − 1 \eta_k=\left\{\int_{-\infty}^{+\infty}f_{R_k}[y_k-h(x)]f_{X_k}^-(x)\mathrm{d}x\right\}^{-1} ηk={
∫−∞+∞fRk[yk−h(x)]fXk−(x)dx}−1
2 卡尔曼滤波的假设
卡尔曼滤波以贝叶斯滤波为理论基础,并作了六个前提假设:
(1) 假设一:状态量服从正态分布
X ∼ N ( μ X , σ X 2 ) X \sim \mathcal{N}(\mu_X, \ \sigma_X^2) X∼N(μX, σX2)
(2) 假设二:观测量服从正态分布
Y ∼ N ( μ Y , σ Y 2 ) Y \sim \mathcal{N}(\mu_Y, \ \sigma_Y^2) Y∼N(μY, σY2)
(3) 假设三:过程噪声服从均值为 0 的正态分布
Q ∼ N ( 0 , σ Q 2 ) Q \sim \mathcal{N}(0, \ \sigma_Q^2) Q∼N(0, σQ2)
(4) 假设四:观测噪声服从均值为 0 的正态分布
Q ∼ N ( 0 , σ R 2 ) Q \sim \mathcal{N}(0, \ \sigma_R^2) Q∼N(0, σR2)
(5) 假设五:状态转移函数为线性函数
f ( X k ) = F ∗ X k − 1 + B ∗ u k f(X_k)=F*X_{k-1}+B*u_k f(Xk)=F∗Xk−1+B∗uk
其中, F F F 为状态转移比例项,对于单一状态量的卡尔曼滤波中, F F F 为一常数; B B B 为控制比例项, u k u_k uk 为控制量, B B B 和 u k u_k uk 的乘积可视为线性状态转移函数中的截距项。在简单的系统中,常常没有控制项 B B B 和 u k u_k uk。
(6) 假设六:观测函数为线性函数
h ( X k ) = H ∗ X k h(X_k)=H*X_k h(Xk)=H∗Xk
H H H 为观测比例项,对于单一状态量的卡尔曼滤波中, H H H 为一常数。
3 卡尔曼滤波的公式推导
3.1 预测步的两个公式
根据假设一, k − 1 k-1 k−1 时刻状态量 X k − 1 X_{k-1} Xk−1 服从均值为 μ k − 1 + \mu_{k-1}^+ μk−1+,方差为 σ k − 1 + 2 {\sigma_{k-1}^+}^2 σk−1+2 的正态分布:
X k − 1 ∼ N ( μ k − 1 + , σ k − 1 + 2 ) X_{k-1} \sim \mathcal{N}(\mu_{k-1}^+, \ {\sigma_{k-1}^+}^2) Xk−1∼N(μk−1+, σk−1+2)
X k − 1 X_{k-1}