Modified Rodrigues Parameters Kalman Filter

1.系统模型

1.1 陀螺模型

ω ∗ = ω + b + η ω b ˙ = η b (1) \begin{aligned} \boldsymbol{\omega^{*}} &=\boldsymbol{\omega}+\boldsymbol{b}+\boldsymbol{\eta_{\omega}}\\ \boldsymbol{\dot{b}}&=\boldsymbol{\eta_{b}} \end{aligned}\tag{1} ωb˙=ω+b+ηω=ηb(1)

其中, ω \omega ω是真实的角速度, b b b是偏置, ω ∗ \omega^{*} ω是角速度的测量值。 η ω \eta_{\omega} ηω η b \eta_{b} ηb是零均值白噪声。

1.2 运动学模型

  待估计状态为 x = [ σ , b ] T \boldsymbol{x}=[\boldsymbol{\sigma}, \boldsymbol{b}]^{T} x=[σ,b]T,噪声为 η = [ η ω , η b ] T \eta=\left[\boldsymbol{\eta}_{\omega}, \boldsymbol{\eta}_{b}\right]^{T} η=[ηω,ηb]T
修正罗德里格参数的微分运动学方程为
σ ˙ = 1 4 B ( σ ) σ = 1 4 [ ( 1 − σ T σ ) I + 2 σ × + 2 σ σ T ] ω (2) \dot{\boldsymbol{\sigma}}=\frac{1}{4} \boldsymbol{B}(\boldsymbol{\sigma}) \boldsymbol{\sigma}=\frac{1}{4}\left[\left(1-\boldsymbol{\sigma}^{T} \boldsymbol{\sigma}\right) I+2 \boldsymbol{\sigma}^{\times}+2 \boldsymbol{\sigma} \boldsymbol{\sigma}^{T}\right] \boldsymbol{\omega}\tag{2} σ˙=41B(σ)σ=41[(1σTσ)I+2σ×+2σσT]ω(2)

根据式(2),可得待估计状态的动力学方程
x ˙ = f ( x ) + g ( x , η ) (3) \dot\boldsymbol{x}=\boldsymbol{f}(\boldsymbol{x})+\boldsymbol{g}(\boldsymbol{x}, \boldsymbol{\eta})\tag{3} x˙=f(x)+g(x,η)(3)

其中,
f ( x ) = [ 1 4 [ B ( σ ) ] ( ω ∗ − b ) 0 ] g ( x , η ) = [ − 1 4 [ B ( σ ) ] η ω η b ] (4) \begin{aligned} \boldsymbol{f}(\boldsymbol{x}) &=\left[\begin{array}{c} \frac{1}{4}[\boldsymbol{B}(\boldsymbol{\sigma})]\left(\boldsymbol{\omega}^{*}-\boldsymbol{b}\right) \\ \mathbf{0} \end{array}\right] \\ \boldsymbol{g}(\boldsymbol{x}, \boldsymbol{\eta}) &=\left[\begin{array}{c} -\frac{1}{4}[\boldsymbol{B}(\boldsymbol{\sigma})] \boldsymbol{\eta}_{\omega} \\ \boldsymbol{\eta}_{b} \end{array}\right] \end{aligned}\tag{4} f(x)g(x,η)=[41[B(σ)](ωb)0]=[41[B(σ)]ηωηb](4)

  状态估计 x ˉ \bar{\boldsymbol{x}} xˉ的传播利用无噪声的非线性运动方程:
x ˉ ˙ = f ( x ˉ ) (5) \dot{\bar{\boldsymbol{x}}}=f(\bar{\boldsymbol{x}})\tag{5} xˉ˙=f(xˉ)(5)

  EKF中,状态的协方差矩阵 [ P ] [P] [P]表明了状态的一阶不确定度。利用 δ x = x − x ˉ \delta \boldsymbol{x}=\boldsymbol{x}-\bar{\boldsymbol{x}} δx=xxˉ,对式在当前估计 x ˉ \bar{\boldsymbol{x}} xˉ处进行线性化,得到
δ x ˙ = [ F ] δ x + [ G ] η (6) \delta \dot{\boldsymbol{x}}=[F] \delta \boldsymbol{x}+[G] \boldsymbol{\eta}\tag{6} δx˙=[F]δx+[G]η(6)

其中
[ F ] = ∂ f ∂ x ∣ x = x ‾ = [ ( 1 / 2 ) [ σ ‾ ω ˉ T − ω ‾ σ ‾ T − ω ‾ × + ω ‾ T σ ‾ I ] − ( 1 / 4 ) B ( σ ‾ ) 0 0 ] (7) [F] =\left.\frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}}\right|_{\boldsymbol{x}=\overline{\boldsymbol{x}}}=\left[\begin{array}{cc} (1 / 2)\left[\overline{\boldsymbol{\sigma}} \bar{\boldsymbol{\omega}}^{T}-\overline{\boldsymbol{\omega}} \overline{\boldsymbol{\sigma}}^{T}-\overline{\boldsymbol{\omega}}^{\times}+\overline{\boldsymbol{\omega}}^{T} \overline{\boldsymbol{\sigma}} \boldsymbol{I}\right] & -(1 / 4) \boldsymbol{B}(\overline{\boldsymbol{\sigma}}) \\ 0 & \mathbf{0} \end{array}\right]\tag{7} [F]=xfx=x=[(1/2)[σωˉTωσTω×+ωTσI]0(1/4)B(σ)0](7)

