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
=
[
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
˙
=
1
2
[
ω
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
)
=
[
1
2
[
ω
∗
−
b
0
]
⊗
q
0
]
g
(
x
,
η
)
=
[
1
2
[
−
η
ω
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
‾
=
[
−
ω
‾
×
−
I
3
×
3
0
3
×
3
0
3
×
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]=∂x∂f∣∣∣∣x=x=[−ω×03×3−I3×303×3](7)
[ G ] = ∂ g ∂ η ∣ x = x ‾ , η = 0 = [ − I 3 × 3 0 3 × 3 0 3 × 3 I 3 × 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]=∂η∂g∣∣∣∣x=x,η=0=[−I3×303×303×3I3×3](8)
[ Q ] = [ σ ω 2 I 3 × 3 0 3 × 3 0 3 × 3 σ b 2 I 3 × 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)
测量残差为测量与估计的姿态之差
y
k
=
δ
θ
∗
\boldsymbol{y_{k}}=\delta\boldsymbol{\theta}^{*}
yk=δθ∗
其中,
[
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
=
[
δ
θ
,
δ
b
]
=
[
K
k
]
y
k
[
P
k
]
=
(
[
I
6
×
6
]
−
[
K
k
]
[
H
k
]
)
[
P
k
]
(
[
I
3
×
3
]
−
[
K
k
]
[
H
k
]
)
−
1
+
[
H
k
]
[
P
k
]
[
H
k
]
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
ˉ
+
δ
b
q
^
+
=
[
1
2
δ
θ
1
−
1
4
δ
θ
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δθ1−41δθTδθ]⊗qˉ
2仿真结果
心得,评注
- 编程一定要认真,尤其是在现有程序上进行改动的时候,一定要考虑周全。
这个xplus(5:7)在mrp的导航里是xplus(4:6),在修改成quaternion后一直没改过来,导致程序有问题
参考文献:
optimal estimation of dynamics system
Fundamentals of spacecraft attitude determine and control