迭代扩展卡尔曼滤波IEKF

本文深入探讨了迭代扩展卡尔曼滤波(IEKF)的预测和更新步骤,指出其与扩展卡尔曼滤波(EKF)的主要区别在于线性化的工作点。IEKF通过迭代过程提高线性化的准确性,尤其是在非线性模型中表现更优。在每次迭代中,使用前一次迭代的后验均值作为新的工作点,直至收敛。该方法对于提高滤波效果和估计精度具有重要意义。
摘要由CSDN通过智能技术生成

迭代扩展卡尔曼滤波IEKF

预测

迭代扩展卡尔曼滤波(IEKF)的预测部分和扩展卡尔曼滤波基本相同。直接给出结论:

x ˇ k = f ( x ^ k − 1 , v k , 0 ) \check{\boldsymbol{x}}_{k} =\boldsymbol{f}\left(\hat{\boldsymbol{x}}_{k-1}, \boldsymbol{v}_{k}, \mathbf{0}\right) xˇk=f(x^k1,vk,0)

P ˇ k = F k − 1 P ^ k − 1 F k − 1 T + Q k ′ \check{\boldsymbol{P}}_{k} =\boldsymbol{F}_{k-1} \hat{\boldsymbol{P}}_{k-1} \boldsymbol{F}_{k-1}^{\mathrm{T}}+\boldsymbol{Q}_{k}^{\prime} Pˇk=Fk1P^k1Fk1T+Qk

更新

非线性观测模型为:

y k = g ( x k , n k ) \boldsymbol{y}_{k}=g\left(\boldsymbol{x}_{k}, \boldsymbol{n}_{k}\right) yk=g(xk,nk)

对其中任意一个点 x o p , k \boldsymbol{x}_{\mathrm{op}, k} xop,k 进行线性化,可得:

g ( x k , n k ) ≈ y o p , k + G k ( x k − x o p , k ) + n k ′ \boldsymbol{g}\left(\boldsymbol{x}_{k}, \boldsymbol{n}_{k}\right) \approx \boldsymbol{y}_{\mathrm{op}, k}+\boldsymbol{G}_{k}\left(\boldsymbol{x}_{k}-\boldsymbol{x}_{\mathrm{op}, k}\right)+\boldsymbol{n}_{k}^{\prime} g(xk,nk)yop,k+Gk(xkxop,k)+nk

其中:

  • y o p , k = g ( x o p , k , 0 ) \boldsymbol{y}_{\mathrm{op}, k}=\boldsymbol{g}\left(\boldsymbol{x}_{\mathrm{op}, k}, \mathbf{0}\right) yop,k=g(xop,k,0)
  • G k = ∂ g ( x k , n k ) ∂ x k ∣ x o p , k , 0 \boldsymbol{G}_{k}=\left.\frac{\partial \boldsymbol{g}\left(\boldsymbol{x}_{k}, \boldsymbol{n}_{k}\right)}{\partial \boldsymbol{x}_{k}}\right|_{\boldsymbol{x}_{\mathrm{op}, k}, \mathbf{0}} Gk=xkg(xk,nk) xop,k,0
  • n k ′ = ∂ g ( x k , n k ) ∂ n k ∣ x o p , k , 0 n k \boldsymbol{n}_{k}^{\prime}=\left.\frac{\partial \boldsymbol{g}\left(\boldsymbol{x}_{k}, \boldsymbol{n}_{k}\right)}{\partial \boldsymbol{n}_{k}}\right|_{\boldsymbol{x}_{\mathrm{op}, k}, \mathbf{0}} \boldsymbol{n}_{k} nk=nkg(xk,nk) xop,k,0nk

任意一个点 x o p , k \boldsymbol{x}_{\mathrm{op}, k} xop,k 进行线性化,可得:

