1.系统模型
1.1 陀螺模型
ω∗b˙=ω+b+ηω=ηb(1)
其中,ω是真实的角速度,b是偏置,ω∗是角速度的测量值。ηω和ηb是零均值白噪声。
1.2 运动学模型
待估计状态为x=[σ,b]T,噪声为η=[ηω,ηb]T。
修正罗德里格参数的微分运动学方程为
σ˙=41B(σ)σ=41[(1−σTσ)I+2σ×+2σσT]ω(2)
根据式(),可得待估计状态的动力学方程
x˙=f(x)+g(x,η)(3)
其中,
f(x)g(x,η)=[41[B(σ)](ω∗−b)0]=[−41[B(σ)]ηωηb](4)
状态估计xˉ的传播利用无噪声的非线性运动方程:
xˉ˙=f(xˉ)(5)
EKF中,状态的协方差矩阵[P]表明了状态的一阶不确定度。利用δx=x−xˉ,对式在当前估计xˉ处进行线性化,得到
δx˙=[F]δx+[G]η(6)
其中
[F]=∂x∂f∣∣∣∣x=x=[(1/2)[σωˉT−ωσT−ω×+ωTσI]0−(1/4)B(σ)0](7)
[G]=∂η∂g∣∣∣∣x=x,η=0=[−(1/4)B(σ)00I](8)
式中,ωˉ=ω∗−bˉ。则状态协方差按照如下的里卡提微分方程传播
[P˙]=[F][P]+[P][F]T+[G][Q][G]T(9)
测量残差为测量与估计的姿态之差
yk=σ∗−[Hk]σk
其中,[Hk]=[I3×3,0]。
滤波增益为
[Kk]=[Pk][Hk]T([Hk][Pk][Hk]T+[Λσ])−1
状态和协方差按照以下公式进行更新
xˉk=xˉk+[Kk]yk[Pk]=([I3×3]−[Kk][Pk])[Pk]([I3×3]−[Kk][Pk])−1[Hk][Pk][Hk]T
具体操作的时候,在测量更新这一步,在公式(2)中选择测量σ∗或其影子集σ∗S中使残差yk的范数较小。为了进一步缩小范围,只有当∥σ∗∥>31时,才需要对二者对应的残差进行比较。(因为如果∥σ∗∥<31,,影子集对应的残差范数肯定较大,不予考虑。)
2.仿真结果
(图1 姿态误差)
(图2 陀螺偏置估计结果)
心得,评注
- 对于状态和方差的一步预测即公式(5),(9),利用简单的欧拉积分即可。
- 对于(7)式的计算是关键,涉及到对i向量求偏导,之后会给出详细的推导。