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=x−xˉ,对式在当前估计
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]=∂x∂f∣∣∣∣x=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]=∂η∂g∣∣∣∣x=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.仿真结果
心得,评注
- 对于状态和方差的一步预测即公式(5),(9),利用简单的欧拉积分即可。
- 对于(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}]
∂σT∂f1∣x=x=21[−ωˉσˉT−ωˉ×+ωˉTσˉI3+σˉωˉT]
即式(7)成立。
- EKF可以这样来看待:状态由确定性部分和随机量两部分组成。状态的一步预测估计,是在当前最优估计的基础上按照微分运动微分方程进行积分。这一部分没有任何的随机量。随机量就是在当前最优估计附近的一个小扰动。通过状态的导数函数 f ( x ) \boldsymbol f(x) f(x)在当前最优估计处泰勒展开,可获得该扰动其的线性运动方程。通过积分连续里卡提方程,即可获得协方差的更新。