[ G ] = ∂ g ∂ η ∣ x = x ‾ , η = 0 = [ − ( 1 / 4 ) B ( σ ‾ ) 0 0 I ] (8) [G]=\left.\frac{\partial \boldsymbol{g}}{\partial \boldsymbol{\eta}}\right|_{\boldsymbol{x}=\overline{\boldsymbol{x}}, \boldsymbol{\eta}=\mathbf{0}}=\left[\begin{array}{cc} -(1 / 4) \boldsymbol{B}(\overline{\boldsymbol{\sigma}}) & \mathbf{0} \\ \mathbf{0} & \boldsymbol{I} \end{array}\right]\tag{8} [G]=ηgx=x,η=0=[(1/4)B(σ)00I](8)

式中, ω ˉ = ω ∗ − b ˉ \boldsymbol{\bar{\omega}}=\boldsymbol{\omega^*}-\boldsymbol{\bar{b}} ωˉ=ωbˉ。则状态协方差按照如下的里卡提微分方程传播
[ P ˙ ] = [ F ] [ P ] + [ P ] [ F ] T + [ G ] [ Q ] [ G ] T (9) [\dot{P}]=[F][P]+[P][F]^{T}+[G][Q][G]^{T}\tag{9} [P˙]=[F][P]+[P][F]T+[G][Q][G]T(9)

  测量残差为测量与估计的姿态之差
y k = σ ∗ − [ H k ] σ ‾ k y_{k}=\boldsymbol{\sigma}^{*}-\left[H_{k}\right] \overline{\boldsymbol{\sigma}}_{k} yk=σ[Hk]σk

其中, [ H k ] = [ I 3 × 3 , 0 ] \left[H_{k}\right]=\left[I_{3 \times 3} ,0\right] [Hk]=[I3×3,0]
  滤波增益为
[ K k ] = [ P k ] [ H k ] T ( [ H k ] [ P k ] [ H k ] T + [ Λ σ ] ) − 1 \left[K_{k}\right]=\left[P_{k}\right]\left[H_{k}\right]^{T}\left(\left[H_{k}\right]\left[P_{k}\right]\left[H_{k}\right]^{T}+\left[\Lambda_{\sigma}\right]\right)^{-1} [Kk]=[Pk][Hk]T([Hk][Pk][Hk]T+[Λσ])1

  状态和协方差按照以下公式进行更新
x ˉ k = x ˉ k + [ K k ] y k [ P k ] = ( [ I 3 × 3 ] − [ K k ] [ P k ] ) [ P k ] ( [ I 3 × 3 ] − [ K k ] [ P k ] ) − 1 [ H k ] [ P k ] [ H k ] T \begin{aligned} &\bar{x}_{k}=\bar{x}_{k}+\left[K_{k}\right] y_{k}\\ &\left[P_{k}\right]=\left(\left[I_{3 \times 3}\right]-\left[K_{k}\right]\left[P_{k}\right]\right)\left[P_{k}\right]\left(\left[I_{3 \times 3}\right]-\left[K_{k}\right]\left[P_{k}\right]\right)^{-1}\left[H_{k}\right]\left[P_{k}\right]\left[H_{k}\right]^{T} \end{aligned} xˉk=xˉk+[Kk]yk[Pk]=([I3×3][Kk][Pk])[Pk]([I3×3][Kk][Pk])1[Hk][Pk][Hk]T

  具体操作的时候,在测量更新这一步,在公式(2)中选择测量 σ ∗ \boldsymbol{\sigma}^{*} σ或其影子集 σ ∗ S \boldsymbol{\sigma}^{*S} σS中使残差 y k y_{k} yk的范数较小。为了进一步缩小范围,只有当 ∥ σ ∗ ∥ > 1 3 \left\|{\boldsymbol{\sigma}^{*}}\right\|>\frac{1}{3} σ>31时,才需要对二者对应的残差进行比较。(因为如果 ∥ σ ∗ ∥ < 1 3 \left\|{\boldsymbol{\sigma}^{*}}\right\|<\frac{1}{3} σ<31,,影子集对应的残差范数肯定较大,不予考虑。)

2.仿真结果

(图1 姿态误差)

(图2 陀螺偏置估计结果)

