目录
0 前言
扩展卡尔曼滤波(Extended Kalman Filter,EKF)是标准卡尔曼滤波在非线性情形下的一种扩展形式,它是一种高效率的递归滤波器(自回归滤波器)。
EKF 的基本思想是利用泰勒级数展开将非线性系统的状态转移函数 f ( x ) f(x) f(x) 和(或)观测函数 h ( x ) h(x) h(x) 线性化,然后采用卡尔曼滤波框架对信号进行滤波,因此它是一种次优滤波。
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 扩展卡尔曼滤波的假设
扩展卡尔曼滤波以贝叶斯滤波为理论基础,并作了五个前提假设。
2.1 与卡尔曼滤波相同的假设
(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 的正态分布
R ∼ N ( 0 , σ R 2 ) R \sim \mathcal{N}(0, \ \sigma_R^2) R∼N(0, σR2)
2.2 与卡尔曼滤波不同的假设
(5) 假设五:状态转移函数和(或)观测函数为非线性函数
在卡尔曼滤波的前提假设中,认为状态方程中的状态转移函数 f ( x ) f(x) f(x) 以及观测方程中的观测函数 h ( x ) h(x) h(x) 均为线性函数。基于这种线性假设,存在常数或常矩阵 F F F,使得 f ( x ) f(x) f(x) 可以写成卡尔曼滤波中的线性形式,存在常数或常矩阵 H H H,使得 h ( x ) h(x) h(x) 也可以写成卡尔曼滤波中的线性形式。
不同于标准卡尔曼滤波,扩展卡尔曼滤波处理的是非线性系统,假设系统的状态转移函数和(或)观测函数为非线性函数。
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} Xk−1 的后验概率密度函数为:
f X k − 1 + = 1 σ k − 1 + 2 π e − ( x − μ k − 1 + ) 2 2 σ k − 1 + 2 f_{X_{k-1}}^+=\frac{1}{\sigma_{k-1}^+\sqrt{2\pi}}e^{-\frac{(x-\mu_{k-1}^+)^2}{2{\sigma_{k-1}^+}^2}} fXk−1+=σk−1+2π1e−2σk−1+2(x−μk−1+)2
对状态转移函数 f ( x ) f(x) f(x) 在 X k − 1 X_{k-1} Xk−1 的后验估计处 x ^ k − 1 + \hat{x}_{k-1}^+ x^k−1+(即 μ k − 1 + \mu_{k-1}^+ μk−1+)进行一阶泰勒级数展开:
f ( X k − 1 ) = f ( x ^ k − 1 + ) + f ′ ( x ^ k − 1 + ) ( X k − 1 − x ^ k − 1 + ) + o ( X k − 1 − x ^ k − 1 + ) f(X_{k-1})=f(\hat{x}_{k-1}^+)+f'(\hat{x}_{k-1}^+)(X_{k-1}-\hat{x}_{k-1}^+)+o(X_{k-1}-\hat{x}_{k-1}^+) f(Xk−1)=f(x^k−1+)+f′(x^k−1+)(Xk−1−x^k−1+)+o(Xk−1−x^k−1+)
其中, o ( X k − 1 − x ^ k − 1 + ) o(X_{k-1}-\hat{x}_{k-1}^+) o(Xk−1−x^k−1+) 为高阶无穷小量,对其进行舍弃,便可得到状态转移函数 f ( x ) f(x) f(x) 的近似形式:
f ( X k − 1 ) ≈ f ( x ^ k − 1 + ) + f ′ ( x ^ k − 1 + ) ( X k − 1 − x ^ k − 1 + ) ≈ f ′ ( x ^ k − 1 + ) ( X k − 1 ) + [ f ( x ^ k − 1 + ) − f ′ ( x ^ k − 1 + ) x ^ k − 1 + ] \begin{aligned} f(X_{k-1}) & \approx f(\hat{x}_{k-1}^+)+f'(\hat{x}_{k-1}^+)(X_{k-1}-\hat{x}_{k-1}^+) \\ & \approx f'(\hat{x}_{k-1}^+)(X_{k-1})+[f(\hat{x}_{k-1}^+)-f'(\hat{x}_{k-1}^+)\hat{x}_{k-1}^+] \end{aligned} f(Xk−1)≈f(x^k−1+)+f′(x^k−1+)(Xk−1−x^k−1+)≈f′(x^k−1+)(Xk−1)+[f(x^k−1+)−f′(x^k−1+)x^k−1+]
令 F j = f ′ ( x ^ k − 1 + ) , C F = f ( x ^ k − 1 + ) − f ′ ( x ^ k − 1 + ) x ^ k − 1 + F_j=f'(\hat{x}_{k-1}^+), \quad C_F=f(\hat{x}_{k-1}^+)-f'(\hat{x}_{k-1}^+)\hat{x}_{k-1}^+ Fj=f′(x^k−1+),CF=f(x^k−1+)−f′(x^k−1+)x^k−1+,则近似有:
f ( X k − 1 ) ≈ F j ∗ X k − 1 + C F f(X_{k-1}) \approx F_j*X_{k-1}+C_F f(Xk−1)≈Fj∗Xk−1+CF
结合假设三与上式, k k k 时刻状态量 X k X_k Xk 的先验概率密度函数为:
f X k − ( x ) = ∫ − ∞ + ∞ f Q k [ x − f ( v ) ] f X k − 1 + ( v ) d v = ∫ − ∞ + ∞ 1 σ Q k 2 π e − ( x − F j ∗ v − C F ) 2 2 σ Q k 2 ∗ 1 σ k − 1 + 2 π e − ( x − μ k − 1 + ) 2 2 σ k − 1 + 2 d v \begin{aligned} f_{X_k}^-(x) & = \int_{-\infty}^{+\infty}f_{Q_k}[x-f(v)]f_{X_{k-1}}^+(v)\mathrm{d}v \\ & = \int_{-\infty}^{+\infty}\frac{1}{\sigma_{Q_k}\sqrt{2\pi}}e^{-\frac{(x-F_j*v-C_F)^2}{2{\sigma_{Q_k}}^2}}*\frac{1}{\sigma_{k-1}^+\sqrt{2\pi}}e^{-\frac{(x-\mu_{k-1}^+)^2}{2{\sigma_{k-1}^+}^2}}\mathrm{d}v \end{aligned} fXk−(x)=∫−∞+∞fQk[x−f(v)]fXk−1+(v)dv=∫−∞+∞σQk