声明:因为接触本课题时间不长,对于四元数解法一直没太懂什么意思,本篇博客就对这几天的学习进行总结,肯定会有错误,希望读者能够帮忙指正。本篇博客主要参考秦永元老师《惯性导航》第九章第二小节以及几篇论文。
一、 四元数
1.1 四元数定义
四元数就是由四个元构成的数:
Q
(
q
0
,
q
1
,
q
2
,
q
3
)
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
Q(q_0,q_1,q_2,q_3)=q_0+q_1\bold i+q_2\bold j+q_3\bold k
Q(q0,q1,q2,q3)=q0+q1i+q2j+q3k
其中,
q
0
,
q
1
,
q
2
,
q
3
q_0,q_1,q_2,q_3
q0,q1,q2,q3是实数,在一些文献或者相关书籍里也会写作
q
1
,
q
2
,
q
3
,
q
4
q_1,q_2,q_3,q_4
q1,q2,q3,q4或者
w
,
x
,
y
,
z
w,x,y,z
w,x,y,z,
i
,
j
,
k
\bold i,\bold j,\bold k
i,j,k即是互相正交的向量,又是虚单位
−
1
\sqrt{-1}
−1,具体规定体现在四元数乘法关系中:
i
⨂
i
=
−
1
,
j
⨂
j
=
−
1
,
k
⨂
k
=
−
1
\bold i\bigotimes \bold i=-1,\bold j\bigotimes \bold j=-1,\bold k\bigotimes \bold k=-1
i⨂i=−1,j⨂j=−1,k⨂k=−1
i
⨂
j
=
k
,
j
⨂
k
=
i
,
k
⨂
i
=
j
\bold i\bigotimes \bold j=\bold k,\bold j\bigotimes \bold k=\bold i,\bold k\bigotimes \bold i=\bold j
i⨂j=k,j⨂k=i,k⨂i=j
j
⨂
i
=
−
k
,
k
⨂
j
=
−
i
,
i
⨂
k
=
−
j
\bold j\bigotimes \bold i=-\bold k,\bold k\bigotimes \bold j=-\bold i,\bold i\bigotimes \bold k=-\bold j
j⨂i=−k,k⨂j=−i,i⨂k=−j
上述公式符合 右手螺旋定则,可以绘制一个如下所示的三维图,用右手螺旋定则判断:
1.2 四元数的表示方法
(1)矢量式:
Q
=
q
0
+
q
Q = q_0+\bold q
Q=q0+q
(2)复数式:
Q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
Q=q_0+q_1\bold i+q_2\bold j+q_3\bold k
Q=q0+q1i+q2j+q3k
(3)三角式:
Q
=
c
o
s
θ
2
+
u
s
i
n
θ
2
Q=cos \frac {\theta}{2}+\bold usin\frac {\theta}{2}
Q=cos2θ+usin2θ
(4)指数式:
Q
=
e
u
θ
2
Q=e^{\bold u\frac {\theta}{2}}
Q=eu2θ
(5)矩阵式:
Q
=
[
q
0
q
1
q
2
q
3
]
Q=\begin{bmatrix}q_0\\q_1\\q_2\\q_3\end{bmatrix}
Q=
q0q1q2q3
1.3 四元数大小----范数
四元数的范数:
∣
∣
Q
∣
∣
=
q
0
2
+
q
1
2
+
q
2
2
+
q
3
2
||Q||=q_0^2+q_1^2+q_2^2+q_3^2
∣∣Q∣∣=q02+q12+q22+q32
若
∣
∣
Q
∣
∣
=
1
||Q||=1
∣∣Q∣∣=1,则称为规范四元数。
1.4 四元数的加减乘除
(1)加法和减法:设
Q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
\bold Q=q_0+q_1\bold i+q_2\bold j+q_3\bold k
Q=q0+q1i+q2j+q3k
P
=
p
0
+
p
1
i
+
p
2
j
+
p
3
k
\bold P=p_0+p_1\bold i+p_2\bold j+p_3\bold k
P=p0+p1i+p2j+p3k
则
Q
±
P
=
(
q
0
±
p
0
)
+
(
q
1
±
p
1
)
i
+
(
q
2
±
p
2
)
j
+
(
q
3
±
p
3
)
k
\bold Q±\bold P=(q_0±p_0)+(q_1±p_1)\bold i+(q_2±p_2)\bold j+(q_3±p_3)\bold k
Q±P=(q0±p0)+(q1±p1)i+(q2±p2)j+(q3±p3)k
(2)乘法:
a
Q
=
a
q
0
+
a
q
1
i
+
a
q
2
j
+
a
q
3
k
a\bold Q=aq_0+aq_1\bold i+aq_2\bold j+aq_3\bold k
aQ=aq0+aq1i+aq2j+aq3k
P
⨂
Q
=
(
p
0
+
p
1
i
+
p
2
j
+
p
3
k
)
⨂
(
q
0
+
q
1
i
+
q
2
j
+
q
3
k
)
=
(
p
0
q
0
−
p
1
q
1
−
p
2
q
2
−
p
3
q
3
)
+
(
p
0
q
1
+
p
1
q
0
+
p
2
q
3
−
p
3
q
2
)
i
+
(
p
0
q
2
+
p
2
q
0
+
p
3
q
1
−
p
1
q
3
)
j
+
(
p
0
q
3
+
p
3
q
0
+
p
1
q
2
−
p
2
q
1
)
k
=
r
0
+
r
1
i
+
r
2
j
+
r
3
k
\bold P \bigotimes \bold Q =(p_0+p_1\bold i+p_2\bold j+p_3\bold k) \bigotimes (q_0+q_1\bold i+q_2\bold j+q_3\bold k)\\=(p_0q_0-p_1q_1-p_2q_2-p_3q_3)+(p_0q_1+p_1q_0+p_2q_3-p_3q_2)\bold i+\\(p_0q_2+p_2q_0+p_3q_1-p_1q_3)\bold j+(p_0q_3+p_3q_0+p_1q_2-p_2q_1)\bold k\\=r_0+r_1\bold i+r_2\bold j+r_3\bold k
P⨂Q=(p0+p1i+p2j+p3k)⨂(q0+q1i+q2j+q3k)=(p0q0−p1q1−p2q2−p3q3)+(p0q1+p1q0+p2q3−p3q2)i+(p0q2+p2q0+p3q1−p1q3)j+(p0q3+p3q0+p1q2−p2q1)k=r0+r1i+r2j+r3k
上式写成矩阵:
公式比较麻烦,就不敲了,记住一点就好, 四元数乘法不满足交换律。
(3)求逆:
P
−
1
=
P
∗
∣
∣
P
∣
∣
P^{-1}=\frac{P^*}{||P||}
P−1=∣∣P∣∣P∗
二、四元数与姿态矩阵之间的关系
秦老师的《惯性导航》在推导这部分时比较详细,推导部分这里就不再详细介绍了,主要讲一下几个重要的公式:
《惯性导航》一书中取
u
R
=
[
l
m
n
]
\bold u^R=\begin{bmatrix}l\\m\\n\end{bmatrix}
uR=
lmn
,在薛启龙老师《Data Analytics for Drilling Engineering》的第三章“Dynamic Measurement of Spatial Attitude at the Bottom Rotating Drillstring”中,选择了
u
R
=
[
(
Θ
x
/
Θ
)
(
Θ
y
/
Θ
)
(
Θ
z
/
Θ
)
]
\bold u^R=\begin{bmatrix}(\Theta_x/\Theta)\\(\Theta_y/\Theta)\\(\Theta_z/\Theta)\end{bmatrix}
uR=
(Θx/Θ)(Θy/Θ)(Θz/Θ)
,
Θ
x
/
Θ
、
Θ
y
/
Θ
、
Θ
z
/
Θ
\Theta_x/\Theta、\Theta_y/\Theta、\Theta_z/\Theta
Θx/Θ、Θy/Θ、Θz/Θ是导航系中的方向余弦。
姿态转换矩阵:
C
b
R
=
[
1
0
0
0
1
0
0
0
1
]
+
2
c
o
s
θ
2
[
0
−
n
s
i
n
θ
2
m
s
i
n
θ
2
n
s
i
n
θ
2
0
−
l
s
i
n
θ
2
−
m
s
i
n
θ
2
l
s
i
n
θ
2
0
]
+
2
[
−
(
m
2
+
n
2
)
s
i
n
2
θ
2
l
m
s
i
n
2
θ
2
l
n
s
i
n
2
θ
2
l
m
s
i
n
2
θ
2
−
(
l
2
+
n
2
)
s
i
n
2
θ
2
m
n
s
i
n
2
θ
2
l
n
s
i
n
2
θ
2
m
n
s
i
n
2
θ
2
−
(
m
2
+
n
2
)
s
i
n
2
θ
2
]
C_b^R=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}+2cos\frac{\theta}{2}\begin{bmatrix}0&-nsin\frac{\theta}{2}&msin\frac{\theta}{2}\\nsin\frac{\theta}{2}&0&-lsin\frac{\theta}{2}\\-msin\frac{\theta}{2}&lsin\frac{\theta}{2}&0\end{bmatrix}\\+2\begin{bmatrix}-(m^2+n^2)sin^2\frac{\theta}{2}&lmsin^2\frac{\theta}{2}&lnsin^2\frac{\theta}{2}\\lmsin^2\frac{\theta}{2}&-(l^2+n^2)sin^2\frac{\theta}{2}&mnsin^2\frac{\theta}{2}\\lnsin^2\frac{\theta}{2}&mnsin^2\frac{\theta}{2}&-(m^2+n^2)sin^2\frac{\theta}{2}\end{bmatrix}
CbR=
100010001
+2cos2θ
0nsin2θ−msin2θ−nsin2θ0lsin2θmsin2θ−lsin2θ0
+2
−(m2+n2)sin22θlmsin22θlnsin22θlmsin22θ−(l2+n2)sin22θmnsin22θlnsin22θmnsin22θ−(m2+n2)sin22θ
简化上式,令:
{
q
0
=
c
o
s
θ
2
q
1
=
l
s
i
n
θ
2
q
2
=
m
s
i
n
θ
2
q
3
=
n
s
i
n
θ
2
\begin{cases}q_0=cos\frac{\theta}{2}\\q_1=lsin\frac{\theta}{2}\\q_2=msin\frac{\theta}{2}\\q_3=nsin\frac{\theta}{2}\end{cases}
⎩
⎨
⎧q0=cos2θq1=lsin2θq2=msin2θq3=nsin2θ
∣
∣
Q
∣
∣
=
q
0
2
+
q
1
2
+
q
2
2
+
q
3
2
=
1
||Q||=q_0^2+q_1^2+q_2^2+q_3^2=1
∣∣Q∣∣=q02+q12+q22+q32=1,为规范四元数,并且以
q
0
,
q
1
,
q
2
,
q
3
q_0,q_1,q_2,q_3
q0,q1,q2,q3构造四元数:
Q
=
c
o
s
θ
2
+
u
R
s
i
n
θ
2
Q=cos\frac{\theta}{2}+\bold u^Rsin\frac{\theta}{2}
Q=cos2θ+uRsin2θ
(1)物理意义: 绕参考坐标系R内的一个的单位向量
u
⃗
\vec u
u转动角度
θ
\theta
θ,注意:不是转动
θ
2
\frac{\theta}{2}
2θ!!!
(2)四元数可以确定b系至R(R是参考坐标系,一般选择导航坐标系n)系的姿态转换矩阵:
C
b
R
=
[
1
−
2
(
q
2
2
+
q
3
2
)
2
(
q
1
q
2
−
q
3
q
0
)
2
(
q
1
q
3
+
q
2
q
0
)
2
(
q
1
q
2
+
q
3
q
0
)
1
−
2
(
q
1
2
+
q
3
2
)
2
(
q
2
q
3
−
q
1
q
0
)
2
(
q
1
q
3
−
q
2
q
0
)
2
(
q
2
q
3
+
q
1
q
0
)
1
−
(
q
1
2
+
q
3
2
)
]
C_b^R=\begin{bmatrix} 1-2(q^2_{2}+q^2_{3}) &2(q_{1}q_{2}-q_{3}q_{0})&2(q_{1}q_{3}+q_{2}q_{0})\\ 2(q_{1}q_{2}+q_{3}q_{0}) &1-2(q^2_{1}+q^2_{3})&2(q_{2}q_{3}-q_{1}q_{0})\\ 2(q_{1}q_{3}-q_{2}q_{0})&2(q_{2}q_{3}+q_{1}q_{0})&1-(q^2_{1}+q^2_{3}) \end{bmatrix}
CbR=
1−2(q22+q32)2(q1q2+q3q0)2(q1q3−q2q0)2(q1q2−q3q0)1−2(q12+q32)2(q2q3+q1q0)2(q1q3+q2q0)2(q2q3−q1q0)1−(q12+q32)
由于是规范四元数,也可以写作下式
C
b
R
=
[
q
1
2
−
q
2
2
−
q
3
2
+
q
0
2
2
(
q
1
q
2
−
q
3
q
0
)
2
(
q
1
q
3
+
q
2
q
0
)
2
(
q
1
q
2
+
q
3
q
0
)
−
q
1
2
+
q
2
2
−
q
3
2
+
q
0
2
2
(
q
2
q
3
−
q
1
q
0
)
2
(
q
1
q
3
−
q
2
q
0
)
2
(
q
2
q
3
+
q
1
q
0
)
−
q
1
2
−
q
2
2
+
q
3
2
+
q
0
2
]
C_b^R=\begin{bmatrix} q^2_{1}-q^2_{2}-q^2_{3}+q^2_{0} &2(q_{1}q_{2}-q_{3}q_{0})&2(q_{1}q_{3}+q_{2}q_{0})\\ 2(q_{1}q_{2}+q_{3}q_{0}) &-q^2_{1}+q^2_{2}-q^2_{3}+q^2_{0}&2(q_{2}q_{3}-q_{1}q_{0})\\ 2(q_{1}q_{3}-q_{2}q_{0})&2(q_{2}q_{3}+q_{1}q_{0})&-q^2_{1}-q^2_{2}+q^2_{3}+q^2_{0} \end{bmatrix}
CbR=
q12−q22−q32+q022(q1q2+q3q0)2(q1q3−q2q0)2(q1q2−q3q0)−q12+q22−q32+q022(q2q3+q1q0)2(q1q3+q2q0)2(q2q3−q1q0)−q12−q22+q32+q02
(3)如果把
r
R
、
r
b
\bold r^R、\bold r^b
rR、rb看做是零标量的四元数,那么他们之间的变换关系可以采用四元数乘法表示:
r
R
=
Q
⨂
r
b
⨂
Q
∗
\bold r^R=\bold Q\bigotimes\bold r^b\bigotimes\bold Q^*
rR=Q⨂rb⨂Q∗
该式称为坐标变换的四元数乘表示法
设参考坐标系为导航坐标系n,设航向角为
Ψ
\Psi
Ψ,俯仰角为
θ
\theta
θ,横滚角为
γ
\gamma
γ:
C
b
n
=
[
c
o
s
Ψ
c
o
s
γ
+
s
i
n
Ψ
s
i
n
θ
s
i
n
γ
s
i
n
Ψ
c
o
s
θ
c
o
s
Ψ
c
o
s
γ
−
s
i
n
Ψ
s
i
n
θ
c
o
s
γ
−
s
i
n
Ψ
c
o
s
γ
+
c
o
s
Ψ
s
i
n
θ
s
i
n
γ
c
o
s
Ψ
c
o
s
θ
−
s
i
n
Ψ
s
i
n
γ
−
c
o
s
Ψ
s
i
n
θ
c
o
s
γ
−
c
o
s
θ
s
i
n
γ
s
i
n
θ
c
o
s
θ
c
o
s
γ
]
=
[
T
11
T
12
T
13
T
21
T
22
T
23
T
31
T
32
T
33
]
C_b^n=\begin{bmatrix} cos\Psi cos\gamma+sin\Psi sin\theta sin\gamma&sin\Psi cos\theta &cos\Psi cos\gamma-sin\Psi sin\theta cos\gamma\\ -sin\Psi cos\gamma+cos\Psi sin\theta sin\gamma&cos\Psi cos\theta &-sin\Psi sin\gamma-cos\Psi sin\theta cos\gamma\\ -cos\theta sin\gamma&sin\theta &cos\theta cos\gamma\end{bmatrix}\\=\begin{bmatrix}T_{11}&T_{12}&T_{13}\\T_{21}&T_{22}&T_{23}\\T_{31}&T_{32}&T_{33}\end{bmatrix}
Cbn=
cosΨcosγ+sinΨsinθsinγ−sinΨcosγ+cosΨsinθsinγ−cosθsinγsinΨcosθcosΨcosθsinθcosΨcosγ−sinΨsinθcosγ−sinΨsinγ−cosΨsinθcosγcosθcosγ
=
T11T21T31T12T22T32T13T23T33
下图为姿态角的真值表:
经过上述的分析:如果旋转四元数
Q
\bold Q
Q已经确定,那么就可以表示出
C
b
n
C_b^n
Cbn:
C
b
n
=
[
q
1
2
−
q
2
2
−
q
3
2
+
q
0
2
2
(
q
1
q
2
−
q
3
q
0
)
2
(
q
1
q
3
+
q
2
q
0
)
2
(
q
1
q
2
+
q
3
q
0
)
−
q
1
2
+
q
2
2
−
q
3
2
+
q
0
2
2
(
q
2
q
3
−
q
1
q
0
)
2
(
q
1
q
3
−
q
2
q
0
)
2
(
q
2
q
3
+
q
1
q
0
)
−
q
1
2
−
q
2
2
+
q
3
2
+
q
0
2
]
=
[
M
11
M
12
M
13
M
21
M
22
M
23
M
31
M
32
M
33
]
C_b^n=\begin{bmatrix} q^2_{1}-q^2_{2}-q^2_{3}+q^2_{0} &2(q_{1}q_{2}-q_{3}q_{0})&2(q_{1}q_{3}+q_{2}q_{0})\\ 2(q_{1}q_{2}+q_{3}q_{0}) &-q^2_{1}+q^2_{2}-q^2_{3}+q^2_{0}&2(q_{2}q_{3}-q_{1}q_{0})\\ 2(q_{1}q_{3}-q_{2}q_{0})&2(q_{2}q_{3}+q_{1}q_{0})&-q^2_{1}-q^2_{2}+q^2_{3}+q^2_{0} \end{bmatrix}\\=\begin{bmatrix}M_{11}&M_{12}&M_{13}\\M_{21}&M_{22}&M_{23}\\M_{31}&M_{32}&M_{33}\end{bmatrix}
Cbn=
q12−q22−q32+q022(q1q2+q3q0)2(q1q3−q2q0)2(q1q2−q3q0)−q12+q22−q32+q022(q2q3+q1q0)2(q1q3+q2q0)2(q2q3−q1q0)−q12−q22+q32+q02
=
M11M21M31M12M22M32M13M23M33
与基本旋转之后的转换矩阵对比,即可解算出姿态:
C
b
n
=
[
c
o
s
Ψ
c
o
s
γ
+
s
i
n
Ψ
s
i
n
θ
s
i
n
γ
s
i
n
Ψ
c
o
s
θ
c
o
s
Ψ
c
o
s
γ
−
s
i
n
Ψ
s
i
n
θ
c
o
s
γ
−
s
i
n
Ψ
c
o
s
γ
+
c
o
s
Ψ
s
i
n
θ
s
i
n
γ
c
o
s
Ψ
c
o
s
θ
−
s
i
n
Ψ
s
i
n
γ
−
c
o
s
Ψ
s
i
n
θ
c
o
s
γ
−
c
o
s
θ
s
i
n
γ
s
i
n
θ
c
o
s
θ
c
o
s
γ
]
=
[
T
11
T
12
T
13
T
21
T
22
T
23
T
31
T
32
T
33
]
C_b^n=\begin{bmatrix} cos\Psi cos\gamma+sin\Psi sin\theta sin\gamma&sin\Psi cos\theta &cos\Psi cos\gamma-sin\Psi sin\theta cos\gamma\\ -sin\Psi cos\gamma+cos\Psi sin\theta sin\gamma&cos\Psi cos\theta &-sin\Psi sin\gamma-cos\Psi sin\theta cos\gamma\\ -cos\theta sin\gamma&sin\theta &cos\theta cos\gamma\end{bmatrix}\\=\begin{bmatrix}T_{11}&T_{12}&T_{13}\\T_{21}&T_{22}&T_{23}\\T_{31}&T_{32}&T_{33}\end{bmatrix}
Cbn=
cosΨcosγ+sinΨsinθsinγ−sinΨcosγ+cosΨsinθsinγ−cosθsinγsinΨcosθcosΨcosθsinθcosΨcosγ−sinΨsinθcosγ−sinΨsinγ−cosΨsinθcosγcosθcosγ
=
T11T21T31T12T22T32T13T23T33
一定注意的是,
C
b
n
、
C
n
b
C_b^n、 C_n^b
Cbn、Cnb矩阵存在着转置的关系!!!计算时一定要注意!!!
例如,求解
θ
\theta
θ时可以用
C
n
b
C_n^b
Cnb中可以第二列求解,即
θ
=
a
r
c
t
a
n
(
s
i
n
θ
(
s
i
n
Ψ
c
o
s
θ
)
2
+
(
c
o
s
Ψ
c
o
s
θ
)
2
)
\theta=arctan(\frac{sin\theta}{\sqrt{(sin\Psi cos\theta)^2+(cos\Psi cos\theta)^2}})
θ=arctan((sinΨcosθ)2+(cosΨcosθ)2sinθ),也就是
θ
=
a
r
c
t
a
n
(
T
32
T
12
2
+
T
22
2
)
\theta=arctan(\frac{T_{32}}{\sqrt{T_{12}^2+T_{22}^2}})
θ=arctan(T122+T222T32),由于知道了四元素构成的
C
b
n
C_b^n
Cbn,那么
θ
=
a
r
c
t
a
n
(
M
32
M
12
2
+
M
22
2
)
\theta=arctan(\frac{M_{32}}{\sqrt{M_{12}^2+M_{22}^2}})
θ=arctan(M122+M222M32) ,这就是最终的计算公式。
下面是我的代码中使用的姿态解算公式:
gyro_var->euler.pit = (asin(2*q2q3 + 2*q0q1))*57.29578f;
gyro_var->euler.roll = (atan2(-2*q1q3 + 2*q0q2, -2*q1q1-2*q2q2 + 1))*57.29578f;
gyro_var->euler.yaw = (atan2(2*q1q2 - 2*q0q3, -2*q2q2-2*q3q3+1))*57.29578f;
三、四元数微分方程
令
ω
R
b
b
=
[
ω
x
ω
y
ω
z
]
\omega_{Rb}^b=\begin{bmatrix}\omega_x\\\omega_y\\\omega_z\end{bmatrix}
ωRbb=
ωxωyωz
,
d
Q
d
t
=
1
2
M
′
(
ω
R
b
b
)
Q
\frac{d\bold Q}{dt}=\frac{1}{2}\bold M'(\omega_{Rb}^b)\bold Q
dtdQ=21M′(ωRbb)Q
即
[
q
˙
0
q
˙
1
q
˙
2
q
˙
3
]
=
1
2
[
0
−
ω
x
−
ω
y
−
ω
z
ω
x
0
ω
z
−
ω
y
ω
y
−
ω
z
0
ω
x
ω
z
ω
y
−
ω
x
0
]
[
q
0
q
1
q
2
q
3
]
\begin{bmatrix}\dot q_0\\\dot q_1\\\dot q_2\\\dot q_3\end{bmatrix}=\frac{1}{2}\begin{bmatrix}0&-\omega_x&-\omega_y&-\omega_z\\ \omega_x&0&\omega_z&-\omega_y\\ \omega_y&-\omega_z&0&\omega_x\\ \omega_z&\omega_y&-\omega_x&0 \end{bmatrix} \begin{bmatrix} q_0\\q_1\\ q_2\\ q_3\end{bmatrix}
q˙0q˙1q˙2q˙3
=21
0ωxωyωz−ωx0−ωzωy−ωyωz0−ωx−ωz−ωyωx0
q0q1q2q3
ω
n
b
b
\omega_{nb}^b
ωnbb可以使用
ω
n
b
b
=
ω
i
b
b
−
C
n
b
(
ω
i
e
n
+
ω
e
n
n
)
\omega_{nb}^b=\omega_{ib}^b-C_n^b(\omega_{ie}^n+\omega_{en}^n)
ωnbb=ωibb−Cnb(ωien+ωenn)公式计算,
ω
i
b
b
\omega_{ib}^b
ωibb是陀螺仪的输出(对陀螺仪必须经过动、静态误差的补偿),
ω
i
e
n
、
ω
e
n
n
\omega_{ie}^n、\omega_{en}^n
ωien、ωenn分别是 位置速率和地球自转速率:
ω
i
e
n
+
ω
e
n
n
=
(
−
V
N
R
M
V
E
R
N
+
ω
i
e
c
o
s
L
V
E
t
a
n
L
R
N
+
ω
i
e
s
i
n
L
)
\omega_{ie}^n+\omega_{en}^n=\begin{pmatrix}\frac{-V_N}{R_M}\\ \frac{V_E}{R_N}+\omega_{ie}cosL \\ \frac{V_{E}tanL}{R_N}+\omega_{ie}sinL \end{pmatrix}
ωien+ωenn=
RM−VNRNVE+ωiecosLRNVEtanL+ωiesinL
秦老师在第七章介绍了上式的一些定义:
L
L
L为地理纬度,
R
M
,
R
N
R_M,R_N
RM,RN分别是沿子午圈和沿卯酉圈的曲率半径:
R
M
=
R
e
(
1
−
f
)
2
[
1
−
(
2
−
f
)
s
i
n
2
L
]
−
3
2
R_M=R_e(1-f)^2[1-(2-f)sin^2L]^{-\frac{3}{2}}
RM=Re(1−f)2[1−(2−f)sin2L]−23
R
N
=
R
e
[
1
−
(
2
−
f
)
s
i
n
2
L
]
−
1
2
R_N=R_e[1-(2-f)sin^2L]^{-\frac{1}{2}}
RN=Re[1−(2−f)sin2L]−21
R
e
R_e
Re是地球(椭圆)的长轴,
R
p
R_p
Rp是地球(椭圆)的短轴,
R
p
=
(
1
−
f
)
R
e
R_p=(1-f)R_e
Rp=(1−f)Re 。
四、四元数微分方程的毕卡求解法
这里只介绍一下定时采样增量法,主要是通过对
Q
Q
Q进行泰勒展开,对四元数进行各阶的近似:
一般通常使用一阶近似算法即可,四元数计算如下:
当选取:
{
q
0
=
c
o
s
θ
2
q
1
=
l
s
i
n
θ
2
q
2
=
m
s
i
n
θ
2
q
3
=
n
s
i
n
θ
2
\begin{cases}q_0=cos\frac{\theta}{2}\\q_1=lsin\frac{\theta}{2}\\q_2=msin\frac{\theta}{2}\\q_3=nsin\frac{\theta}{2}\end{cases}
⎩
⎨
⎧q0=cos2θq1=lsin2θq2=msin2θq3=nsin2θ
Q
(
k
+
1
)
Q(k+1)
Q(k+1)计算如下
Q
(
k
+
1
)
=
Q
(
k
)
+
1
2
(
0
−
Δ
θ
x
−
Δ
θ
y
−
Δ
θ
z
Δ
θ
x
0
Δ
θ
z
−
Δ
θ
y
Δ
θ
y
−
Δ
θ
z
0
Δ
θ
x
Δ
θ
z
Δ
θ
y
−
Δ
θ
x
0
)
Q
(
k
)
Q(k+1)= Q(k)+\frac{1}{2}\begin{pmatrix} 0&-\Delta\theta_x&-\Delta\theta_y&-\Delta\theta_z\\ \Delta\theta_x&0&\Delta\theta_z&-\Delta\theta_y\\ \Delta\theta_y&-\Delta\theta_z&0&\Delta\theta_x\\ \Delta\theta_z&\Delta\theta_y&-\Delta\theta_x&0\end{pmatrix}Q(k)
Q(k+1)=Q(k)+21
0ΔθxΔθyΔθz−Δθx0−ΔθzΔθy−ΔθyΔθz0−Δθx−Δθz−ΔθyΔθx0
Q(k)
注意,在一些论文或者书籍中,
q
0
,
q
1
,
q
2
,
q
3
q_0,q_1,q_2,q_3
q0,q1,q2,q3与上面的选取不同,例如选取,当选取如下时:
{
q
0
=
l
s
i
n
θ
2
q
1
=
m
s
i
n
θ
2
q
2
=
n
s
i
n
θ
2
q
3
=
c
o
s
θ
2
\begin{cases}q_0=lsin\frac{\theta}{2}\\q_1=msin\frac{\theta}{2}\\q_2=nsin\frac{\theta}{2}\\q_3=cos\frac{\theta}{2}\end{cases}
⎩
⎨
⎧q0=lsin2θq1=msin2θq2=nsin2θq3=cos2θ
Q
(
k
+
1
)
Q(k+1)
Q(k+1)计算如下
Q
(
k
+
1
)
=
Q
(
k
)
+
1
2
(
0
Δ
θ
z
−
Δ
θ
y
Δ
θ
x
−
Δ
θ
z
0
Δ
θ
x
Δ
θ
y
Δ
θ
y
−
Δ
θ
x
0
Δ
θ
z
−
Δ
θ
x
−
Δ
θ
y
−
Δ
θ
z
0
)
Q
(
k
)
Q(k+1)= Q(k)+\frac{1}{2}\begin{pmatrix} 0&\Delta\theta_z&-\Delta\theta_y&\Delta\theta_x \\ -\Delta\theta_z&0&\Delta\theta_x&\Delta\theta_y\\ \Delta\theta_y&-\Delta\theta_x&0&\Delta\theta_z\\ -\Delta\theta_x&-\Delta\theta_y&-\Delta\theta_z&0\end{pmatrix}Q(k)
Q(k+1)=Q(k)+21
0−ΔθzΔθy−ΔθxΔθz0−Δθx−Δθy−ΔθyΔθx0−ΔθzΔθxΔθyΔθz0
Q(k)
五、往期回顾
课题学习(一)----静态测量
课题学习(二)----倾角和方位角的动态测量方法(基于磁场的测量系统)
课题学习(三)----倾角和方位角的动态测量方法(基于陀螺仪的测量系统)
课题学习(四)----四元数解法
课题学习(五)----阅读论文《抗差自适应滤波的导向钻具动态姿态测量方法》
课题学习(六)----安装误差校准、实验方法
课题学习(七)----粘滑运动的动态算法
课题学习(八)----卡尔曼滤波动态求解倾角、方位角
课题学习(九)----阅读《导向钻井工具姿态动态测量的自适应滤波方法》论文笔记
课题学习(十)----阅读《基于数据融合的近钻头井眼轨迹参数动态测量方法》论文笔记
课题学习(十一)----阅读《Attitude Determination with Magnetometers and Accelerometers to Use in Satellite》
课题学习(十二)----阅读《Extension of a Two-Step Calibration Methodology to Include Nonorthogonal Sensor Axes》
课题学习(十三)----阅读《Calibration of Strapdown Magnetometers in Magnetic Field Domain》论文笔记
课题学习(十四)----三轴加速度计+三轴陀螺仪传感器-ICM20602
课题学习(十五)----阅读《测斜仪旋转姿态测量信号处理方法》论文
课题学习(十六)----阅读《Continuous Wellbore Surveying While Drilling Utilizing MEMS Gyroscopes Based…》论文