【ESKF】(一)IMU运动学方程离散化

本文介绍了误差状态在EKF(Extended Kalman Filter)中的关键作用,包括真值、无噪声状态、误差状态的定义,以及连续和离散时间系统的运动学模型推导。重点讲解了如何通过一阶泰勒展开离散化误差状态方程,展示了EKF预测阶段的方程及其特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:《Quaternion kinematics for error-state kalman filter》


1. 三种状态

  1. true-state
    真实状态值,包含高斯噪声,用于EKF作为状态变量使用
  2. nominal-state
    • 无(不考虑)噪声的状态值,可以是估计值(不考虑噪声)、预测值(不考虑噪声)
    • 在预测阶段,由高频的IMU测量值预测得到当前的nominal-state x\mathbf xx,nominal state没有考虑噪声项,因此会存在累计误差,这些误差被堆积到error-state δx\mathbf{\delta x}δx中,
  3. error-state
    • 误差状态,符合零均值高斯分布,用于ESKF
      true-state = nominal-state + error-state
    • ESKF中dynamic, control, measurement matrices由nominal-state计算得到

2. 连续时间的系统运动学(System kinematics in continuous time)

  1. The true-state kinematics
    p˙t=vtv˙t=Rt(am−abt−an)+gtq˙t=12qt⊗(ωm−ωbt−ωn)a˙bt=awω˙bt=ωwg˙t=0 \begin{aligned} \dot{\mathbf{p}}_{t} &=\mathbf{v}_{t} \\ \dot{\mathbf{v}}_{t} &=\mathbf{R}_{t}\left(\mathbf{a}_{m}-\mathbf{a}_{b t}-\mathbf{a}_{n}\right)+\mathbf{g}_{t} \\ \dot{\mathbf{q}}_{t} &=\frac{1}{2} \mathbf{q}_{t} \otimes\left(\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b t}-\boldsymbol{\omega}_{n}\right) \\ \dot{\mathbf{a}}_{b t} &=\mathbf{a}_{w} \\ \dot{\boldsymbol{\omega}}_{b t} &=\boldsymbol{\omega}_{w} \\ \dot{\mathbf{g}}_{t} &=0 \end{aligned} p˙tv˙tq˙ta˙btω˙btg˙t=vt=Rt(amabtan)+gt=21qt(ωmωbtωn)=aw=ωw=0
  2. The nominal-state kinematics
    p˙=vv˙=R(am−ab)+gq˙=12q⊗(ωm−ωb)a˙b=0ω˙b=0g˙=0 \begin{aligned} \dot{\mathbf{p}} &=\mathbf{v} \\ \dot{\mathbf{v}} &=\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)+\mathbf{g} \\ \dot{\mathbf{q}} &=\frac{1}{2} \mathbf{q} \otimes\left(\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right) \\ \dot{\mathbf{a}}_{b} &=0 \\ \dot{\boldsymbol{\omega}}_{b} &=0 \\ \dot{\mathrm{g}} &=0 \end{aligned} p˙v˙q˙a˙bω˙bg˙=v=R(amab)+g=21q(ωmωb)=0=0=0
  3. The error-state kinematics
    δp˙=δvδv˙=−R[am−ab]×δθ−Rδab+δg−Ranδθ˙=−[ωm−ωb]×δθ−δωb−ωnδa˙b=awδω˙b=ωwδg˙=0 \begin{aligned} \dot{\delta \mathbf{p}} &=\delta \mathbf{v} \\ \dot{\delta \mathbf{v}} &=-\mathbf{R}\left[\mathbf{a}_{m}-\mathbf{a}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\mathbf{R} \delta \mathbf{a}_{b}+\delta \mathbf{g}-\mathbf{R a}_{n} \\ \dot{\delta \boldsymbol{\theta}} &=-\left[\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\delta \boldsymbol{\omega}_{b}-\boldsymbol{\omega}_{n} \\ \dot{\delta \mathbf{a}}_{b} &=\mathbf{a}_{w} \\ \delta \dot{\boldsymbol{\omega}}_{b} &=\boldsymbol{\omega}_{w} \\ \dot{\delta \mathbf{g}} &=0 \end{aligned} δp˙δv˙δθ˙δa˙bδω˙bδg˙=δv=R[amab]×δθRδab+δgRan=[ωmωb]×δθδωbωn=aw=ωw=0

3. 离散时间的系统运动学(System kinematics in discrete time)

连续时间的系统运动学方程是微分方程,离散化后转换成差分方程,所谓离散化,其实本质就是积分

  1. The nominal state kinematics
    此差分方程用于预测系统状态
    p←p+vΔt+12(R(am−ab)+g)Δt2v←v+(R(am−ab)+g)Δtq←q⊗q{(ωm−ωb)Δt}ab←abωb←ωbg←g \begin{aligned} \mathbf{p} & \leftarrow \mathbf{p}+\mathbf{v} \Delta t+\frac{1}{2}\left(\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)+\mathbf{g}\right) \Delta t^{2} \\ \mathbf{v} & \leftarrow \mathbf{v}+\left(\mathbf{R}\left(\mathbf{a}_{m}-\mathbf{a}_{b}\right)+\mathbf{g}\right) \Delta t \\ \mathbf{q} & \leftarrow \mathbf{q} \otimes \mathbf{q}\left\{\left(\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right) \Delta t\right\} \\ \mathbf{a}_{b} & \leftarrow \mathbf{a}_{b} \\ \boldsymbol{\omega}_{b} & \leftarrow \boldsymbol{\omega}_{b} \\ \mathbf{g} & \leftarrow \mathbf{g} \end{aligned} pvqabωbgp+vΔt+21(R(amab)+g)Δt2v+(R(amab)+g)Δtqq{(ωmωb)Δt}abωbg
  2. The error-state kinematics
    此差分方程用于协方差传递
    δp←δp+δvΔtδv←δv+(−R[am−ab]×δθ−Rδab+δg)Δt+viδθ←R⊤{(ωm−ωb)Δt}δθ−δωbΔt+θiδab←δab+aiδωb←δωb+ωiδg←δg \begin{aligned} \delta \mathbf{p} & \leftarrow \delta \mathbf{p}+\delta \mathbf{v} \Delta t \\ \delta \mathbf{v} & \leftarrow \delta \mathbf{v}+\left(-\mathbf{R}\left[\mathbf{a}_{m}-\mathbf{a}_{b}\right]_{\times} \delta \boldsymbol{\theta}-\mathbf{R} \delta \mathbf{a}_{b}+\delta \mathbf{g}\right) \Delta t+\mathbf{v}_{\mathbf{i}} \\ \delta \boldsymbol{\theta} & \leftarrow \mathbf{R}^{\top}\left\{\left(\boldsymbol{\omega}_{m}-\boldsymbol{\omega}_{b}\right) \Delta t\right\} \delta \boldsymbol{\theta}-\delta \boldsymbol{\omega}_{b} \Delta t+\boldsymbol{\theta}_{\mathbf{i}} \\ \delta \mathbf{a}_{b} & \leftarrow \delta \mathbf{a}_{b}+\mathbf{a}_{\mathbf{i}} \\ \delta \boldsymbol{\omega}_{b} & \leftarrow \delta \boldsymbol{\omega}_{b}+\boldsymbol{\omega}_{\mathbf{i}} \\ \delta \mathbf{g} & \leftarrow \delta \mathbf{g} \end{aligned} δpδvδθδabδωbδgδp+δvΔtδv+(R[amab]×δθRδab+δg)Δt+viR{(ωmωb)Δt}δθδωbΔt+θiδab+aiδωb+ωiδg

4. 离散时间的error-state kinematics方程推导

  1. 第一步:写出连续时间的true-state kinematics
    x˙=f(x,u,w)u~∼N{0,Uc},wc∼N{0,Wc} \dot{\mathbf{x}}=f(\mathbf{x}, \mathbf{u}, \mathbf{w}) \\ \tilde{\mathbf{u}} \sim \mathcal{N}\left\{0, \mathbf{U}^{c}\right\} \quad, \quad \mathbf{w}^{c} \sim \mathcal{N}\left\{0, \mathbf{W}^{c}\right\} x˙=f(x,u,w)u~N{0,Uc},wcN{0,Wc}

    注意,区分两种噪声模型:

    • 控制信号噪声u~\tilde{\mathbf{u}}u~
      此噪声在采样时间段内认为是常量
    • 随机扰动噪声wc\mathbf{w}^{c}wc
      跟采样无关,时刻以高斯分布的形态改变(时变量),布朗运动
  2. 第二步:写出连续时间的error-state kinematics(一阶泰勒展开)
    δ˙x=Aδx+Bu~+CwA≜∂f∂δx∣x,um,B≜∂f∂u~∣x,um,C≜∂f∂w∣x,um \dot{\delta} \mathbf{x}=\mathbf{A} \delta \mathbf{x}+\mathbf{B} \tilde{\mathbf{u}}+\mathbf{C} \mathbf{w} \\ \left.\mathbf{A} \triangleq \frac{\partial f}{\partial \delta \mathbf{x}}\right|_{\mathbf{x}, \mathbf{u}_{m}} \quad,\left.\quad \mathbf{B} \triangleq \frac{\partial f}{\partial \tilde{\mathbf{u}}}\right|_{\mathbf{x}, \mathbf{u}_{m}} \quad,\left.\quad \mathbf{C} \triangleq \frac{\partial f}{\partial \mathbf{w}}\right|_{\mathbf{x}, \mathbf{u}_{m}} δ˙x=Aδx+Bu~+CwAδxfx,um,Bu~fx,um,Cwfx,um

  3. 第三步:积分得到离散时间的error-state kinematics
    δxn+1=δxn+∫nΔt(n+1)Δt(Aδx(τ)+Bu~(τ)+Cwc(τ))dτ=δxn+∫nΔt(n+1)ΔtAδx(τ)dτ+∫nΔt(n+1)ΔtBu~(τ)dτ+∫nΔt(n+1)ΔtCwc(τ)dτ \begin{aligned} \delta \mathbf{x}_{n+1} &=\delta \mathbf{x}_{n}+\int_{n \Delta t}^{(n+1) \Delta t}\left(\mathbf{A} \delta \mathbf{x}(\tau)+\mathbf{B} \tilde{\mathbf{u}}(\tau)+\mathbf{C} \mathbf{w}^{c}(\tau)\right) d \tau \\ &=\delta \mathbf{x}_{n}+\int_{n \Delta t}^{(n+1) \Delta t} \mathbf{A} \delta \mathbf{x}(\tau) d \tau+\int_{n \Delta t}^{(n+1) \Delta t} \mathbf{B} \tilde{\mathbf{u}}(\tau) d \tau+\int_{n \Delta t}^{(n+1) \Delta t} \mathbf{C} \mathbf{w}^{c}(\tau) d \tau \end{aligned} δxn+1=δxn+nΔt(n+1)Δt(Aδx(τ)+Bu~(τ)+Cwc(τ))dτ=δxn+nΔt(n+1)ΔtAδx(τ)dτ+nΔt(n+1)ΔtBu~(τ)dτ+nΔt(n+1)ΔtCwc(τ)dτ

    分三部分进行积分:

    • dynamic部分
      δxn+∫nΔt(n+1)ΔtAδx(τ)dτ=Φ⋅δxn \delta \mathbf{x}_{n}+\int_{n \Delta t}^{(n+1) \Delta t} \mathbf{A} \delta \mathbf{x}(\tau) d \tau=\Phi \cdot \delta \mathbf{x}_{n} δxn+nΔt(n+1)ΔtAδx(τ)dτ=Φδxn

      其中,Φ=eAΔt\Phi=e^{\mathbf{A} \Delta t}Φ=eAΔt可以通过闭式积分或者近似积分的方式得到

    • 一旦被采样,在积分阶段采样噪声不再改变(该噪声已经在采样时成为确定),相当于常量进行积分
      ∫nΔt(n+1)ΔtBu~(τ)dτ=BΔtu~n \int_{n \Delta t}^{(n+1) \Delta t} \mathbf{B} \tilde{\mathbf{u}}(\tau) d \tau=\mathbf{B} \Delta t \tilde{\mathbf{u}}_{n} nΔt(n+1)ΔtBu~(τ)dτ=BΔtu~n

    • bias随机游走噪声属于布朗运动,在积分阶段也是时变的,所以需要对高斯分布进行积分:
      wn≜∫nΔt(n+1)Δtw(τ)dτ,wn∼N{0,W}, with W=WcΔt \mathbf{w}_{n} \triangleq \int_{n \Delta t}^{(n+1) \Delta t} \mathbf{w}(\tau) d \tau \quad, \quad \mathbf{w}_{n} \sim \mathcal{N}\{0, \mathbf{W}\} \quad, \quad \text { with } \mathbf{W}=\mathbf{W}^{c} \Delta t wnnΔt(n+1)Δtw(τ)dτ,wnN{0,W}, with W=WcΔt

  4. 最终结果:
     Description  Continuous time t Discrete time nΔt state x˙=fc(x,u,w)xn+1=f(xn,un,wn) error-state δx˙=Aδx+Bu~+Cwδxn+1=Fxδxn+Fuu~n+Fwwn system/ transition matrix AFx=Φ=eAΔt control matrix BFu=BΔt perturbation matrix CFw=C control covariance UcU=Uc perturbation covariance WcW=WcΔt \begin{array}{|c|c|c|} \hline \text { Description } & \text { Continuous time } t & \text { Discrete time } n \Delta t \\ \hline \hline \text { state } & \dot{\mathbf{x}}=f^{c}(\mathbf{x}, \mathbf{u}, \mathbf{w}) & \mathbf{x}_{n+1}=f\left(\mathbf{x}_{n}, \mathbf{u}_{n}, \mathbf{w}_{n}\right) \\ \text { error-state } & \dot{\delta \mathbf{x}}=\mathbf{A} \delta \mathbf{x}+\mathbf{B \tilde{u}}+\mathbf{C} \mathbf{w} & \delta \mathbf{x}_{n+1}=\mathbf{F}_{\mathbf{x}} \delta \mathbf{x}_{n}+\mathbf{F}_{\mathbf{u}} \tilde{\mathbf{u}}_{n}+\mathbf{F}_{\mathbf{w}} \mathbf{w}_{n} \\ \hline \text { system/ transition matrix } & \mathbf{A} & \mathbf{F}_{\mathbf{x}}=\Phi=e^{\mathbf{A} \Delta t} \\ \text { control matrix } & \mathbf{B} & \mathbf{F}_{\mathbf{u}}=\mathbf{B} \Delta t \\ \text { perturbation matrix } & \mathbf{C} & \mathbf{F}_{\mathbf{w}}=\mathbf{C} \\ \hline \text { control covariance } & \mathbf{U}^{c} & \mathbf{U}=\mathbf{U}^{c} \\ \text { perturbation covariance } & \mathbf{W}^{c} & \mathbf{W}=\mathbf{W}^{c} \Delta t \\ \hline \end{array}  Description  state  error-state  system/ transition matrix  control matrix  perturbation matrix  control covariance  perturbation covariance  Continuous time tx˙=fc(x,u,w)δx˙=Aδx+Bu~+CwABCUcWc Discrete time nΔtxn+1=f(xn,un,wn)δxn+1=Fxδxn+Fuu~n+FwwnFx=Φ=eAΔtFu=BΔtFw=CU=UcW=WcΔt

    δxn+1=Fxδxn+Fuu~n+Fwwnu~n∼N{0,U},wn∼N{0,W} \delta \mathbf{x}_{n+1}=\mathbf{F}_{\mathbf{x}} \delta \mathbf{x}_{n}+\mathbf{F}_{\mathbf{u}} \tilde{\mathbf{u}}_{n}+\mathbf{F}_{\mathbf{w}} \mathbf{w}_{n} \\ \tilde{\mathbf{u}}_{n} \sim \mathcal{N}\{0, \mathbf{U}\} \quad, \quad \mathbf{w}_{n} \sim \mathcal{N}\{0, \mathbf{W}\} δxn+1=Fxδxn+Fuu~n+Fwwnu~nN{0,U},wnN{0,W}

    EKF预测阶段的两个方程:
    δx^n+1=Fxδ^xnPn+1=FxPnFx⊤+FuUFu⊤+FwWFw⊤=eAΔtPn(eAΔt)⊤+Δt2BUcB⊤+ΔtCWcC⊤ \begin{aligned} \hat{\delta \mathbf{x}}_{n+1} &=\mathbf{F}_{\mathbf{x}} \hat{\delta} \mathbf{x}_{n} \\ \mathbf{P}_{n+1} &=\mathbf{F}_{\mathbf{x}} \mathbf{P}_{n} \mathbf{F}_{\mathbf{x}}^{\top}+\mathbf{F}_{\mathbf{u}} \mathbf{U} \mathbf{F}_{\mathbf{u}}^{\top}+\mathbf{F}_{\mathbf{w}} \mathbf{W} \mathbf{F}_{\mathbf{w}}^{\top} \\ &=e^{\mathbf{A} \Delta t} \mathbf{P}_{n}\left(e^{\mathbf{A} \Delta t}\right)^{\top}+\Delta t^{2} \mathbf{B} \mathbf{U}^{c} \mathbf{B}^{\top}+\Delta t \mathbf{C} \mathbf{W}^{c} \mathbf{C}^{\top} \end{aligned} δx^n+1Pn+1=Fxδ^xn=FxPnFx+FuUFu+FwWFw=eAΔtPn(eAΔt)+Δt2BUcB+ΔtCWcC

    注意观察:

    • the dynamic error term is exponential
    • the measurement error term is quadratic
    • and the perturbation error term is linear

5. ESKF中需要进行两次积分

Integration needs to be done for the following sub-systems

  • The nominal state
  • The error-state
    • The deterministic part: state dynamics and control
    • The stochastic part: noise and perturbations

@leatherwang
二零二一年十月三日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值