Quaternion based Kalman Filter for attitude estimation

本文详细阐述了基于陀螺模型和运动学模型的系统状态估计方法,包括无偏角速度测量值的推导,四元数微分运动学方程的应用,以及扩展卡尔曼滤波(EKF)中状态协方差矩阵的更新过程。

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

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ω是真实的角速度,bbb是偏置,ω∗\omega^{*}ω是角速度的测量值。ηω\eta_{\omega}ηωηb\eta_{b}ηb是零均值白噪声。

1.2 运动学模型

  待估计状态为x=[q,b]T\boldsymbol{x}=[\boldsymbol{q}, \boldsymbol{b}]^{T}x=[q,b]T,噪声为η=[ηω,ηb]T\eta=\left[\boldsymbol{\eta}_{\omega}, \boldsymbol{\eta}_{b}\right]^{T}η=[ηω,ηb]T
四元数的微分运动学方程为
q˙=12[ω0]⊗q(2)\dot{{\mathbf{q}}}=\frac{1}{2}\left[\begin{array}{l} {\boldsymbol{\omega}} \\ \mathbf{0} \end{array}\right] \otimes {\mathbf{q}}\tag{2}q˙=21[ω0]q(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)=[12[ω∗−b0]⊗q0]g(x,η)=[12[−ηω0]⊗qηb](4)\begin{aligned} \boldsymbol{f}(\boldsymbol{x}) &=\left[\begin{array}{c} \frac{1}{2}\left[\begin{array}{l} {\boldsymbol{\omega}^*-\boldsymbol{b}} \\ \mathbf{0} \end{array}\right] \otimes {\mathbf{q}}\\ \mathbf{0} \end{array}\right] \\ \boldsymbol{g}(\boldsymbol{x}, \boldsymbol{\eta}) &=\left[\begin{array}{c} \frac{1}{2}\left[\begin{array}{l} -\boldsymbol{\eta}_{\omega} \\ \mathbf{0} \end{array}\right] \otimes {\mathbf{q}}\\ \boldsymbol{\eta}_{b} \end{array}\right] \end{aligned}\tag{4}f(x)g(x,η)=21[ωb0]q0=21[ηω0]qη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=[δθ,δb]\delta \boldsymbol{x}=[\delta\boldsymbol{\theta},\delta\boldsymbol{b}]δx=[δθ,δb],对式在当前估计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‾=[−ω‾×−I3×303×303×3](7)[F] =\left.\frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}}\right|_{\boldsymbol{x}=\overline{\boldsymbol{x}}}=\left[\begin{array}{cc} -\overline{\boldsymbol{\omega}}^{\times} & -\boldsymbol{I}_{3\times3} \\ \mathbf{0}_{3\times3} & \mathbf{0}_{3\times3} \end{array}\right]\tag{7}[F]=xfx=x=[ω×03×3I3×303×3](7)

[G]=∂g∂η∣x=x‾,η=0=[−I3×303×303×3I3×3](8)[G]=\left.\frac{\partial \boldsymbol{g}}{\partial \boldsymbol{\eta}}\right|_{\boldsymbol{x}=\overline{\boldsymbol{x}}, \boldsymbol{\eta}=\mathbf{0}}=\left[\begin{array}{cc} -\boldsymbol{I}_{3\times3} & \mathbf{0}_{3\times3}\\ \mathbf{0}_{3\times3} & \boldsymbol{I}_{3\times3} \end{array}\right]\tag{8}[G]=ηgx=x,η=0=[I3×303×303×3I3×3](8)

[Q]=[σω2I3×303×303×3σb2I3×3](8)[Q]=\left[\begin{array}{cc} \sigma_\omega^2\boldsymbol{I}_{3\times3} & \mathbf{0}_{3\times3}\\ \mathbf{0}_{3\times3} & \sigma_b^2\boldsymbol{I}_{3\times3} \end{array}\right]\tag{8}[Q]=[σω2I3×303×303×3σb2I3×3](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)

  测量残差为测量与估计的姿态之差
yk=δθ∗\boldsymbol{y_{k}}=\delta\boldsymbol{\theta}^{*}yk=δθ

其中,[Hk]=[I3×3,0]\left[H_{k}\right]=\left[I_{3 \times 3} ,0\right][Hk]=[I3×3,0]
  滤波增益为
[Kk]=[Pk][Hk]T([Hk][Pk][Hk]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

  状态和协方差按照以下公式进行更新
δxk=[δθ,δb]=[Kk]yk[Pk]=([I6×6]−[Kk][Hk])[Pk]([I3×3]−[Kk][Hk])−1+[Hk][Pk][Hk]T\begin{aligned} &\delta \boldsymbol{x}_k=[\delta\boldsymbol{\theta},\delta\boldsymbol{b}]=\left[K_{k}\right] \boldsymbol{y_{k}}\\ &\left[P_{k}\right]=\left(\left[I_{6 \times 6}\right]-\left[K_{k}\right]\left[H_{k}\right]\right)\left[P_{k}\right]\left(\left[I_{3 \times 3}\right]-\left[K_{k}\right]\left[H_{k}\right]\right)^{-1}+\left[H_{k}\right]\left[P_{k}\right]\left[H_{k}\right]^{T} \end{aligned}δxk=[δθ,δb]=[Kk]yk[Pk]=([I6×6][Kk][Hk])[Pk]([I3×3][Kk][Hk])1+[Hk][Pk][Hk]T
b^+=bˉ+δbq^+=[12δθ1−14δθTδθ]⊗qˉ \hat\boldsymbol{b}^{+} = \bar\boldsymbol{b}+\delta\boldsymbol{b}\\ \hat\boldsymbol{q}^{+}=\left[\begin{array}{l} \frac{1}{2}\delta\boldsymbol{\theta} \\ \sqrt{1-\frac{1}{4}\delta\boldsymbol{\theta}^{T}\delta\boldsymbol{\theta}} \end{array}\right] \otimes \bar\boldsymbol{q} b^+=bˉ+δbq^+=[21δθ141δθTδθ]qˉ

2仿真结果

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

(图2 姿态误差)

心得,评注

  1. 编程一定要认真,尤其是在现有程序上进行改动的时候,一定要考虑周全。

    这个xplus(5:7)在mrp的导航里是xplus(4:6),在修改成quaternion后一直没改过来,导致程序有问题

参考文献:
optimal estimation of dynamics system
Fundamentals of spacecraft attitude determine and control

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值