需要注意的是,观测模型和雅可比矩阵均在 x o p , k \boldsymbol{x}_{\mathrm{op}, k} xop,k 处计算。(在EKF中, x o p , k = x ˇ k \boldsymbol{x}_{\mathrm{op}, k}=\check{\boldsymbol{x}}_{k} xop,k=xˇk

使用上面的线性化模型,我们可以将时刻 k k k 处的状态和测量的联合概率近似为高斯分布,即:

p ( x k , y k ∣ x ˇ 0 , v 1 : k , y 0 : k − 1 ) ≈ N ( [ μ x , k μ y , k ] , [ Σ x x , k Σ x y , k Σ y x , k Σ y y , k ] ) = N ( [ x ˇ k y o p , k + G k ( x ˇ k − x o p , k ) ] , [ P ˇ k P ˇ k G k T G k P ˇ k G k P ˇ k G k T + R k ′ ] ) \begin{aligned}& p\left(\boldsymbol{x}_{k}, \boldsymbol{y}_{k} \mid \check{\boldsymbol{x}}_{0}, \boldsymbol{v}_{1: k}, \boldsymbol{y}_{0: k-1}\right) \approx \mathcal{N}\left(\left[\begin{array}{c}\boldsymbol{\mu}_{x, k} \\\boldsymbol{\mu}_{y, k}\end{array}\right],\left[\begin{array}{cc}\boldsymbol{\Sigma}_{x x, k} & \boldsymbol{\Sigma}_{x y, k} \\\boldsymbol{\Sigma}_{y x, k} & \boldsymbol{\Sigma}_{y y, k}\end{array}\right]\right) \\=& \mathcal{N}\left(\left[\begin{array}{cc}\check{\boldsymbol{x}}_{k} \\\boldsymbol{y}_{\mathrm{op}, k}+\boldsymbol{G}_{k}\left(\check{\boldsymbol{x}}_{k}-\boldsymbol{x}_{\mathrm{op}, k}\right)\end{array}\right],\left[\begin{array}{cc}\check{\boldsymbol{P}}_{k} & \check{\boldsymbol{P}}_{k}\boldsymbol{G}_{k}^{\mathrm{T}} \\\boldsymbol{G}_{k} \check{\boldsymbol{P}}_{k} & \boldsymbol{G}_{k} \check{\boldsymbol{P}}_{k} \boldsymbol{G}_{k}^{\mathrm{T}}+\boldsymbol{R}_{k}^{\prime}\end{array}\right]\right)\end{aligned} =p(xk,ykxˇ0,v1:k,y0:k1)N([μx,kμy,k],[Σxx,kΣyx,kΣxy,kΣyy,k])N([xˇkyop,k+Gk(xˇkxop,k)],[PˇkGkPˇkPˇkGkTGkPˇkGkT+Rk])

如果测量值 y k \boldsymbol{y}_{k} yk 已知,我们可以利用高斯推断得到 x k \boldsymbol{x}_{k} xk 的条件概率密度(即后验):

p ( x k ∣ x ˇ 0 , v 1 : k , y 0 : k ) = N ( μ x , k + Σ x y , k Σ y y , k − 1 ( y k − μ y , k ) ⏟ x ^ k , Σ x x , k − Σ x y , k Σ y y , k − 1 Σ y x , k ⏟ P ^ k ) \begin{aligned}& p\left(\boldsymbol{x}_{k} \mid \check{\boldsymbol{x}}_{0}, \boldsymbol{v}_{1: k}, \boldsymbol{y}_{0: k}\right) \\=& \mathcal{N}(\underbrace{\boldsymbol{\mu}_{x, k}+\boldsymbol{\Sigma}_{x y, k} \boldsymbol{\Sigma}_{y y, k}^{-1}\left(\boldsymbol{y}_{k}-\boldsymbol{\mu}_{y, k}\right)}_{\hat{\boldsymbol{x}}_{k}}, \underbrace{\boldsymbol{\Sigma}_{x x, k}-\boldsymbol{\Sigma}_{x y, k} \boldsymbol{\Sigma}_{y y, k}^{-1} \boldsymbol{\Sigma}_{y x, k}}_{\hat{\boldsymbol{P}}_{k}})\end{aligned} =p(xkxˇ0,v1:k,y0:k)N(x^k μx,k+Σxy,kΣyy,k1(ykμy,k),P^k Σxx,kΣxy,kΣyy,k1Σyx,k)

K k = Σ x y , k Σ y y , k − 1 = P ˇ k G k T ( G k P ˇ k G k T + R k ′ ) − 1 \boldsymbol{K}_{k}=\boldsymbol{\Sigma}_{x y,k} \boldsymbol{\Sigma}_{y y,k}^{-1}=\check{\boldsymbol{P}}_{k} \boldsymbol{G}_{k}^{\mathrm{T}}\left(\boldsymbol{G}_{k} \check{\boldsymbol{P}}_{k} \boldsymbol{G}_{k}^{\mathrm{T}}+\boldsymbol{R}_{k}^{\prime}\right)^{-1} Kk=Σxy,kΣyy,k1=PˇkGkT(GkPˇkGkT+Rk)1(卡尔曼增益),则得到:

P ^ k = ( 1 − K k G k ) P ˇ k \hat{\boldsymbol{P}}_{k} =\left(\mathbf{1}-\boldsymbol{K}_{k} \boldsymbol{G}_{k}\right) \check{\boldsymbol{P}}_{k} P^k=(1KkGk)Pˇk

x ^ k = x ˇ k + K k ( y k − y o p , k − G k ( x ˇ k − x o p , k ) ) \hat{\boldsymbol{x}}_{k} =\check{\boldsymbol{x}}_{k}+\boldsymbol{K}_{k}\left(\boldsymbol{y}_{k}-\boldsymbol{y}_{\mathrm{op}, k}-\boldsymbol{G}_{k}\left(\check{\boldsymbol{x}}_{k}-\boldsymbol{x}_{\mathrm{op}, k}\right)\right) x^k=xˇk+Kk(ykyop,kGk(xˇkxop,k))

可以看出,IEKF中的卡尔曼增益和更新方程与EKF非常相似,唯一的区别在于线性化的工作点。如果将线性化的工作点设置为预测先验的均值(即 x o p , k = x ˇ k \boldsymbol{x}_{\mathrm{op}, k}=\check{\boldsymbol{x}}_{k} xop,k=xˇk),那么IEKF就等价于EKF。

然而,如果我们迭代的重新计算 x ^ k \hat{\boldsymbol{x}}_{k} x^k , 并且在每一次迭代中将工作点设置为上一次迭代的后验均值(即令 x o p , k = x ^ k \boldsymbol{x}_{\mathrm{op}, k}=\hat{\boldsymbol{x}}_{k} xop,k=x^k ),将得到更好的结果。

在第一次迭代中, 我们令 x o p , k = x ˇ k \boldsymbol{x}_{\mathrm{op}, k}=\check{\boldsymbol{x}}_{k} xop,k=xˇk,这使得我们能够对更好的估计进行线性化, 从而改进每次迭代的近似程度。在迭代的过程中,若 x o p , k \boldsymbol{x}_{\mathrm{op}, k} xop,k 的改变足够小就终止迭代。

注意,卡尔曼增益方程和更新方程收敛之后,协方差方程只需要计算一次。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值