心得,评注

  1. 对于状态和方差的一步预测即公式(5),(9),利用简单的欧拉积分即可。
  2. 对于(7)式的计算是关键,涉及到对向量 σ \boldsymbol{\sigma} σ求偏导。按照张贤达矩阵分析与应用中的矩阵函数的求导方法。令
    f 1 ( x ) = 1 4 B ( σ ) ( ω ∗ − b ) = 1 4 B ( σ ) ω ˉ \boldsymbol{f}_1(\boldsymbol{x}) =\frac{1}{4}\boldsymbol{B}(\boldsymbol{\sigma})\left(\boldsymbol{\omega}^{*}-\boldsymbol{b}\right)=\frac{1}{4}\boldsymbol{B}(\boldsymbol{\sigma})\boldsymbol{\bar\omega} f1(x)=41B(σ)(ωb)=41B(σ)ωˉ

展开之后得,
f 1 ( x ) = 1 4 [ − ω σ T σ − 2 ω × σ + 2 σ σ T ω ] \boldsymbol{f}_1(\boldsymbol{x}) = \frac{1}{4}[-\boldsymbol{\omega}\boldsymbol{\sigma}^{T}\boldsymbol{\sigma}-2 \boldsymbol{\omega}^{\times}\boldsymbol{\sigma}+2\boldsymbol{\sigma}\boldsymbol{\sigma}^{T}\boldsymbol{\omega}] f1(x)=41[ωσTσ2ω×σ+2σσTω]
两边对 σ \boldsymbol{\sigma} σ求微分,得
d f 1 ( x ) = 1 4 [ − ω d ( σ T ) σ − ω σ T d σ − 2 ω × d σ + 2 d σ σ T ω + 2 σ d ( σ T ) ω ] = 1 4 [ − ( σ T ⊗ ω ) d σ − − ω σ T d σ − 2 ω × d σ + 2 ω T σ I 3 d σ + 2 ( ω T ⊗ σ ) ] = 1 2 [ − ω σ T − ω × + ω T σ I 3 + σ ω T ] d σ \begin{aligned} d\boldsymbol{f}_1(\boldsymbol{x})=\frac{1}{4}[-\boldsymbol{\omega}d(\boldsymbol{\sigma}^{T})\boldsymbol{\sigma}-\boldsymbol{\omega}\boldsymbol{\sigma}^{T}d\boldsymbol{\sigma}-2 \boldsymbol{\omega}^{\times}d\boldsymbol{\sigma}+2d\boldsymbol{\sigma}\boldsymbol{\sigma}^{T}\boldsymbol{\omega}+2\boldsymbol{\sigma}d(\boldsymbol{\sigma}^{T})\boldsymbol{\omega}]\\ =\frac{1}{4}[-(\boldsymbol{\sigma}^{T}\otimes\boldsymbol{\omega})d\boldsymbol{\sigma}--\boldsymbol{\omega}\boldsymbol{\sigma}^{T}d\boldsymbol{\sigma}-2 \boldsymbol{\omega}^{\times}d\boldsymbol{\sigma}+2\boldsymbol{\omega}^T\boldsymbol{\sigma}I_3d\boldsymbol{\sigma}+2(\boldsymbol{\omega}^{T}\otimes\boldsymbol{\sigma})]\\ =\frac{1}{2}[-\boldsymbol{\omega}\boldsymbol{\sigma}^{T}-\boldsymbol{\omega}^{\times}+\boldsymbol{\omega}^T\boldsymbol{\sigma}I_3+\boldsymbol{\sigma}\boldsymbol{\omega}^{T}]d\boldsymbol{\sigma} \end{aligned} df1(x)=41[ωd(σT)σωσTdσ2ω×dσ+2dσσTω+2σd(σT)ω]=41[(σTω)dσωσTdσ2ω×dσ+2ωTσI3dσ+2(ωTσ)]=21[ωσTω×+ωTσI3+σωT]dσ

因此,
∂ f 1 ∂ σ T ∣ x = x ‾ = 1 2 [ − ω ˉ σ ˉ T − ω ˉ × + ω ˉ T σ ˉ I 3 + σ ˉ ω ˉ T ] \frac{\partial \boldsymbol{f}_1}{\partial \boldsymbol\sigma^{T}}|_{\boldsymbol{x}=\overline{\boldsymbol{x}}}=\frac{1}{2}[-\boldsymbol{\bar\omega}\boldsymbol{\bar\sigma}^{T}-\boldsymbol{\bar\omega}^{\times}+\boldsymbol{\bar\omega}^T\boldsymbol{\bar\sigma}I_3+\boldsymbol{\bar\sigma}\boldsymbol{\bar\omega}^{T}] σTf1x=x=21[ωˉσˉTωˉ×+ωˉTσˉI3+σˉωˉT]

即式(7)成立。

  1. EKF可以这样来看待:状态由确定性部分和随机量两部分组成。状态的一步预测估计,是在当前最优估计的基础上按照微分运动微分方程进行积分。这一部分没有任何的随机量。随机量就是在当前最优估计附近的一个小扰动。通过状态的导数函数 f ( x ) \boldsymbol f(x) f(x)在当前最优估计处泰勒展开,可获得该扰动其的线性运动方程。通过积分连续里卡提方程,即可获得协方差的更新。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值