一、姿态阵微分方程及求解
1、姿态阵微分方程
C ˙ b i = C b i ( ω i b b × ) \dot{\boldsymbol{C}}_{b}^{i}=\boldsymbol{C}_{b}^{i}\left({\boldsymbol{\omega}_{i b}^{b}}\times\right) C˙bi=Cbi(ωibb×)
描述的是姿态的变化和角速率 ω i b b \boldsymbol{\omega}_{i b}^{b} ωibb 的关系,角速率正好可以由陀螺仪测量得到,三个轴装三个陀螺,就有了微分方程,再结合初值,可得到姿态变化阵。
2、姿态阵微分方程的毕卡级数解
简记
C
˙
b
i
=
C
b
i
(
ω
i
b
b
×
)
⟶
Ω
(
t
)
=
[
ω
i
b
b
(
t
)
×
]
C
˙
(
t
)
=
C
(
t
)
Ω
(
t
)
\dot{\boldsymbol{C}}_{b}^{i}=\boldsymbol{C}_{b}^{i}\left(\boldsymbol{\omega}_{i b}^{b} \times\right) \stackrel{\boldsymbol{\Omega}(t)=\left[\boldsymbol{\omega}_{i b}^{b}(t) \times\right]}{\longrightarrow} \dot{\boldsymbol{C}}(t)=\boldsymbol{C}(t) \boldsymbol{\Omega}(t)
C˙bi=Cbi(ωibb×)⟶Ω(t)=[ωibb(t)×]C˙(t)=C(t)Ω(t)
形式上就是一个状态方程。在连续时间Kalman滤波中已经提到过,此方程无初等解,只有毕卡积分级数解:
C
(
t
)
=
C
(
0
)
[
I
+
∫
0
t
Ω
(
τ
)
d
τ
+
∫
0
t
∫
0
τ
Ω
(
τ
1
)
d
τ
1
Ω
(
τ
)
d
τ
+
∫
0
t
∫
0
τ
∫
0
τ
1
Ω
(
τ
2
)
d
τ
2
Ω
(
τ
1
)
d
τ
1
Ω
(
τ
)
d
τ
+
⋯
]
\boldsymbol{C}(t) =\boldsymbol{C}(0)\left[\boldsymbol{I}+\int_{0}^{t} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau+\int_{0}^{t} \int_{0}^{\tau} \boldsymbol{\Omega}\left(\tau_{1}\right) \mathrm{d} \tau_{1} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau+\int_{0}^{t} \int_{0}^{\tau} \int_{0}^{\tau_{1}} \boldsymbol{\Omega}\left(\tau_{2}\right) \mathrm{d} \tau_{2} \boldsymbol{\Omega}\left(\tau_{1}\right) \mathrm{d} \tau_{1} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau+\cdots\right]
C(t)=C(0)[I+∫0tΩ(τ)dτ+∫0t∫0τΩ(τ1)dτ1Ω(τ)dτ+∫0t∫0τ∫0τ1Ω(τ2)dτ2Ω(τ1)dτ1Ω(τ)dτ+⋯]
一般情况下,上式就是毕卡级数解,不可再继续化简。上式是收敛的,但还不方便得到闭合形式的初等解。只有在定轴转动的情况下,若转动角速率满足可交换性条件:
Ω
(
t
)
Ω
(
τ
)
=
Ω
(
τ
)
Ω
(
t
)
\boldsymbol{\Omega}(t) \boldsymbol{\Omega}(\tau)=\boldsymbol{\Omega}(\tau) \boldsymbol{\Omega}(t)
Ω(t)Ω(τ)=Ω(τ)Ω(t)
递推,可以得到幂指函数形式的闭合解:
C
(
t
)
=
C
(
0
)
{
I
+
∫
0
t
Ω
(
τ
)
d
τ
+
1
2
!
[
∫
0
t
Ω
(
τ
)
d
τ
]
2
+
1
3
!
[
∫
0
t
Ω
(
τ
)
d
τ
]
3
+
⋯
}
=
C
(
0
)
e
∫
0
′
Ω
(
τ
)
d
τ
\boldsymbol{C}(t)=\boldsymbol{C}(0)\left\{\boldsymbol{I}+\int_{0}^{t} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau+\frac{1}{2 !}\left[\int_{0}^{t} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau\right]^{2}+\frac{1}{3 !}\left[\int_{0}^{t} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau\right]^{3}+\cdots\right\}=\boldsymbol{C}(0) \mathrm{e}^{\int_{0}^{\prime} \Omega(\tau) \mathrm{d} \tau}
C(t)=C(0){I+∫0tΩ(τ)dτ+2!1[∫0tΩ(τ)dτ]2+3!1[∫0tΩ(τ)dτ]3+⋯}=C(0)e∫0′Ω(τ)dτ
即:
C
(
t
)
=
C
(
0
)
e
∫
0
′
Ω
(
τ
)
d
τ
\boldsymbol{C}(t)=\boldsymbol{C}(0) \mathrm{e}^{\int_{0}^{\prime} \Omega(\tau) \mathrm{d} \tau}
C(t)=C(0)e∫0′Ω(τ)dτ
3、定轴转动条件下的姿态更新算法
在
C
(
T
)
=
C
(
0
)
e
∫
0
T
Ω
(
τ
)
d
τ
\boldsymbol{C}(T)=\boldsymbol{C}(0) \mathrm{e}^{\int_{0}^{T} \Omega(\tau) \mathrm{d} \tau}
C(T)=C(0)e∫0TΩ(τ)dτ 中:
e
∫
0
T
Ω
(
τ
)
d
τ
=
e
∫
0
T
[
ω
(
τ
)
×
]
d
τ
=
e
[
θ
(
T
)
×
]
=
I
+
sin
θ
(
T
)
θ
(
T
)
[
θ
(
T
)
×
]
+
1
−
cos
θ
(
T
)
θ
2
(
T
)
[
θ
(
T
)
×
]
2
\mathrm{e}^{\int_{0}^{T} \boldsymbol{\Omega}(\tau) \mathrm{d} \tau} =\mathrm{e}^{\int_{0}^{T}[\boldsymbol{\omega}(\tau) \times] \mathrm{d} \tau}=\mathrm{e}^{[\boldsymbol{\theta}(T) \times]} =\boldsymbol{I}+\frac{\sin \theta(T)}{\theta(T)}[\boldsymbol{\theta}(T) \times]+\frac{1-\cos \theta(T)}{\theta^{2}(T)}[\boldsymbol{\theta}(T) \times]^{2}
e∫0TΩ(τ)dτ=e∫0T[ω(τ)×]dτ=e[θ(T)×]=I+θ(T)sinθ(T)[θ(T)×]+θ2(T)1−cosθ(T)[θ(T)×]2
将时间区间更改为
[
t
m
−
1
,
t
m
]
\left[t_{m-1}, t_{m}\right]
[tm−1,tm],时间的起点都认为是上一时刻的结束时间,则有姿态阵的更新方差:
C
b
(
m
)
i
=
C
b
(
m
−
1
)
i
C
b
(
m
)
b
(
m
−
1
)
\boldsymbol{C}_{b(m)}^{i}=\boldsymbol{C}_{b(m-1)}^{i} \boldsymbol{C}_{b(m)}^{b(m-1)}
Cb(m)i=Cb(m−1)iCb(m)b(m−1)
当前时刻
m
m
m 的姿态阵
C
b
(
m
)
i
\boldsymbol{C}_{b(m)}^{i}
Cb(m)i 等于上一时刻的姿态阵
C
b
(
m
)
i
−
1
\boldsymbol{C}_{b(m)}^{i-1}
Cb(m)i−1 乘以上一时刻到当前时刻的变化量
C
b
(
m
)
b
(
m
−
1
)
\boldsymbol{C}_{b(m)}^{b(m-1)}
Cb(m)b(m−1) :
C
b
(
m
)
b
(
m
−
1
)
=
I
+
sin
Δ
θ
m
Δ
θ
m
(
Δ
θ
m
×
)
+
1
−
cos
Δ
θ
m
Δ
θ
m
2
(
Δ
θ
m
×
)
2
\boldsymbol{C}_{b(m)}^{b(m-1)}=\boldsymbol{I}+\frac{\sin \Delta \theta_{m}}{\Delta \theta_{m}}\left(\Delta \theta_{m} \times\right)+\frac{1-\cos \Delta \theta_{m}}{\Delta \theta_{m}^{2}}\left(\Delta \theta_{m} \times\right)^{2}
Cb(m)b(m−1)=I+ΔθmsinΔθm(Δθm×)+Δθm21−cosΔθm(Δθm×)2
就等于上一时刻到当前时刻角增量
Δ
θ
m
\Delta \theta_{m}
Δθm 的幂指函数。所谓角增量,就是在时间段内角速率的积分
Δ
θ
m
=
∫
t
m
−
1
t
m
m
ω
i
b
b
(
t
)
d
t
\Delta \theta_{m}=\int_{t_{m-1}}^{t_{m}^{m}} \omega_{i b}^{b}(t) \mathrm{d} t
Δθm=∫tm−1tmmωibb(t)dt
二、四元数微分方程及求解
Q ˙ b i = 1 2 Q b i ∘ ω b b \dot{Q}_{b}^{i}=\frac{1}{2} \boldsymbol{Q}_{b}^{i} \circ \boldsymbol{\omega}_{\mathrm{b}}^{b} Q˙bi=21Qbi∘ωbb
写成矩阵形式为:
Q
˙
(
t
)
=
1
2
M
ω
(
t
)
′
Q
(
t
)
\dot{Q}(t)=\frac{1}{2} \boldsymbol{M}_{\boldsymbol{\omega}(t)}^{\prime} \boldsymbol{Q}(t)
Q˙(t)=21Mω(t)′Q(t)
类似于姿态阵微分方程的求解,只有在
t
,
τ
∈
[
0
,
T
]
t, \tau \in[0, T]
t,τ∈[0,T] 时间段内满足定轴转动条件
[
ω
(
t
)
×
]
[
ω
(
τ
)
×
]
=
[
ω
(
τ
)
×
]
[
ω
(
t
)
×
]
[\boldsymbol{\omega}(t) \times][\boldsymbol{\omega}(\tau) \times]=[\boldsymbol{\omega}(\tau) \times][\boldsymbol{\omega}(t) \times]
[ω(t)×][ω(τ)×]=[ω(τ)×][ω(t)×],使:
M
ω
(
t
)
′
M
ω
(
τ
)
′
=
M
ω
(
τ
)
′
M
ω
(
t
)
′
\boldsymbol{M}_{\omega(t)}^{\prime} \boldsymbol{M}_{\omega(\tau)}^{\prime}=\boldsymbol{M}_{\omega(\tau)}^{\prime} \boldsymbol{M}_{\omega(t)}^{\prime}
Mω(t)′Mω(τ)′=Mω(τ)′Mω(t)′,才能求得闭合解:
Q
(
T
)
=
e
1
2
θ
(
T
)
Q
(
0
)
\boldsymbol{Q}(T)=\mathrm{e}^{\frac{1}{2} \boldsymbol{\theta}(T)} \boldsymbol{Q}(0)
Q(T)=e21θ(T)Q(0)
经过一系列推导得:
Q
(
T
)
=
Q
(
0
)
∘
[
cos
θ
(
T
)
2
θ
(
T
)
θ
(
T
)
sin
θ
(
T
)
2
]
\boldsymbol{Q}(T)=\boldsymbol{Q}(0) \circ\left[\begin{array}{c}\cos \frac{\theta(T)}{2} \\ \frac{\boldsymbol{\theta}(T)}{\theta(T)} \sin \frac{\theta(T)}{2}\end{array}\right]
Q(T)=Q(0)∘[cos2θ(T)θ(T)θ(T)sin2θ(T)]
若将研究时间区间从
[
0
,
T
]
[0, T]
[0,T] 改为
[
t
m
−
1
,
t
m
]
\left[t_{m-1}, t_{m}\right]
[tm−1,tm],可得姿态四元数的递推公式(定轴转动条件下):
Q
b
(
m
)
i
=
Q
b
(
m
−
1
)
i
∘
Q
b
(
m
)
b
(
m
−
1
)
Q
b
(
m
)
b
(
m
−
1
)
=
[
cos
Δ
θ
m
2
Δ
θ
m
Δ
θ
m
sin
Δ
θ
m
2
]
\begin{array}{c}Q_{b(m)}^{i}=Q_{b(m-1)}^{i} \circ Q_{b(m)}^{b(m-1)} \\ Q_{b(m)}^{b(m-1)}=\left[\begin{array}{c}\cos \frac{\Delta \theta_{m}}{2} \\ \frac{\Delta \boldsymbol{\theta}_{m}}{\Delta \theta_{m}} \sin \frac{\Delta \theta_{m}}{2}\end{array}\right]\end{array}
Qb(m)i=Qb(m−1)i∘Qb(m)b(m−1)Qb(m)b(m−1)=[cos2ΔθmΔθmΔθmsin2Δθm]
其中,
Q
b
(
m
−
1
)
i
,
Q
b
(
m
)
i
Q_{b(m-1)}^{i}, Q_{b(m)}^{i}
Qb(m−1)i,Qb(m)i 分别表示
t
m
−
1
t_{m-1}
tm−1 和
t
m
t_{m}
tm 时刻的姿态变换四元数;
Q
b
(
m
)
b
(
m
−
1
)
Q_{b(m)}^{b(m-1)}
Qb(m)b(m−1) 是从
t
m
−
1
t_{m-1}
tm−1 时刻到
t
m
t_{m}
tm 时刻的姿态四元数变化,且有
Δ
θ
m
=
∫
t
m
−
1
t
m
ω
k
⃗
b
d
t
\Delta \boldsymbol{\theta}_{m}=\int_{t_{m-1}}^{t_{m}} \boldsymbol{\omega}_{\vec{k}}^{b} \mathrm{~d} t
Δθm=∫tm−1tmωkb dt 和
Δ
θ
m
=
∣
Δ
θ
m
∣
\Delta \theta_{m}=\left|\Delta \boldsymbol{\theta}_{m}\right|
Δθm=∣Δθm∣ 。
姿态阵更新方程和四元数更新方程形式非常相似,但四元数算法的计算量和存储量约为姿态阵的一半。
三、等效旋转矢量微分方程及求解
1、Bortz 方程
由四元数推导可得等效旋转矢量微分方程:
ω
b
⃗
b
=
u
z
⃗
,
b
ϕ
˙
+
u
˙
j
⃗
b
sin
ϕ
−
u
j
⃗
b
×
u
˙
j
⃗
,
b
(
1
−
cos
ϕ
)
\boldsymbol{\omega}_{\vec{b}}^{b}=\boldsymbol{u}_{\vec{z},}^{b} \dot{\phi}+\dot{\boldsymbol{u}}_{\vec{j}}^{b} \sin \phi-\boldsymbol{u}_{\vec{j}}^{b} \times \dot{\boldsymbol{u}}_{\vec{j},}^{b}(1-\cos \phi)
ωbb=uz,bϕ˙+u˙jbsinϕ−ujb×u˙j,b(1−cosϕ)
由一系列的推导,可得更为常用的等效旋转矢量微分方程,也称 Bortz 方程:
ϕ
˙
=
ω
+
1
2
ϕ
×
ω
+
1
ϕ
2
(
1
−
ϕ
⋅
2
sin
ϕ
2
cos
ϕ
2
2
⋅
2
sin
2
ϕ
2
)
(
ϕ
×
)
2
ω
=
ω
+
1
2
ϕ
×
ω
+
1
ϕ
2
(
1
−
ϕ
2
cot
ϕ
2
)
(
ϕ
×
)
2
ω
\begin{array}{c}\dot{\phi}=\boldsymbol{\omega}+\frac{1}{2} \boldsymbol{\phi} \times \boldsymbol{\omega}+\frac{1}{\phi^{2}}\left(1-\frac{\phi \cdot 2 \sin \frac{\phi}{2} \cos \frac{\phi}{2}}{2 \cdot 2 \sin ^{2} \frac{\phi}{2}}\right)(\boldsymbol{\phi} \times)^{2} \boldsymbol{\omega}= \\ \boldsymbol{\omega}+\frac{1}{2} \boldsymbol{\phi} \times \boldsymbol{\omega}+\frac{1}{\phi^{2}}\left(1-\frac{\phi}{2} \cot \frac{\phi}{2}\right)(\boldsymbol{\phi} \times)^{2} \boldsymbol{\omega}\end{array}
ϕ˙=ω+21ϕ×ω+ϕ21(1−2⋅2sin22ϕϕ⋅2sin2ϕcos2ϕ)(ϕ×)2ω=ω+21ϕ×ω+ϕ21(1−2ϕcot2ϕ)(ϕ×)2ω
2、Bortz 方程的简化
Bortz 方程虽然在理论上是严格成立的,但实际应用时略显繁杂。当等效转动角度
ϕ
=
∣
ϕ
∣
\phi=|\phi|
ϕ=∣ϕ∣ 为小量时,常常将方程右边的余切函数
cot
(
ϕ
/
2
)
\cot (\phi / 2)
cot(ϕ/2) 用泰勒级数展开,进行如下近似:
ϕ
˙
≈
ω
+
1
2
ϕ
×
ω
+
1
12
(
ϕ
×
)
2
ω
\dot{\boldsymbol{\phi}} \approx \boldsymbol{\omega}+\frac{1}{2} \boldsymbol{\phi} \times \boldsymbol{\omega}+\frac{1}{12}(\boldsymbol{\phi} \times)^{2} \boldsymbol{\omega}
ϕ˙≈ω+21ϕ×ω+121(ϕ×)2ω
忽略二阶项,还可进一步近似为:
ϕ
˙
≈
ω
+
1
2
ϕ
×
ω
\dot{\phi} \approx \omega+\frac{1}{2} \boldsymbol{\phi} \times \omega
ϕ˙≈ω+21ϕ×ω
在
[
t
m
−
1
,
t
]
\left[t_{m-1}, t\right]
[tm−1,t] 时间段,对上式两边积分,并迭代一次,再进行简化得:
ϕ
(
t
)
≈
ϕ
(
t
m
−
1
)
+
Δ
θ
(
t
,
t
m
−
1
)
+
1
2
ϕ
(
t
m
−
1
)
×
Δ
θ
(
t
,
t
m
−
1
)
+
1
2
∫
t
m
−
1
t
Δ
θ
(
τ
,
t
m
−
1
)
×
ω
(
τ
)
d
τ
\boldsymbol{\phi}(t) \approx \boldsymbol{\phi}\left(t_{m-1}\right)+\Delta \boldsymbol{\theta}\left(t, t_{m-1}\right)+\frac{1}{2} \boldsymbol{\phi}\left(t_{m-1}\right) \times \Delta \boldsymbol{\theta}\left(t, t_{m-1}\right)+\frac{1}{2} \int_{t_{m-1}}^{t} \Delta \boldsymbol{\theta}\left(\tau, t_{m-1}\right) \times \boldsymbol{\omega}(\tau) \mathrm{d} \tau
ϕ(t)≈ϕ(tm−1)+Δθ(t,tm−1)+21ϕ(tm−1)×Δθ(t,tm−1)+21∫tm−1tΔθ(τ,tm−1)×ω(τ)dτ
特别地,若假设
t
m
−
1
=
0
t_{m-1}=0
tm−1=0 且等效旋转矢量
ϕ
(
0
)
=
0
\boldsymbol{\phi}(0)=\mathbf{0}
ϕ(0)=0,则
ϕ
(
t
)
\boldsymbol{\phi}(t)
ϕ(t) 可表示从 0 时刻开始的等效旋转矢量“增量”,上式可简化为:
ϕ
(
t
)
=
Δ
θ
(
t
)
+
1
2
∫
0
t
Δ
θ
(
τ
)
×
ω
(
τ
)
d
τ
=
Δ
θ
(
t
)
+
σ
(
t
)
\boldsymbol{\phi}(t)=\Delta \boldsymbol{\theta}(t)+\frac{1}{2} \int_{0}^{t} \Delta \boldsymbol{\theta}(\tau) \times \boldsymbol{\omega}(\tau) \mathrm{d} \tau=\Delta \boldsymbol{\theta}(t)+\color{red}{\boldsymbol{\sigma}(t)}
ϕ(t)=Δθ(t)+21∫0tΔθ(τ)×ω(τ)dτ=Δθ(t)+σ(t)
其中,记:
Δ
θ
(
t
)
=
∫
0
t
ω
(
τ
)
d
τ
\Delta \boldsymbol{\theta}(t)=\int_{0}^{t} \boldsymbol{\omega}(\tau) \mathrm{d} \tau \quad
Δθ(t)=∫0tω(τ)dτ 和
σ
(
t
)
=
1
2
∫
0
t
Δ
θ
(
τ
)
×
ω
(
τ
)
d
τ
\quad \boldsymbol{\sigma}(t)=\frac{1}{2} \int_{0}^{t} \Delta \boldsymbol{\theta}(\tau) \times \boldsymbol{\omega}(\tau) \mathrm{d} \tau
σ(t)=21∫0tΔθ(τ)×ω(τ)dτ
σ
(
t
)
=
ϕ
(
t
)
−
Δ
θ
(
t
)
\boldsymbol{\sigma}(t)=\boldsymbol{\phi}(t)-\Delta \boldsymbol{\theta}(t)
σ(t)=ϕ(t)−Δθ(t) 表示等效旋转矢量增量
ϕ
(
t
)
\boldsymbol{\phi}(t)
ϕ(t) 与角增量
Δ
θ
(
t
)
\Delta \boldsymbol{\theta}(t)
Δθ(t) 之间的差异, 通常称为转动不可交换误差的修正量。对上式两边求得,可得到 Bortz 方程的另一种简化:
ϕ
˙
(
t
)
=
ω
(
t
)
+
1
2
Δ
θ
(
t
)
×
ω
(
t
)
\dot{\boldsymbol{\phi}}(t)=\boldsymbol{\omega}(t)+\frac{1}{2} \Delta \boldsymbol{\theta}(t) \times \boldsymbol{\omega}(t)
ϕ˙(t)=ω(t)+21Δθ(t)×ω(t)
其优点是右端不再含变量
ϕ
(
t
)
\phi(t)
ϕ(t),方便求解。需要特别指出的是,此式成立的前提条件是:
ϕ
(
0
)
=
\phi(0)=
ϕ(0)=
Δ
θ
(
0
)
=
0
\Delta \boldsymbol{\theta}(0)=\mathbf{0}
Δθ(0)=0 且
ϕ
(
t
)
\boldsymbol{\phi}(t)
ϕ(t) 始终为小量,
ϕ
(
t
)
\boldsymbol{\phi}(t)
ϕ(t) 越小近似精度越高。
实际应用时,一般总是以
t
m
−
1
t_{m-1}
tm−1 为新的时间起点,令
ϕ
(
t
m
−
1
)
=
0
\phi\left(t_{m-1}\right)=\mathbf{0}
ϕ(tm−1)=0, ,再根据式 (2.5.17) 计算等效旋 转矢量
ϕ
(
t
m
)
\phi\left(t_{m}\right)
ϕ(tm),相当于只进行一步计算,这样有利于保证等效旋转矢量始终为小量,降低公式推导过程中的近似误差。在获得
ϕ
(
t
m
)
\phi\left(t_{m}\right)
ϕ(tm) 之后,改等效旋转矢量递推计算为方向余弦阵或四元数递推,完成姿态递推更新,以四元数为例 (姿态阵类似),等效旋转矢量与四元数相配合的姿态更新算法如下:
Q
b
(
m
)
i
=
Q
b
(
m
−
1
)
i
∘
Q
b
(
m
)
b
(
m
−
1
)
Q
b
(
m
)
b
(
m
−
1
)
=
[
cos
ϕ
m
2
ϕ
m
ϕ
m
sin
ϕ
m
2
]
\begin{array}{c}Q_{b(m)}^{i}=Q_{b(m-1)}^{i} \circ Q_{b(m)}^{b(m-1)} \\ Q_{b(m)}^{b(m-1)}=\left[\begin{array}{c}\cos \frac{\phi_{m}}{2} \\ \frac{\boldsymbol{\phi_{m}}}{\phi_{m}} \sin \frac{\phi_{m}}{2}\end{array}\right]\end{array}
Qb(m)i=Qb(m−1)i∘Qb(m)b(m−1)Qb(m)b(m−1)=[cos2ϕmϕmϕmsin2ϕm]
其中, 将
ϕ
(
t
m
)
\boldsymbol{\phi\left(t_{m}\right)}
ϕ(tm) 简记为
ϕ
m
\boldsymbol{\phi_{m}}
ϕm,且有
ϕ
m
=
∣
ϕ
m
∣
\phi_{m}=\left|\boldsymbol{\phi_{m}}\right|
ϕm=∣ϕm∣,形式与四元数更新方程很相似,但两者有本质区别:
- 四元数更新方程只是简单的用进行变化四元数计算。
- 等效旋转矢量在计算中考虑了转动不可交换误差的补偿,精度更高。
3、不可交换误差的理解
不可交换误差是捷联惯导算法中绕不开的概念,何为不可交换误差?
我们知道矩阵乘法不满足交换律, A ∗ B A*B A∗B 不等于 B ∗ A B*A B∗A,但在惯导的姿态解算中,我们就当它们是可以交换的,以得到毕卡级数的收敛数值解。
以姿态阵微分方程为例,想知道可交换性条件的含义,我们可以把它展开成分量形式来看:
Ω
(
t
)
Ω
(
τ
)
=
[
ω
(
t
)
×
]
[
ω
(
τ
)
×
]
=
[
−
ω
1
y
ω
2
y
−
ω
1
z
ω
2
z
ω
1
y
ω
2
x
ω
1
z
ω
2
x
ω
1
x
ω
2
y
−
ω
1
x
ω
2
x
−
ω
1
z
ω
2
z
ω
1
z
ω
2
y
ω
1
x
ω
2
z
ω
1
y
ω
2
z
−
ω
1
x
ω
2
x
−
ω
1
y
ω
2
y
]
Ω
(
τ
)
Ω
(
t
)
=
[
ω
(
τ
)
×
]
[
ω
(
t
)
×
]
=
[
−
ω
1
y
ω
2
y
−
ω
1
z
ω
2
z
ω
2
y
ω
1
x
ω
2
z
ω
1
x
ω
2
x
ω
1
y
−
ω
1
x
ω
2
x
−
ω
1
z
ω
2
z
ω
2
z
ω
1
y
ω
2
x
ω
1
z
ω
2
y
ω
1
z
−
ω
1
x
ω
2
x
−
ω
1
y
ω
2
y
]
\begin{array}{l} \boldsymbol{\Omega}(t) \boldsymbol{\Omega}(\tau)=[\boldsymbol{\omega}(t) \times][\boldsymbol{\omega}(\tau) \times]=\left[\begin{array}{ccc} -\omega_{1 y} \omega_{2 y}-\omega_{1 z} \omega_{2 z} & \omega_{1 y} \omega_{2 x} & \omega_{1 z} \omega_{2 x} \\ \omega_{1 x} \omega_{2 y} & -\omega_{1 x} \omega_{2 x}-\omega_{1 z} \omega_{2 z} & \omega_{1 z} \omega_{2 y} \\ \omega_{1 x} \omega_{2 z} & \omega_{1 y} \omega_{2 z} & -\omega_{1 x} \omega_{2 x}-\omega_{1 y} \omega_{2 y} \end{array}\right] \\ \boldsymbol{\Omega}(\tau) \boldsymbol{\Omega}(t)=[\boldsymbol{\omega}(\tau) \times][\boldsymbol{\omega}(t) \times]=\left[\begin{array}{ccc} -\omega_{1 y} \omega_{2 y}-\omega_{1 z} \omega_{2 z} & \omega_{2 y} \omega_{1 x} & \omega_{2 z} \omega_{1 x} \\ \omega_{2 x} \omega_{1 y} & -\omega_{1 x} \omega_{2 x}-\omega_{1 z} \omega_{2 z} & \omega_{2 z} \omega_{1 y} \\ \omega_{2 x} \omega_{1 z} & \omega_{2 y} \omega_{1 z} & -\omega_{1 x} \omega_{2 x}-\omega_{1 y} \omega_{2 y} \end{array}\right] \end{array}
Ω(t)Ω(τ)=[ω(t)×][ω(τ)×]=
−ω1yω2y−ω1zω2zω1xω2yω1xω2zω1yω2x−ω1xω2x−ω1zω2zω1yω2zω1zω2xω1zω2y−ω1xω2x−ω1yω2y
Ω(τ)Ω(t)=[ω(τ)×][ω(t)×]=
−ω1yω2y−ω1zω2zω2xω1yω2xω1zω2yω1x−ω1xω2x−ω1zω2zω2yω1zω2zω1xω2zω1y−ω1xω2x−ω1yω2y