卡尔曼滤波器和误差状态卡尔曼滤波器都可以在每轮更新内部对进行迭代,这种迭代能够大幅提升算法稳定性。本文详细分析迭代扩展卡尔曼滤波器和迭代误差状态扩展卡尔曼滤波器,并给出算法步骤和等价最优化方程。卡尔曼滤波器和误差状态卡尔曼滤波器相关知识可以参考本人先前的文章卡尔曼滤波器推导和误差状态卡尔曼滤波器推导
1、迭代扩展卡尔曼滤波器
在扩展卡尔曼滤波器中,因为观测方程展开点固定,在该展开点处进行线性化可能无法很好地近似函数整体形式,因此可以不断迭代以寻找更好的展开点。确定展开点后,即可在该处进行展开并求解系统状态的后验分布,即采用迭代扩展卡尔曼滤波器的方法估计系统状态。该过程也可看做先验后验不断交替的过程。
首先写出系统状态的先验分布
p ( x ∣ B e f o r e ) = N ( x ˇ κ − 1 , P ˇ ) p(\mathbf{x}|\mathrm{Before})=\mathcal{N}(\check{\mathbf{x}}^{\kappa-1},\check{\mathbf{P}}) p(x∣Before)=N(xˇκ−1,Pˇ)
其中 B e f o r e \mathrm{Before} Before表示从到当前时刻的当前迭代次数为止,系统所经历过的调整。
将观测方程在 ( x ˇ κ − 1 , 0 ) (\check{\mathbf{x}}^{\kappa-1},\mathbf{0}) (xˇκ−1,0)处展开
z = h ( x , v ) ≈ h ( x κ , 0 ) + H κ ( x − x ˇ κ − 1 ) + v κ ′ \mathbf{z}=\mathbf{h}(\mathbf{x},\mathbf{v})\approx\mathbf{h}(\mathbf{x}^{\kappa},\mathbf{0})+\mathbf{H}^{\kappa}(\mathbf{x}-\check{\mathbf{x}}^{\kappa-1})+{\mathbf{v}^{\kappa}}^{\prime} z=h(x,v)≈h(xκ,0)+Hκ(x−xˇκ−1)+vκ′
其中 H κ = ∂ h ( x , v ) ∂ x ∣ x ˇ κ − 1 , 0 \mathbf{H}^{\kappa}=\left.\frac{\partial{\mathbf{h}(\mathbf{x},\mathbf{v})}}{\partial\mathbf{x}}\right|_{\check{\mathbf{x}}^{\kappa-1},\mathbf{0}} Hκ=∂x∂h(x,v)
xˇκ−1,0, v κ ′ = ∂ h ( x , v ) ∂ v ∣ x ˇ κ − 1 , 0 v ∼ N ( 0 , Q κ ′ ) {\mathbf{v}^{\kappa}}^{\prime}=\left.\frac{\partial{\mathbf{h}(\mathbf{x},\mathbf{v})}}{\partial\mathbf{v}}\right|_{\check{\mathbf{x}}^{\kappa-1},\mathbf{0}}\mathbf{v}\sim\mathcal{N}(\mathbf{0},{\mathbf{Q}^{\kappa}}^{\prime}) vκ′=∂v∂h(x,v)
xˇκ−1,0v∼N(0,Qκ′)
根据观测方程的展开方式和 ( A 4 ) \mathrm{(A4)} (A4),可得
p ( x , z ∣ B e f o r e ) = N ( [ x ˇ κ − 1 h ( x ˇ κ − 1 , 0 ) ] , [ P ˇ P ˇ H κ T H κ P ˇ H κ P ˇ H κ T + Q κ ′ ] ) \begin{align*} p(\mathbf{x},\mathbf{z}|\mathrm{Before}) =\mathcal{N}\left(\begin{bmatrix}\check{\mathbf{x}}^{\kappa-1}\\\mathbf{h}(\check{\mathbf{x}}^{\kappa-1},\mathbf{0})\end{bmatrix},\begin{bmatrix}\check{\mathbf{P}}&\check{\mathbf{P}}{\mathbf{H}^{\kappa}}^{T}\\{\mathbf{H}^{\kappa}}\check{\mathbf{P}}&{\mathbf{H}^{\kappa}}\check{\mathbf{P}}{\mathbf{H}^{\kappa}}^{T}+{\mathbf{Q}^{\kappa}}^{\prime}\end{bmatrix}\right) \end{align*} p(x,z∣Before)=N([xˇκ−1h(xˇκ−1,0)],[PˇHκPˇPˇHκTHκPˇHκT+Qκ′])
因此由高斯推断 ( A 5 ) \mathrm{(A5)} (A5)可得
p ( x ∣ z , B e f o r e ) = N ( x ^ κ , P ^ κ ) = N ( x ˇ κ − 1 + P ˇ H κ T ( H κ P ˇ H κ T + Q κ ′ ) ( z − h ( x ˇ κ − 1 , 0 ) ) , ( I − P ˇ H κ T ( H κ P ˇ H κ T + Q κ ′ ) H κ ) P ˇ ) \begin{align*} p(\mathbf{x}|\mathbf{z},\mathrm{Before})=\mathcal{N}(\hat{\mathbf{x}}^{\kappa},\hat{\mathbf{P}}^{\kappa})=\mathcal{N}(&\check{\mathbf{x}}^{\kappa-1}+\check{\mathbf{P}}{\mathbf{H}^{\kappa}}^{T}({\mathbf{H}^{\kappa}}\check{\mathbf{P}}{\mathbf{H}^{\kappa}}^{T}+{\mathbf{Q}^{\kappa}}^{\prime})(\mathbf{z}-\mathbf{h}(\check{\mathbf{x}}^{\kappa-1},\mathbf{0})),(\mathbf{I}-\check{\mathbf{P}}{\mathbf{H}^{\kappa}}^{T}({\mathbf{H}^{\kappa}}\check{\mathbf{P}}{\mathbf{H}^{\kappa}}^{T}+{\mathbf{Q}^{\kappa}}^{\prime}){\mathbf{H}^{\kappa}})\check{\mathbf{P}}) \end{align*} p(x∣z,Before)=N(x^κ,P^κ)=N(xˇκ−1+PˇHκT(HκPˇHκT+Qκ′)(z−h(xˇκ−1,0)),(I−PˇHκT(Hκ