《视觉SLAM十四讲》第三章阅读笔记(二)
阅读本章前建议阅读以下两篇文章,作为理论支撑:
《视觉SLAM十四讲》第三章阅读笔记(一)
《视觉SLAM十四讲》第三章阅读笔记(补充阅读,Eigen介绍)
1、欧拉角
将一个旋转分成绕三个轴旋转的三个角称为欧拉角。分别是:
绕车体
Z
Z
Z轴旋转,得到的角为偏航角
y
a
w
yaw
yaw;
绕旋转之后的
Y
Y
Y轴旋转得到的角,为俯仰角
p
i
t
c
h
pitch
pitch;
绕旋转之后的
X
X
X轴旋转得到的角,为滚转角
r
o
l
l
roll
roll;
简记为:
类型 | 定义 |
---|---|
偏航角 | 绕Z轴旋转 |
俯仰角 | 绕Y轴旋转 |
滚转角 | 绕X轴旋转 |
其中通常所称的 r p y rpy rpy角的旋转方式为 Z Y X ZYX ZYX。
欧拉角 ⇔ \bm{\Leftrightarrow} ⇔旋转矩阵
绕Z轴旋转时定义:
R
Z
=
[
c
o
s
y
−
s
i
n
y
0
s
i
n
y
c
o
s
y
0
0
0
1
]
\bm R_Z=\begin{bmatrix} cos\bm y &-sin\bm y &0\\\ sin\bm y &cos\bm y &0\\\ 0&0 &1\end{bmatrix}
RZ=⎣⎡cosy siny 0−sinycosy0001⎦⎤
绕Y轴旋转时定义
R
Y
=
[
c
o
s
p
0
s
i
n
p
0
1
0
−
s
i
n
p
0
c
o
s
p
]
\bm R_Y=\begin{bmatrix} cos\bm p &0&sin\bm p \\\ 0&1 &0\\\ -sin\bm p&0 &cos\bm p\end{bmatrix}
RY=⎣⎡cosp 0 −sinp010sinp0cosp⎦⎤
绕X轴旋转时定义
R
X
=
[
1
0
0
0
c
o
s
r
s
i
n
r
0
c
o
s
r
s
i
n
r
]
\bm R_X=\begin{bmatrix}1 &0&0\\\ 0&cos\bm r&sin\bm r \\\ 0&cos\bm r&sin\bm r\end{bmatrix}
RX=⎣⎡1 0 00cosrcosr0sinrsinr⎦⎤
以ZYX的旋转方式为例,可以求解得到旋转的向量为:
R
=
R
Z
R
Y
R
X
\bm R=\bm R_Z\bm R_Y\bm R_X
R=RZRYRX
R
=
[
c
y
c
p
c
y
s
p
s
r
−
s
y
c
r
c
y
s
p
c
r
+
s
y
s
r
s
y
c
p
s
y
s
p
s
r
+
c
y
c
r
s
y
s
p
c
r
−
c
y
s
r
−
s
p
c
p
s
r
c
p
c
r
]
\bm R=\begin{bmatrix}c\bm yc\bm p &c\bm ys\bm ps\bm r-s\bm yc\bm r&c\bm ys\bm pc\bm r+s\bm ys\bm r\\\ s\bm yc\bm p&s\bm ys\bm ps\bm r+c\bm yc\bm r&s\bm ys\bm pc\bm r-c\bm ys\bm r \\\ -s\bm p&c\bm ps\bm r&c\bm pc\bm r\end{bmatrix}
R=⎣⎡cycp sycp −spcyspsr−sycrsyspsr+cycrcpsrcyspcr+sysrsyspcr−cysrcpcr⎦⎤
反解出欧拉角为:
{
r
=
a
t
a
n
(
R
(
32
)
R
(
33
)
)
,
p
=
a
r
c
s
i
n
(
−
R
(
31
)
)
y
=
a
r
c
t
a
n
(
R
(
21
)
R
(
11
)
)
,
\left\{ \begin{array}{lr} \bm r=atan(\frac{\bm R(32)}{\bm R(33)}),& \\ \bm p=arcsin(-\bm R(31))\\ \bm y=arctan(\frac{\bm R(21)}{\bm R(11)}),& \end{array} \right.
⎩⎪⎨⎪⎧r=atan(R(33)R(32)),p=arcsin(−R(31))y=arctan(R(11)R(21)),
注意其他几种形式
R
X
Y
Z
=
[
c
p
c
y
−
c
p
c
y
s
p
c
r
s
y
+
c
y
s
r
s
p
c
r
c
y
−
s
r
s
p
s
y
−
c
p
s
r
s
r
s
y
−
c
r
s
p
c
y
c
y
s
r
+
c
r
s
p
s
y
c
p
c
r
]
\bm R_{XYZ}=\begin{bmatrix}c\bm pc\bm y &-c\bm pc\bm y&s\bm p\\\ c\bm rs\bm y+c\bm ys\bm rs\bm p&c\bm rc\bm y- s\bm rs\bm ps\bm y&-c\bm ps\bm r\\\ s\bm rs\bm y-c\bm rs\bm pc\bm y&c\bm ys\bm r+c\bm rs\bm ps\bm y&c\bm pc\bm r\end{bmatrix}
RXYZ=⎣⎡cpcy crsy+cysrsp srsy−crspcy−cpcycrcy−srspsycysr+crspsysp−cpsrcpcr⎦⎤
R
X
Z
Y
=
[
c
p
c
y
−
s
p
c
p
s
y
s
r
s
y
+
c
r
c
y
s
p
c
r
c
p
c
r
s
p
r
s
y
−
c
y
s
r
c
y
s
r
s
p
−
c
r
s
y
c
p
s
r
c
r
c
y
+
s
r
s
p
s
y
]
\bm R_{XZY}=\begin{bmatrix}c\bm pc\bm y &-s\bm p&c\bm ps\bm y\\\ s\bm rs\bm y+c\bm rc\bm ys\bm p&c\bm rc\bm p&c\bm rs\bm prs\bm y-c\bm ys\bm r\\\ c\bm ys\bm rs\bm p-c\bm rs\bm y&c\bm ps\bm r&c\bm rc\bm y+s\bm rs\bm ps\bm y\end{bmatrix}
RXZY=⎣⎡cpcy srsy+crcysp cysrsp−crsy−spcrcpcpsrcpsycrsprsy−cysrcrcy+srspsy⎦⎤
R
Y
X
Z
=
[
c
r
c
y
+
s
r
s
p
s
r
c
y
s
p
s
r
−
c
r
s
y
c
p
s
r
c
p
s
y
c
y
c
p
−
s
p
c
r
s
p
s
y
−
c
y
s
r
c
r
c
y
s
p
+
s
r
s
y
c
r
c
p
]
\bm R_{YXZ}=\begin{bmatrix}c\bm rc\bm y +s\bm rs\bm ps\bm r&c\bm ys\bm ps\bm r- c\bm rs\bm y&c\bm ps\bm r\\\ c\bm ps\bm y&c\bm yc\bm p&-s\bm p\\\ c\bm rs\bm ps\bm y-c\bm ys\bm r&c\bm rc\bm ys\bm p+s\bm rs\bm y&c\bm rc\bm p\end{bmatrix}
RYXZ=⎣⎡crcy+srspsr cpsy crspsy−cysrcyspsr−crsycycpcrcysp+srsycpsr−spcrcp⎦⎤
R
Y
Z
X
=
[
c
r
c
p
s
r
s
y
−
c
r
s
y
c
p
s
r
c
p
s
y
c
y
c
p
−
s
p
c
r
s
p
s
y
−
c
y
s
r
c
r
c
y
s
p
+
s
r
s
y
c
r
c
p
]
\bm R_{YZX}=\begin{bmatrix}c\bm rc\bm p &s\bm rs\bm y-c\bm rs\bm y&c\bm ps\bm r\\\ c\bm ps\bm y&c\bm yc\bm p&-s\bm p\\\ c\bm rs\bm ps\bm y-c\bm ys\bm r&c\bm rc\bm ys\bm p+s\bm rs\bm y&c\bm rc\bm p\end{bmatrix}
RYZX=⎣⎡crcp cpsy crspsy−cysrsrsy−crsycycpcrcysp+srsycpsr−spcrcp⎦⎤
R
Z
Y
X
=
[
c
r
c
p
c
r
s
p
s
y
−
c
y
s
r
s
r
s
y
+
c
r
c
y
s
p
c
p
s
r
c
r
c
y
+
s
r
s
p
s
y
c
y
s
r
s
p
−
c
r
s
y
−
s
p
c
p
s
y
c
p
c
y
]
\bm R_{ZYX}=\begin{bmatrix}c\bm rc\bm p &c\bm rs\bm ps\bm y-c\bm ys\bm r&s\bm rs\bm y+c\bm rc\bm ys\bm p\\\ c\bm ps\bm r&c\bm rc\bm y+s\bm rs\bm ps\bm y&c\bm ys\bm rs\bm p-c\bm rs\bm y \\\ -s\bm p&c\bm ps\bm y&c\bm pc\bm y\end{bmatrix}
RZYX=⎣⎡crcp cpsr −spcrspsy−cysrcrcy+srspsycpsysrsy+crcyspcysrsp−crsycpcy⎦⎤
R
Z
X
Y
=
[
c
r
c
y
−
s
r
s
p
s
y
−
c
p
s
r
c
r
s
y
+
c
y
s
r
s
p
c
y
s
r
+
c
r
s
p
s
y
c
r
c
p
s
r
s
y
−
c
r
c
y
s
p
−
c
p
s
y
s
p
c
p
c
y
]
\bm R_{ZXY}=\begin{bmatrix}c\bm rc\bm y-s\bm rs\bm ps\bm y &-c\bm ps\bm r&c\bm rs\bm y+c\bm ys\bm rs\bm p\\\ c\bm ys\bm r+c\bm rs\bm ps\bm y&c\bm rc\bm p&s\bm rs\bm y-c\bm rc\bm ys\bm p \\\ -c\bm ps\bm y&s\bm p&c\bm pc\bm y\end{bmatrix}
RZXY=⎣⎡crcy−srspsy cysr+crspsy −cpsy−cpsrcrcpspcrsy+cysrspsrsy−crcyspcpcy⎦⎤
2、四元数
定义一个类似于复数的的代数:四元数(Quaternion),它是紧凑的,也没有奇异性。一个四元数
q
\bm q
q拥有一个实部和三个虚部,同样的也可以感受一下其使用四元数的魅力,即:
q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
\bm q=q_0+q_1\bm i+q_2\bm j+q_3\bm k
q=q0+q1i+q2j+q3k
其中,
i
、
j
、
k
\bm i 、\bm j、\bm k
i、j、k为三个四元数的虚部,满足以下关系:
{
i
2
=
j
2
=
k
2
=
−
1
i
j
=
k
,
j
i
=
−
k
j
k
=
i
,
k
j
=
−
i
k
i
=
j
,
i
k
=
−
j
\left\{ \begin{array}{lr} \bm i^2=\bm j^2=\bm k^2=-1& \\ \bm i\bm j=\bm k,\bm j\bm i=-\bm k\\ \bm j\bm k=\bm i,\bm k\bm j=-\bm i\\ \bm k\bm i=\bm j,\bm i\bm k=-\bm j& \end{array} \right.
⎩⎪⎪⎨⎪⎪⎧i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j
用一个标量和一个向量来表达四元数:
q
=
[
s
,
v
]
,
s
=
q
0
∈
R
,
v
=
[
q
1
,
q
2
,
q
3
]
T
∈
R
3
\bm q=[s,\bm v], s=q_0\in{\mathbb R},\bm v={[q_1,q_2,q_3]}^{T}\in{\mathbb R}^{3}
q=[s,v],s=q0∈R,v=[q1,q2,q3]T∈R3
这里的定义和复数的定义类似,
s
s
s称为实部,
v
\bm v
v称为虚部,如果四元数虚部为0,称之为实四元数,反之如果虚部为0,称之为虚四元数。
该性质是,乘以
i
\bm i
i,意味着绕
i
\bm i
i旋转
180
°
180\degree
180°,对于
k
、
j
\bm k、\bm j
k、j也同样适用。
四元数 ⇔ \bm{\Leftrightarrow} ⇔旋转向量
假设某个旋转是绕单位向量
n
=
[
n
x
,
n
y
,
n
z
]
T
\bm n=[n_x,n_y,n_z]^T
n=[nx,ny,nz]T,进行了角度为
θ
\theta
θ的旋转,旋转四元数的形式为:
q
=
[
c
o
s
θ
2
,
n
x
s
i
n
θ
2
,
n
y
s
i
n
θ
2
,
n
z
s
i
n
θ
2
]
T
\bm q=[cos\frac{\theta}{2},n_xsin\frac{\theta}{2},n_ysin\frac{\theta}{2},n_zsin\frac{\theta}{2}]^T
q=[cos2θ,nxsin2θ,nysin2θ,nzsin2θ]T
同样可以反解出:
{
θ
=
2
a
r
c
c
o
s
q
0
[
n
x
,
n
y
,
n
z
]
T
=
[
q
1
,
q
2
,
q
3
]
T
/
s
i
n
θ
2
\left\{ \begin{array}{lr} \bm \theta=2arccosq_0& \\ [n_x,n_y,n_z]^T=[q_1,q_2,q_3]^T/sin\frac{\theta}{2}& \end{array} \right.
{θ=2arccosq0[nx,ny,nz]T=[q1,q2,q3]T/sin2θ
四元数表示旋转
假设一个空间的三维点
p
=
[
x
,
y
,
z
]
∈
R
3
\bm p=[x,y,z]\in{\mathbb R^3}
p=[x,y,z]∈R3,使用四元数来表达为:
p
=
[
0
,
x
,
y
,
z
]
=
[
0
,
v
]
\bm p=[0,x,y,z]=[0,\bm v]
p=[0,x,y,z]=[0,v]
同样地,如果使用旋转向量则为
n
\bm n
n和
θ
\theta
θ,根据上面公式的推导则有:
q
=
[
c
o
s
θ
2
,
n
s
i
n
θ
2
]
\bm q=[cos\frac{\theta}{2},\bm nsin\frac{\theta}{2}]
q=[cos2θ,nsin2θ]
q
q
q的共轭为:
q
∗
=
[
c
o
s
θ
2
,
−
n
s
i
n
θ
2
]
\bm q^*=[cos\frac{\theta}{2},-\bm nsin\frac{\theta}{2}]
q∗=[cos2θ,−nsin2θ]
求逆为:
q
−
1
=
q
∗
∣
∣
q
∣
∣
\bm q^{-1}=\frac{q^*}{||q||}
q−1=∣∣q∣∣q∗
旋转后的点
p
′
p^{'}
p′即可表示为这样的乘积,具体的推导过程可见Understanding Quaternions 中文翻译《理解四元数》和Understanding Quaternions:
p
′
=
q
p
q
−
1
\bm p'=\bm q\bm p\bm q^{-1}
p′=qpq−1
四元数 ⇔ \bm{\Leftrightarrow} ⇔旋转矩阵
四元数
⇒
\bm{\Rightarrow}
⇒旋转矩阵
方法一
已知四元数
q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
=
[
s
,
v
]
\bm q=q_0+q_1\bm i+q_2\bm j+q _3\bm k=[s,\bm v]
q=q0+q1i+q2j+q3k=[s,v],可以利用利用Rodrigues公式可以由四元数求得旋转矩阵
R
R
R:
R
=
[
1
−
2
q
2
2
−
2
q
3
2
2
q
1
q
2
−
2
q
0
q
3
2
q
1
q
3
+
2
q
0
q
2
2
q
1
q
2
+
2
q
0
q
3
1
−
2
q
1
2
−
2
q
3
2
2
q
2
q
3
−
2
q
0
q
1
2
q
1
q
3
−
2
q
0
q
2
s
2
q
2
q
3
+
2
q
0
q
1
1
−
2
q
1
2
−
2
q
2
2
]
\bm R=\begin{bmatrix}1-2q_2^2-2q_3^2&2q_1q_2-2q_0q_3&2q_1q_3+2q_0q_2\\\ 2q_1q_2+2q_0q_3&1-2q_1^2-2q_3^2&2q_2q_3-2q_0q_1\\\ 2q_1q_3-2q_0q2&s2q_2q_3+2q_0q_1&1-2q_1^2-2q_ 2^2\end{bmatrix}
R=⎣⎡1−2q22−2q32 2q1q2+2q0q3 2q1q3−2q0q22q1q2−2q0q31−2q12−2q32s2q2q3+2q0q12q1q3+2q0q22q2q3−2q0q11−2q12−2q22⎦⎤
方法二:
R
=
e
ω
θ
=
I
+
ω
×
s
i
n
θ
+
ω
×
2
(
1
−
c
o
s
θ
)
=
I
+
[
0
−
z
y
z
0
−
x
−
y
x
0
]
s
i
n
θ
+
[
−
y
2
−
z
2
x
y
x
z
x
y
−
x
2
−
z
2
y
z
x
z
y
z
−
x
2
−
y
2
]
(
1
−
c
o
s
θ
)
=
[
1
−
z
s
i
n
θ
y
s
i
n
θ
z
s
i
n
θ
1
−
x
s
i
n
θ
−
y
s
i
n
θ
x
s
i
n
θ
1
]
+
[
−
y
2
−
z
2
x
y
x
z
x
y
−
x
2
−
z
2
y
z
x
z
y
z
−
x
2
−
y
2
]
(
1
−
c
o
s
θ
)
=
[
1
−
(
y
2
+
z
2
)
(
1
−
c
o
s
θ
)
−
z
s
i
n
θ
+
x
y
(
1
−
c
o
s
θ
)
y
s
i
n
θ
+
x
z
(
1
−
c
o
s
θ
)
z
s
i
n
θ
+
x
y
(
1
−
c
o
s
θ
)
1
−
(
x
2
+
z
2
)
(
1
−
c
o
s
θ
)
−
x
s
i
n
θ
+
y
z
(
1
−
c
o
s
θ
)
−
y
s
i
n
θ
+
x
z
(
1
−
c
o
s
θ
)
x
s
i
n
θ
+
y
z
(
1
−
c
o
s
θ
)
1
−
(
x
2
+
y
2
)
(
1
−
c
o
s
θ
)
]
=
[
c
o
s
θ
+
x
2
(
1
−
c
o
s
θ
)
−
z
s
i
n
θ
+
x
y
(
1
−
c
o
s
θ
)
y
s
i
n
θ
+
x
z
(
1
−
c
o
s
θ
)
z
s
i
n
θ
+
x
y
(
1
−
c
o
s
θ
)
c
o
s
θ
+
y
2
(
1
−
c
o
s
θ
)
−
x
s
i
n
θ
+
y
z
(
1
−
c
o
s
θ
)
−
y
s
i
n
θ
+
x
z
(
1
−
c
o
s
θ
)
x
s
i
n
θ
+
y
z
(
1
−
c
o
s
θ
)
c
o
s
θ
+
z
2
(
1
−
c
o
s
θ
)
]
R = e^{\mathbf{\omega} \theta} =\bm I + \mathbf{\omega}_{\times} sin\theta + \mathbf{\omega}_{\times}^2 (1 - cos\theta) \\ =\bm I + \left[ \begin{matrix} 0 & -z & y\\ z & 0 & -x \\ -y & x & 0 \end{matrix} \right ] sin\theta + \left[ \begin{matrix} -y^2-z^2 & xy & xz\\ xy & -x^2-z^2 & yz \\ xz & yz & -x^2-y^2 \end{matrix} \right ] (1-cos\theta)\\ = \left[ \begin{matrix} 1 & -zsin\theta & ysin\theta\\ zsin\theta & 1 & -xsin\theta \\ -ysin\theta & xsin\theta & 1 \end{matrix} \right ] + \left[ \begin{matrix} -y^2-z^2 & xy & xz\\ xy & -x^2-z^2 & yz \\ xz & yz & -x^2-y^2 \end{matrix} \right ] (1-cos\theta)\\ = \left[ \begin{matrix} 1-(y^2+z^2)(1-cos\theta) & -zsin\theta + xy(1-cos\theta) & ysin\theta + xz(1-cos\theta) \\ zsin\theta + xy(1-cos\theta) & 1 - (x^2+z^2)(1-cos\theta) & -xsin\theta + yz(1-cos\theta) \\ -ysin\theta + xz(1-cos\theta) & xsin\theta + yz(1-cos\theta) & 1-(x^2+y^2)(1-cos\theta) \end{matrix} \right ] \\ = \left[ \begin{matrix} cos\theta+x^2(1-cos\theta) & -zsin\theta + xy(1-cos\theta) & ysin\theta + xz(1-cos\theta) \\ zsin\theta + xy(1-cos\theta) & cos\theta+y^2(1-cos\theta) & -xsin\theta + yz(1-cos\theta) \\ -ysin\theta + xz(1-cos\theta) & xsin\theta + yz(1-cos\theta) & cos\theta+ z^2(1-cos\theta) \end{matrix} \right ]
R=eωθ=I+ω×sinθ+ω×2(1−cosθ)=I+⎣⎡0z−y−z0xy−x0⎦⎤sinθ+⎣⎡−y2−z2xyxzxy−x2−z2yzxzyz−x2−y2⎦⎤(1−cosθ)=⎣⎡1zsinθ−ysinθ−zsinθ1xsinθysinθ−xsinθ1⎦⎤+⎣⎡−y2−z2xyxzxy−x2−z2yzxzyz−x2−y2⎦⎤(1−cosθ)=⎣⎡1−(y2+z2)(1−cosθ)zsinθ+xy(1−cosθ)−ysinθ+xz(1−cosθ)−zsinθ+xy(1−cosθ)1−(x2+z2)(1−cosθ)xsinθ+yz(1−cosθ)ysinθ+xz(1−cosθ)−xsinθ+yz(1−cosθ)1−(x2+y2)(1−cosθ)⎦⎤=⎣⎡cosθ+x2(1−cosθ)zsinθ+xy(1−cosθ)−ysinθ+xz(1−cosθ)−zsinθ+xy(1−cosθ)cosθ+y2(1−cosθ)xsinθ+yz(1−cosθ)ysinθ+xz(1−cosθ)−xsinθ+yz(1−cosθ)cosθ+z2(1−cosθ)⎦⎤
旋转矩阵
⇒
\bm{\Rightarrow}
⇒四元数
case1:满足
q
0
≠
0
q_0 \neq 0
q0=0,
1
+
r
11
+
r
22
+
r
33
>
0
1+r_{11}+r_{22}+r_{33}>0
1+r11+r22+r33>0,即
1
+
t
r
(
R
)
>
0
1+tr(\bm R)>0
1+tr(R)>0
q
0
=
1
+
r
11
+
r
22
+
r
33
2
q_0 = \frac{\sqrt{1+r_{11}+r_{22}+r_{33}}}{2}
q0=21+r11+r22+r33
q
1
=
r
32
−
r
23
4
q
0
q_1 = \frac{r_{32}-r_{23}}{4q_0}
q1=4q0r32−r23
q
2
=
r
13
−
r
31
4
q
0
q_2 = \frac{r_{13}-r_{31}}{4q_0}
q2=4q0r13−r31
q
3
=
r
21
−
r
12
4
q
0
q_3 = \frac{r_{21}-r_{12}}{4q_0}
q3=4q0r21−r12
case2:如果
q
0
q_0
q0,
t
r
(
R
)
tr(\bm R)
tr(R)趋近-1,则求解四元数的过程为:
1.如果
m
a
x
{
r
11
,
r
22
,
r
33
}
=
r
11
max\{r_{11},r_{22},r_{33}\}=r_{11}
max{r11,r22,r33}=r11
t
=
1
+
r
1
1
−
r
22
−
r
33
t = \sqrt{1+r_11 - r_{22} - r_{33}}
t=1+r11−r22−r33
q
0
=
r
32
−
r
23
t
q_0 = \frac{r_{32} - r_{23}}{t}
q0=tr32−r23
q
1
=
t
/
4
q_1 = t/4
q1=t/4
q
2
=
r
13
+
r
31
t
q_2 = \frac{r_{13} + r_{31}}{t}
q2=tr13+r31
q
3
=
r
12
+
r
21
t
q_3 = \frac{r_{12} + r_{21}}{t}
q3=tr12+r21
2.如果
m
a
x
{
r
11
,
r
22
,
r
33
}
=
r
22
max\{r_{11},r_{22},r_{33}\}=r_{22}
max{r11,r22,r33}=r22
t
=
1
−
r
1
1
+
r
22
−
r
33
t = \sqrt{1 - r_11 + r_{22} - r_{33}}
t=1−r11+r22−r33
q
0
=
r
13
−
r
31
t
q_0 = \frac{r_{13} - r_{31}}{t}
q0=tr13−r31
q
1
=
r
12
+
r
21
t
q_1 = \frac{r_{12} + r_{21}}{t}
q1=tr12+r21
q
2
=
t
/
4
q_2 = t/4
q2=t/4
q
3
=
r
32
+
r
23
t
q_3 = \frac{r_{32} + r_{23}}{t}
q3=tr32+r23
3.如果
m
a
x
{
r
11
,
r
22
,
r
33
}
=
r
33
max\{r_{11},r_{22},r_{33}\}=r_{33}
max{r11,r22,r33}=r33
t
=
1
−
r
1
1
−
r
22
+
r
33
t = \sqrt{1 - r_11 - r_{22} + r_{33}}
t=1−r11−r22+r33
q
0
=
r
21
−
r
12
t
q_0 = \frac{r_{21} - r_{12}}{t}
q0=tr21−r12
q
1
=
r
13
+
r
31
t
q_1 = \frac{r_{13} + r_{31}}{t}
q1=tr13+r31
q
2
=
r
23
−
r
32
t
q_2 = \frac{r_{23} - r_{32}}{t}
q2=tr23−r32
q
3
=
t
/
4
q_3 = t/4
q3=t/4
四元数 ⇔ \bm{\Leftrightarrow} ⇔欧拉角
欧拉角
⇒
\bm{\Rightarrow}
⇒四元数
欧拉角到四元数的转换,可以分为两步来推导,从欧拉角到旋转矩阵,再从旋转矩阵到四元数,直接给出结论:
{
q
0
=
c
o
s
r
2
c
o
s
p
2
c
o
s
y
2
+
s
i
n
r
2
s
i
n
p
2
s
i
n
y
2
q
1
=
s
i
n
r
2
c
o
s
p
2
c
o
s
y
2
−
c
o
s
r
2
s
i
n
p
2
s
i
n
y
2
q
2
=
c
o
s
r
2
s
i
n
p
2
c
o
s
y
2
+
s
i
n
r
2
c
o
s
p
2
s
i
n
y
2
q
3
=
c
o
s
r
2
c
o
s
p
2
s
i
n
y
2
−
s
i
n
r
2
s
i
n
p
2
c
o
s
y
2
\left\{ \begin{array}{lr} q_0=cos\frac{r}{2}cos\frac{p}{2} cos\frac{y}{2}+sin\frac{r}{2}sin\frac{p}{2} sin\frac{y}{2} \\ q_1=sin\frac{r}{2}cos\frac{p}{2} cos\frac{y}{2}-cos\frac{r}{2}sin\frac{p}{2} sin\frac{y}{2} \\ q_2=cos\frac{r}{2}sin\frac{p}{2} cos\frac{y}{2}+sin\frac{r}{2}cos\frac{p}{2} sin\frac{y}{2} \\ q_3=cos\frac{r}{2}cos\frac{p}{2} sin\frac{y}{2}-sin\frac{r}{2}sin\frac{p}{2} cos\frac{y}{2}& \end{array} \right.
⎩⎪⎪⎨⎪⎪⎧q0=cos2rcos2pcos2y+sin2rsin2psin2yq1=sin2rcos2pcos2y−cos2rsin2psin2yq2=cos2rsin2pcos2y+sin2rcos2psin2yq3=cos2rcos2psin2y−sin2rsin2pcos2y
反之:
四元数
⇒
\bm{\Rightarrow}
⇒欧拉角
{
r
=
a
r
c
t
a
n
2
(
q
0
q
1
+
q
2
q
3
)
1
−
2
(
q
1
2
+
q
2
2
)
p
=
a
r
c
s
i
n
2
(
q
0
q
2
−
q
1
q
3
)
y
=
a
r
c
t
a
n
2
(
q
0
q
3
+
q
1
q
2
)
1
−
2
(
q
1
2
+
q
3
2
)
\left\{ \begin{array}{lr} r=arctan\frac{2(q_0q_1+q_2q_3)}{1-2(q_1^2+q_2^2)} \\ p=arcsin2(q_0q_2-q_1q_3)\\ y=arctan\frac{2(q_0q_3+q_1q_2)}{1-2(q_1^2+q_3^2)} & \end{array} \right.
⎩⎪⎨⎪⎧r=arctan1−2(q12+q22)2(q0q1+q2q3)p=arcsin2(q0q2−q1q3)y=arctan1−2(q12+q32)2(q0q3+q1q2)