四元数在机器人,SLAM,自动驾驶领域有十分重要的应用。本文从罗德里格斯公式出发,详细介绍四元数的定义,运算,并给出四元数在旋转表示中的应用和四元数的运动学表示,同时给出旋转向量,旋转矩阵和四元数间的转换,在最后,还本文还写明了SLerp插值方式。
1、旋转向量和旋转矩阵
下面求向量 v \mathbf{v} v绕单位旋转轴 u \mathbf{u} u旋转 θ \theta θ弧度得到的新向量 v ′ \mathbf{v}^{\prime} v′
可以把向量
v
\mathbf{v}
v拆分成平行于旋转轴的
v
∥
\mathbf{v}_{\parallel}
v∥和垂直于旋转轴的
v
⊥
\mathbf{v}_{\perp}
v⊥和,即
v
=
v
∥
+
v
⊥
(1)
\mathbf{v}=\mathbf{v}_{\parallel}+\mathbf{v}_{\perp}\tag{1}
v=v∥+v⊥(1)
分别将这两个向量旋转,获得
v
∥
′
\mathbf{v}^{\prime}_{\parallel}
v∥′和
v
⊥
′
\mathbf{v}^{\prime}_{\perp}
v⊥′,将二者相加即得到原向量旋转之后的结果
v
′
=
v
∥
′
+
v
⊥
′
(2)
\mathbf{v}^{\prime}=\mathbf{v}^{\prime}_{\parallel}+\mathbf{v}^{\prime}_{\perp}\tag{2}
v′=v∥′+v⊥′(2)
旋转过程如下图所示
可以看到,
v
∥
\mathbf{v}_{\parallel}
v∥为
v
\mathbf{v}
v在
u
\mathbf{u}
u上的正交投影
v
∥
=
(
v
⋅
u
)
∥
u
∥
u
=
(
v
⋅
u
)
u
(3)
\mathbf{v}_{\parallel}=\frac{(\mathbf{v}\cdot\mathbf{u})}{\|\mathbf{u}\|}\mathbf{u}=(\mathbf{v}\cdot\mathbf{u})\mathbf{u}\tag{3}
v∥=∥u∥(v⋅u)u=(v⋅u)u(3)
由
(
1
)
,
(
3
)
(1),(3)
(1),(3)知
v
⊥
=
v
−
(
v
⋅
u
)
u
(4)
\mathbf{v}_{\bot}=\mathbf{v}-(\mathbf{v}\cdot\mathbf{u})\mathbf{u}\tag{4}
v⊥=v−(v⋅u)u(4)
由示意图知,
v
∥
\mathbf{v}_{\parallel}
v∥实际并未旋转
v
∥
′
=
v
∥
(5)
\mathbf{v}^{\prime}_{\parallel}=\mathbf{v}_{\parallel}\tag{5}
v∥′=v∥(5)
v
⊥
\mathbf{v}_{\perp}
v⊥的旋转可以看成是在与
u
\mathbf{u}
u垂直的圆面内进行的,且不改变模长
要求
v
⊥
′
\mathbf{v}^{\prime}_{\perp}
v⊥′,可首先定义同时正交于
u
\mathbf{u}
u和
v
⊥
\mathbf{v}_{\perp}
v⊥的向量
w
=
u
×
v
⊥
\mathbf{w}=\mathbf{u}\times\mathbf{v}_{\perp}
w=u×v⊥
按照右手定则可以发现
w
\mathbf{w}
w指向
v
⊥
\mathbf{v}_{\perp}
v⊥绕
u
\mathbf{u}
u旋转
π
2
\frac{\pi}{2}
2π弧度后的方向
根据上面的讨论, v ⊥ ′ \mathbf{v}^{\prime}_{\perp} v⊥′表示成其在 v ⊥ \mathbf{v}_{\perp} v⊥方向上的投影与其在 w \mathbf{w} w方向上的投影之和
可以得到
v
⊥
′
=
v
⊥
′
⋅
v
⊥
∥
v
⊥
∥
v
⊥
∥
v
⊥
∥
+
v
⊥
′
⋅
w
∥
w
∥
w
∥
w
∥
=
cos
θ
v
⊥
+
sin
θ
w
=
cos
θ
v
⊥
+
sin
θ
(
u
×
v
⊥
)
\begin{align*} \mathbf{v}^{\prime}_{\perp} &=\frac{\mathbf{v}^{\prime}_{\perp}\cdot\mathbf{v}_{\perp}}{\|\mathbf{v}_{\perp}\|}\frac{\mathbf{v}_{\perp}}{\|\mathbf{v}_{\perp}\|}+\frac{\mathbf{v}^{\prime}_{\perp}\cdot\mathbf{w}}{\|\mathbf{w}\|}\frac{\mathbf{w}}{\|\mathbf{w}\|}\\ &=\cos\theta\mathbf{v}_{\perp}+\sin\theta\mathbf{w}\\ &=\cos\theta\mathbf{v}_{\perp}+\sin\theta(\mathbf{u}\times\mathbf{v}_{\perp})\tag{6} \end{align*}
v⊥′=∥v⊥∥v⊥′⋅v⊥∥v⊥∥v⊥+∥w∥v⊥′⋅w∥w∥w=cosθv⊥+sinθw=cosθv⊥+sinθ(u×v⊥)(6)
上式从第一行推导至第二行用到了
∥
w
∥
=
∥
u
×
v
⊥
∥
=
∥
u
∥
∥
v
⊥
∥
=
∥
v
⊥
∥
\|\mathbf{w}\|=\|\mathbf{u}\times\mathbf{v}_{\perp}\|=\|\mathbf{u}\|\|\mathbf{v}_{\perp}\|=\|\mathbf{v}_{\perp}\|
∥w∥=∥u×v⊥∥=∥u∥∥v⊥∥=∥v⊥∥,
∥
v
⊥
′
∥
=
∥
v
⊥
∥
\|\mathbf{v}^{\prime}_{\perp}\|=\|\mathbf{v}_{\perp}\|
∥v⊥′∥=∥v⊥∥
考虑到
u
×
v
=
u
×
v
⊥
\mathbf{u}\times\mathbf{v}=\mathbf{u}\times\mathbf{v}_{\perp}
u×v=u×v⊥,由
(
2
)
,
(
3
)
,
(
4
)
,
(
5
)
,
(
6
)
(2),(3),(4),(5),(6)
(2),(3),(4),(5),(6)可得
v
′
=
v
∥
+
cos
θ
v
⊥
+
sin
θ
(
u
×
v
⊥
)
=
(
v
⋅
u
)
u
+
cos
θ
(
v
−
(
v
⋅
u
)
u
)
+
sin
θ
(
u
×
v
)
=
cos
θ
v
+
(
1
−
cos
θ
)
u
u
T
v
+
sin
θ
u
∧
v
=
(
cos
θ
I
+
(
1
−
cos
θ
)
u
u
T
+
sin
θ
u
∧
)
v
\begin{align*} \mathbf{v}^{\prime}&=\mathbf{v}_{\parallel}+\cos\theta\mathbf{v}_{\perp}+\sin\theta(\mathbf{u}\times\mathbf{v}_{\perp})\\ &=(\mathbf{v}\cdot\mathbf{u})\mathbf{u}+\cos\theta(\mathbf{v}-(\mathbf{v}\cdot\mathbf{u})\mathbf{u})+\sin\theta(\mathbf{u}\times\mathbf{v})\\ &=\cos\theta\mathbf{v}+(1-\cos\theta)\mathbf{u}\mathbf{u}^{T}\mathbf{v}+\sin\theta\mathbf{u}^{\wedge}\mathbf{v}\\ &=(\cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{u}\mathbf{u}^{T}+\sin\theta\mathbf{u}^{\wedge})\mathbf{v}\tag{7} \end{align*}
v′=v∥+cosθv⊥+sinθ(u×v⊥)=(v⋅u)u+cosθ(v−(v⋅u)u)+sinθ(u×v)=cosθv+(1−cosθ)uuTv+sinθu∧v=(cosθI+(1−cosθ)uuT+sinθu∧)v(7)
可以认为
(
7
)
(7)
(7)中关于
v
\mathbf{v}
v如何旋转的信息包含在如下旋转向量中
ϕ
=
θ
u
(8)
\boldsymbol\phi=\theta\mathbf{u}\tag{8}
ϕ=θu(8)
需要注意的是,对应于同一旋转过程的旋转向量并不唯一,有以下两个原因:
原因一:对于固定的旋转轴,角度相差 2 k π 2k\pi 2kπ表示同一旋转
原因二:对于从 v \mathbf{v} v到 v ′ \mathbf{v}^{\prime} v′的旋转过程,转轴可以为二者角平分面上的任意单位向量,其中一个特殊情况是绕 u \mathbf{u} u旋转 θ \theta θ弧度等价于绕 − u -\mathbf{u} −u旋转 − θ -\theta −θ弧度
考虑到上述两个原因,通常限制旋转角度 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ∈[0,π],但仍无法完全避免原因二带来的不唯一性,这实际上也导致了对应于同一旋转过程的旋转矩阵和四元数的不唯一性
还可以将该
(
7
)
(7)
(7)写成旋转矩阵的形式,即
v
′
=
R
v
(9)
\mathbf{v}^{\prime}=\mathbf{R}\mathbf{v}\tag{9}
v′=Rv(9)
不难看出
R
=
cos
θ
I
+
(
1
−
cos
θ
)
u
u
T
+
sin
θ
u
∧
(10)
\mathbf{R}=\cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{u}\mathbf{u}^{T}+\sin\theta\mathbf{u}^{\wedge}\tag{10}
R=cosθI+(1−cosθ)uuT+sinθu∧(10)
下面研究两种旋转方式之间的转换
1.1、旋转向量和旋转矩阵间的转换
1.1.1、从旋转向量到旋转矩阵
从旋转向量 ϕ = θ [ u 1 , u 2 , u 3 ] T ∈ R 3 , θ ∈ [ 0 , π ] \boldsymbol\phi=\theta[u_{1},u_{2}, u_{3}]^{T}\in\R^{3},\,\theta\in[0,\pi] ϕ=θ[u1,u2,u3]T∈R3,θ∈[0,π]出发求旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) R∈SO(3)
将
(
10
)
(10)
(10)等号右侧的矩阵写开
R
=
[
cos
θ
+
(
1
−
cos
θ
)
u
1
2
(
1
−
cos
θ
)
u
1
u
2
−
sin
(
θ
)
u
3
(
1
−
cos
θ
)
u
1
u
3
+
sin
(
θ
)
u
2
(
1
−
cos
θ
)
u
1
u
2
+
sin
(
θ
)
u
3
cos
θ
+
(
1
−
cos
θ
)
u
2
2
(
1
−
cos
θ
)
u
2
u
3
−
sin
(
θ
)
u
1
(
1
−
cos
θ
)
u
1
u
3
−
sin
(
θ
)
u
2
(
1
−
cos
θ
)
u
2
u
3
+
sin
(
θ
)
u
1
cos
θ
+
(
1
−
cos
θ
)
u
3
2
]
(11)
\mathbf{R}=\begin{bmatrix} \cos\theta+(1-\cos\theta)u^{2}_{1}&(1-\cos\theta)u_{1}u_{2}-\sin(\theta)u_{3}&(1-\cos\theta)u_{1}u_{3}+\sin(\theta)u_{2}\\ (1-\cos\theta)u_{1}u_{2}+\sin(\theta)u_{3}&\cos\theta+(1-\cos\theta)u^{2}_{2}&(1-\cos\theta)u_{2}u_{3}-\sin(\theta)u_{1}\\ (1-\cos\theta)u_{1}u_{3}-\sin(\theta)u_{2}&(1-\cos\theta)u_{2}u_{3}+\sin(\theta)u_{1}&\cos\theta+(1-\cos\theta)u^{2}_{3} \end{bmatrix}\tag{11}
R=
cosθ+(1−cosθ)u12(1−cosθ)u1u2+sin(θ)u3(1−cosθ)u1u3−sin(θ)u2(1−cosθ)u1u2−sin(θ)u3cosθ+(1−cosθ)u22(1−cosθ)u2u3+sin(θ)u1(1−cosθ)u1u3+sin(θ)u2(1−cosθ)u2u3−sin(θ)u1cosθ+(1−cosθ)u32
(11)
可以证明通过
(
10
)
(10)
(10)或
(
11
)
(11)
(11)求出的旋转矩阵
R
∈
S
O
(
3
)
\mathbf{R}\in{SO}(3)
R∈SO(3)
1.1.2、从旋转矩阵到旋转向量
从旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) R∈SO(3)出发求旋转向量 ϕ = θ u ∈ R 3 , θ ∈ [ 0 , π ] \boldsymbol\phi=\theta\mathbf{u}\in\R^{3},\,\theta\in[0,\pi] ϕ=θu∈R3,θ∈[0,π]
首先求转轴向量,由于转轴向量在旋转前后不改变,故
R
u
=
u
(12)
\mathbf{R}\mathbf{u}=\mathbf{u}\tag{12}
Ru=u(12)
也即转轴向量是旋转矩阵特征值为
1
1
1的特征向量,可以证明,对于
R
∈
S
O
(
3
)
{\mathbf{R}}\in{SO(3)}
R∈SO(3),且
R
≠
I
\mathbf{R}\neq\mathbf{I}
R=I,
(
12
)
(12)
(12)具有唯一一组线性无关解,因为转轴为单位向量,故其可取为大小相等,方向相反的两个值
再求转角,根据
(
10
)
(10)
(10),可得
cos
θ
=
t
r
(
R
)
−
1
2
(13)
\cos\theta=\frac{\mathrm{tr}(\mathbf{R})-1}{2}\tag{13}
cosθ=2tr(R)−1(13)
可以看出,因为要求
θ
∈
[
0
,
π
]
\theta\in[0,\pi]
θ∈[0,π],故
θ
\theta
θ有唯一解,若
θ
=
0
\theta=0
θ=0,此时
R
=
I
\mathbf{R}=\mathbf{I}
R=I,
ϕ
=
0
\boldsymbol\phi=\mathbf{0}
ϕ=0为所求值;若
θ
=
π
\theta=\pi
θ=π,此时
t
r
(
R
)
=
−
1
\mathrm{tr}(\mathbf{R})=-1
tr(R)=−1,
u
\mathbf{u}
u可任取一个可能值;若
θ
∈
(
0
,
π
)
\theta\in(0,\pi)
θ∈(0,π),任取
u
\mathbf{u}
u为一个可能值,并代入
(
10
)
(10)
(10)或
(
11
)
(11)
(11)验证是否产生了正确的旋转矩阵
R
\mathbf{R}
R,若是,则该可能值即为所求;若不是,则将
u
\mathbf{u}
u的符号取反。最终求出的旋转向量为
ϕ
=
θ
u
∈
R
3
,
θ
∈
[
0
,
π
]
\boldsymbol\phi=\theta\mathbf{u}\in\R^{3},\,\theta\in[0,\pi]
ϕ=θu∈R3,θ∈[0,π]
根据上面的讨论可看到,在上述要求下,旋转向量到旋转矩阵的映射是单射,而旋转矩阵到旋转向量的映射则非单射
2、四元数的定义和运算
四元数定义为基
{
1
,
i
,
j
,
k
}
\{1,\mathrm{i},\mathrm{j},\mathrm{k}\}
{1,i,j,k}的线性组合
q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
\mathbf{q}=q_{0}+q_{1}\mathrm{i}+q_{2}\mathrm{j}+q_{3}\mathrm{k}
q=q0+q1i+q2j+q3k
其中
q
0
∈
R
q_{0}\in\mathbb{R}
q0∈R为实部,
q
1
,
q
2
,
q
3
∈
R
q_{1},q_{2},q_{3}\in\mathbb{R}
q1,q2,q3∈R为虚部。
i
,
j
,
k
\mathrm{i},\mathrm{j},\mathrm{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}{l} \mathrm{i}^{2}=\mathrm{j}^{2}=\mathrm{k}^{2}=-1\\ \mathrm{ij}=\mathrm{k},\mathrm{ji}=-\mathrm{k}\\ \mathrm{jk}=\mathrm{i},\mathrm{kj}=-\mathrm{i}\\ \mathrm{ki}=\mathrm{j},\mathrm{ik}=-\mathrm{j}\\ \end{array} \right.
⎩
⎨
⎧i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j
因为基固定,故也可将四元数看作由一个标量和一个向量组合而成
q
=
[
s
,
v
]
,
s
=
q
0
v
=
[
q
1
,
q
2
,
q
3
]
T
\mathbf{q}=[s,\mathbf{v}],\quad s=q_{0}\quad \mathbf{v}=\begin{bmatrix} q_{1}, q_{2}, q_{3}\end{bmatrix}^{T}
q=[s,v],s=q0v=[q1,q2,q3]T
注意,四元数与四维向量不同,二者各自具有对方不具有的运算,但在某些运算上又有相似之处。记全体四元数的集合为
H
\mathbb{H}
H,特别地,若
q
0
=
0
q_{0}=0
q0=0,则称
q
=
[
0
,
v
]
\mathbf{\mathbf{q}}=[0,\mathbf{v}]
q=[0,v]为纯虚四元数;若
v
=
0
\mathbf{v}=\mathbf{0}
v=0,则
q
=
[
q
0
,
0
]
\mathbf{\mathbf{q}}=[q_{0},\mathbf{0}]
q=[q0,0]称为纯实四元数
对四元数定义如下运算:
-
加法
q 1 + q 2 = [ s 1 + s 2 , v 1 + v 2 ] \mathbf{q}_{1}+{\mathbf{q}}_{2}=[s_{1}+{s}_{2},\mathbf{v}_{1}+\mathbf{v}_{2}] q1+q2=[s1+s2,v1+v2]
四元数加法和减法具有以下性质:
q 1 + q 2 = q 2 + q 1 \mathbf{q}_{1}+\mathbf{q}_{2}=\mathbf{q}_{2}+\mathbf{q}_{1} q1+q2=q2+q1 -
数乘
r q = [ r s , r v ] , r ∈ R r\mathbf{q}=[rs,r\mathbf{v}],\quad{r}\in\mathbb{R} rq=[rs,rv],r∈R
四元数数乘具有以下性质:
r 1 ( r 2 q ) = r 1 r 2 q , ( r 1 + r 2 ) q = r 1 q + r 2 q , r ( q 1 + q 2 ) = r q 1 + r q 2 , \begin{align*} r_{1}(r_{2}\mathbf{q})=r_{1}r_{2}\mathbf{q},\quad (r_{1}+r_{2})\mathbf{q}=r_{1}\mathbf{q}+r_{2}\mathbf{q},\quad r(\mathbf{q}_{1}+\mathbf{q}_{2})=r\mathbf{q}_{1}+r\mathbf{q}_{2},\quad \end{align*} r1(r2q)=r1r2q,(r1+r2)q=r1q+r2q,r(q1+q2)=rq1+rq2,
要求上式中 r 1 , r 2 , r ∈ R r_{1},r_{2},r\in\mathbb{R} r1,r2,r∈R, q , q 1 , q 2 ∈ H \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathbb{H} q,q1,q2∈H -
减法
q 1 − q 2 = q 1 + ( − q 2 ) \mathbf{q}_{1}-\mathbf{q}_{2}=\mathbf{q}_{1}+(-\mathbf{q}_{2}) q1−q2=q1+(−q2) -
乘法
乘法运算是将的左边因数的每一项与右边因数的每一项非交换地相乘,最后相加
可以验证,乘法结果可写为
q 1 q 2 = [ s 1 s 2 − v 1 T v 2 , s 1 v 2 + s 2 v 1 + v 1 × v 2 ] \begin{align*} \mathbf{q}_{1}\mathbf{q}_{2}=[s_{1}s_{2}-\mathbf{v}^{T}_{1}\mathbf{v}_{2},s_{1}\mathbf{v}_{2}+s_{2}\mathbf{v}_{1}+\mathbf{v}_{1}\times\mathbf{v}_{2}] \end{align*} q1q2=[s1s2−v1Tv2,s1v2+s2v1+v1×v2]
四元数乘法具有以下性质:
( r q 1 ) q 2 = q 1 ( r q 2 ) = r ( q 1 q 2 ) , q 1 ( q 2 q 3 ) = ( q 1 q 2 ) q 3 , q 1 ( q 2 ± q 3 ) = q 1 q 2 ± q 1 q 3 , ( q 1 ± q 2 ) q 3 = q 1 q 3 ± q 2 q 3 (r\mathbf{q}_{1})\mathbf{q}_{2}=\mathbf{q}_{1}(r\mathbf{q}_{2})={r}(\mathbf{q}_{1}\mathbf{q}_{2}),\quad \mathbf{q}_{1}(\mathbf{q}_{2}\mathbf{q}_{3})=(\mathbf{q}_{1}\mathbf{q}_{2})\mathbf{q}_{3},\quad \mathbf{q}_{1}(\mathbf{q}_{2}\pm{\mathbf{q}}_{3})=\mathbf{q}_{1}\mathbf{q}_{2}\pm{\mathbf{q}}_{1}\mathbf{q}_{3},\quad (\mathbf{q}_{1}\pm{\mathbf{q}}_{2})\mathbf{q}_{3}=\mathbf{q}_{1}\mathbf{q}_{3}\pm{\mathbf{q}}_{2}\mathbf{q}_{3} (rq1)q2=q1(rq2)=r(q1q2),q1(q2q3)=(q1q2)q3,q1(q2±q3)=q1q2±q1q3,(q1±q2)q3=q1q3±q2q3
要求上式中 r ∈ R r\in\mathbb{R} r∈R, q 1 , q 2 , q 3 ∈ H \mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2},\mathbf{\mathbf{q}}_{3}\in\mathbb{H} q1,q2,q3∈H,注意四元数乘法不满足交换律,即 q 1 q 2 \mathbf{\mathbf{q}}_{1}\mathbf{\mathbf{q}}_{2} q1q2不一定等于 q 2 q 1 {\mathbf{\mathbf{q}}}_{2}\mathbf{\mathbf{q}}_{1} q2q1 -
点乘
q 1 ⋅ q 2 = s 1 s 2 + v 1 T v 2 \mathbf{q}_{1}\cdot\mathbf{q}_{2}=s_{1}s_{2}+\mathbf{v}^{T}_{1}\mathbf{v}_{2} q1⋅q2=s1s2+v1Tv2
类似向量点乘,上式还可以写成
q 1 ⋅ q 2 = ∥ q 1 ∥ ∥ q 2 ∥ cos Ω \mathbf{q}_{1}\cdot\mathbf{q}_{2}=\|\mathbf{q}_{1}\|\|\mathbf{q}_{2}\|\cos\Omega q1⋅q2=∥q1∥∥q2∥cosΩ
其中 Ω ∈ [ 0 , π ] \Omega\in[0,\pi] Ω∈[0,π]表示理解成向量的 q 1 \mathbf{q}_{1} q1和 q 2 \mathbf{q}_{2} q2之间的夹角 -
模长
四元数的模长定义为
∥ q ∥ = s 2 + v v T \|\mathbf{q}\|=\sqrt{s^{2}+\mathbf{v}\mathbf{v}^{T}} ∥q∥=s2+vvT
特别地,若 ∥ q ∥ = 1 \|\mathbf{\mathbf{q}}\|=1 ∥q∥=1,则称 q \mathbf{\mathbf{q}} q为单位四元数,记作 q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} q∈H1,此时存在唯一的 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ∈[0,π], v ∈ R 3 \mathbf{v}\in\mathbb{R}^{3} v∈R3,使
q = [ cos θ , sin θ v ] \mathbf{q}=[\cos\theta,\sin\theta\mathbf{v}] q=[cosθ,sinθv]
四元数模长具有以下性质:
∥ r q ∥ = r ∥ q ∥ , ∥ q 1 q 2 ∥ = ∥ q 1 ∥ ∥ q 2 ∥ \|r\mathbf{q}\|=r\|\mathbf{q}\|,\quad \|\mathbf{q}_{1}\mathbf{q}_{2}\|=\|\mathbf{q}_{1}\|\|\mathbf{q}_{2}\|\\ ∥rq∥=r∥q∥,∥q1q2∥=∥q1∥∥q2∥
要求上式中 r ∈ R r\in\mathbb{R} r∈R, q , q 1 , q 2 ∈ H \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathbb{H} q,q1,q2∈H -
共轭
q ∗ = [ s , − v ] \mathbf{q}^{\ast}=[s,-\mathbf{v}] q∗=[s,−v]
四元数共轭具有以下性质:
∥ q ∗ ∥ = ∥ q ∥ , ( q ∗ ) ∗ = q , ( r q ) ∗ = r q ∗ , ( q 1 ± q 2 ) ∗ = q 1 ∗ ± q 2 ∗ , ( q 1 q 2 ) ∗ = q 2 ∗ q 1 ∗ \begin{align*} \|\mathbf{q}^{\ast}\|=\|\mathbf{q}\|,\quad (\mathbf{q}^{\ast})^{\ast}=\mathbf{q},\quad (r\mathbf{q})^{\ast}=r\mathbf{q}^{\ast},\quad (\mathbf{q}_{1}\pm{\mathbf{q}}_{2})^{\ast}=\mathbf{q}_{1}^{\ast}\pm{\mathbf{q}}_{2}^{\ast},\quad (\mathbf{q}_{1}\mathbf{q}_{2})^{\ast}=\mathbf{q}_{2}^{\ast}\mathbf{q}^{\ast}_{1} \end{align*} ∥q∗∥=∥q∥,(q∗)∗=q,(rq)∗=rq∗,(q1±q2)∗=q1∗±q2∗,(q1q2)∗=q2∗q1∗
要求上式中 r ∈ R r\in\mathbb{R} r∈R, q , q 1 , q 2 ∈ H \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathbb{H} q,q1,q2∈H -
逆
记 H ˚ = H \ { [ 0 , 0 ] } \mathring{\mathbb{H}}=\mathbb{H}\backslash\{[0,\mathbf{0}]\} H˚=H\{[0,0]},则可以证明 H ˚ \mathring{\mathbb{H}} H˚和四元数乘法构成群,群 H ˚ \mathring{\mathbb{H}} H˚的单位元为 1 = [ 1 , 0 ] \mathbf{1}=[1,\mathbf{0}] 1=[1,0],即对于 ∀ q ∈ H ˚ \forall{\mathbf{\mathbf{q}}}\in\mathring{\mathbb{H}} ∀q∈H˚
q 1 = 1 q = q \mathbf{q}\mathbf{1}=\mathbf{1}\mathbf{q}=\mathbf{q} q1=1q=q
若 q ∈ H ˚ \mathbf{\mathbf{q}}\in\mathring{\mathbb{H}} q∈H˚,则 q − 1 \mathbf{\mathbf{q}}^{-1} q−1定义为 q \mathbf{\mathbf{q}} q在 H ˚ \mathring{\mathbb{H}} H˚中的逆元,即满足
q − 1 q = q q − 1 = 1 \mathbf{q}^{-1}\mathbf{q}=\mathbf{q}\mathbf{q}^{-1}=\mathbf 1 q−1q=qq−1=1
可以证明, q − 1 \mathbf{\mathbf{q}}^{-1} q−1的值为
q − 1 = q ∗ ∥ q ∥ 2 \mathbf{q}^{-1}=\frac{\mathbf{q}^{\ast}}{\|\mathbf{q}\|^{2}} q−1=∥q∥2q∗
四元数的逆具有以下性质:
∥ q − 1 ∥ = 1 ∥ q ∥ , ( q − 1 ) − 1 = q , ( r q ) − 1 = q − 1 r , ( q 1 q 2 ) − 1 = q 2 − 1 q 1 − 1 \begin{align*} \|\mathbf{q}^{-1}\|=\frac{1}{\|\mathbf{q}\|},\quad (\mathbf{q}^{-1})^{-1}=\mathbf{q},\quad (r\mathbf{q})^{-1}=\frac{\mathbf{q}^{-1}}{r},\quad (\mathbf{q}_{1}\mathbf{q}_{2})^{-1}=\mathbf{q}^{-1}_{2}\mathbf{q}^{-1}_{1} \end{align*} ∥q−1∥=∥q∥1,(q−1)−1=q,(rq)−1=rq−1,(q1q2)−1=q2−1q1−1
要求上式中 r ≠ 0 r\neq0 r=0, q , q 1 , q 2 ∈ H ˚ \mathbf{\mathbf{q}},\mathbf{\mathbf{q}}_{1},\mathbf{\mathbf{q}}_{2}\in\mathring{\mathbb{H}} q,q1,q2∈H˚ -
指数
若 q = [ 0 , θ v ] , θ ∈ R , v ∈ R 3 \mathbf{\mathbf{q}}=[0,\theta\mathbf{v}],\,\theta\in\mathbb{R},\mathbf{v}\in\mathbb{R}^{3} q=[0,θv],θ∈R,v∈R3,则 q \mathbf{q} q的指数为
exp ( q ) = ∑ k = 0 ∞ 1 k ! q k \exp(\mathbf{q})=\sum_{k=0}^{\infty}\frac{1}{k!}\mathbf{q}^{k} exp(q)=k=0∑∞k!1qk
可以求出
exp ( q ) = [ cos θ , sin θ v ] \exp(\mathbf{q})=[\cos\theta,\sin\theta\mathbf{v}] exp(q)=[cosθ,sinθv]
能够看到,任何纯虚四元数的指数映射都为单位四元数 -
对数
若 q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} q∈H1,则存在唯一的 θ ∈ [ 0 , π ] \theta\in[0,\pi] θ∈[0,π], v ∈ R 3 \mathbf{v}\in\mathbb{R}^{3} v∈R3,使 q = [ cos θ , sin θ v ] \mathbf{\mathbf{q}}=[\cos\theta,\sin\theta\mathbf{v}] q=[cosθ,sinθv],此时 q \mathbf{\mathbf{q}} q的对数定义为
log ( q ) = [ 0 , θ v ] \log(\mathbf{q})=[0,\theta\mathbf{v}] log(q)=[0,θv] -
实数次幂
若 q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} q∈H1,则 q \mathbf{\mathbf{q}} q的 t ∈ R t\in\R t∈R次幂 q t \mathbf{\mathbf{q}}^{t} qt为
q t = exp ( t log q ) \mathbf{q}^{t}=\exp(t\log \mathbf{q}) qt=exp(tlogq)
代入指数和对数的定义,可以得到
q t = [ cos ( t θ ) , sin ( t θ ) v ] \mathbf{q}^{t}=[\cos(t\theta),\sin(t\theta)\mathbf{v}] qt=[cos(tθ),sin(tθ)v]
四元数的幂具有以下性质:
log ( q t ) = t log ( q ) , q t 1 q t 2 = q t 1 + t 2 , ( q t 1 ) t 2 = q t 1 t 2 \log(\mathbf{q}^{t})=t\log(\mathbf{q}),\quad \mathbf{q}^{t_{1}}\mathbf{\mathbf{q}}^{t_{2}}=\mathbf{q}^{t_{1}+t_{2}},\quad (\mathbf{q}^{t_{1}})^{t_{2}}=\mathbf{q}^{t_{1}t_{2}} log(qt)=tlog(q),qt1qt2=qt1+t2,(qt1)t2=qt1t2
要求上式中 t , t 1 , t 2 ∈ R t,t_{1},t_{2}\in\R t,t1,t2∈R, q ∈ H 1 \mathbf{\mathbf{q}}\in\mathbb{H}_{1} q∈H1
3、用四元数表示旋转
仍关注向量 v \mathbf{v} v绕单位旋转轴 u \mathbf{u} u旋转 θ \theta θ弧度得到的新向量 v ′ \mathbf{v}^{\prime} v′的过程,符号与第1节保持一致
首先根定义如下纯虚四元数
p
←
[
0
,
v
]
p
∥
=
[
0
,
v
∥
]
p
⊥
=
[
0
,
v
⊥
]
p
′
=
[
0
,
v
′
]
p
∥
′
=
[
0
,
v
∥
′
]
p
⊥
′
=
[
0
,
v
⊥
′
]
(14)
\begin{align*} \mathbf{p}&\leftarrow[0,\mathbf{v}] & \mathbf{p}_{\parallel}&=[0,\mathbf{v}_{\parallel}] & \mathbf{p}_{\perp}&=[0,\mathbf{v}_{\perp}]\\ \mathbf{p}^{\prime}&=[0,\mathbf{v}^{\prime}] & \mathbf{p}^{\prime}_{\parallel}&=[0,\mathbf{v}^{\prime}_{\parallel}] & \mathbf{p}^{\prime}_{\perp}&=[0,\mathbf{v}^{\prime}_{\perp}]\\ \end{align*}\tag{14}
pp′←[0,v]=[0,v′]p∥p∥′=[0,v∥]=[0,v∥′]p⊥p⊥′=[0,v⊥]=[0,v⊥′](14)
下面寻找四元数
q
\mathbf{\mathbf{q}}
q,使得
p
′
\mathbf{p}^{\prime}
p′可以用
p
\mathbf{p}
p和
q
\mathbf{\mathbf{q}}
q表示
在求解之前,首先给出如下引理
引理1:若 q = [ cos θ , sin θ u ] \mathbf{\mathbf{q}}=[\cos\theta,\sin\theta\mathbf{u}] q=[cosθ,sinθu], u \mathbf{u} u为单位向量, θ ∈ R \theta\in\mathbb{R} θ∈R,则 q q = [ cos ( 2 θ ) , sin ( 2 θ ) u ] \mathbf{\mathbf{q}}\mathbf{\mathbf{q}}=[\cos(2\theta),\sin(2\theta)\mathbf{u}] qq=[cos(2θ),sin(2θ)u]
引理2:设 p ∥ = [ 0 , v ∥ ] \mathbf{p}_{\parallel}=[0,\mathbf{v}_{\parallel}] p∥=[0,v∥], q = [ α , β u ] \mathbf{\mathbf{q}}=[\alpha,\beta\mathbf{u}] q=[α,βu], u \mathbf{u} u为单位向量, α , β ∈ R \alpha,\beta\in\mathbb{R} α,β∈R,若 v ∥ ∥ u \mathbf{v}_{\parallel}\parallel\mathbf{u} v∥∥u,则 q p ∥ = p ∥ q \mathbf{\mathbf{q}}\mathbf{p}_{\parallel}=\mathbf{p}_{\parallel}\mathbf{\mathbf{q}} qp∥=p∥q
引理3:设 p ⊥ = [ 0 , v ⊥ ] \mathbf{p}_{\perp}=[0,\mathbf{v}_{\perp}] p⊥=[0,v⊥], q = [ α , β u ] \mathbf{\mathbf{q}}=[\alpha,\beta\mathbf{u}] q=[α,βu], u \mathbf{u} u为单位向量, α , β ∈ R \alpha,\beta\in\mathbb{R} α,β∈R,若 v ⊥ ⊥ u \mathbf{v}_{\perp}\perp\mathbf{u} v⊥⊥u,则 q p ⊥ = p ⊥ q ∗ \mathbf{\mathbf{q}}\mathbf{p}_{\perp}=\mathbf{p}_{\perp}\mathbf{\mathbf{q}}^{\ast} qp⊥=p⊥q∗
根据
(
1
)
,
(
2
)
,
(
14
)
(1),(2),(14)
(1),(2),(14),得到
p
=
p
⊥
+
p
∥
p
′
=
p
⊥
′
+
p
∥
′
\begin{align*} \mathbf{p}&=\mathbf{p}_{\perp}+\mathbf{p}_{\parallel}\tag{15}\\ \mathbf{p}^{\prime}&=\mathbf{p}^{\prime}_{\perp}+\mathbf{p}^{\prime}_{\parallel}\tag{16} \end{align*}
pp′=p⊥+p∥=p⊥′+p∥′(15)(16)
根据
(
5
)
(5)
(5),得到
p
∥
′
=
p
∥
(17)
\mathbf{p}^{\prime}_{\parallel}=\mathbf{p}_{\parallel}\tag{17}
p∥′=p∥(17)
定义单位四元数
q
t
e
m
p
=
[
cos
θ
,
sin
θ
u
]
\mathbf{q}_{\mathrm{temp}}=[\cos\theta,\sin\theta\mathbf{u}]
qtemp=[cosθ,sinθu],根据
(
6
)
(6)
(6),得到
p
⊥
′
=
q
t
m
e
p
p
⊥
(18)
\mathbf{p}^{\prime}_{\perp}=\mathbf{q}_{\mathrm{tmep}}\mathbf{p}_{\perp}\tag{18}
p⊥′=qtmepp⊥(18)
根据
(
16
)
,
(
17
)
,
(
18
)
(16),(17),(18)
(16),(17),(18),得到
p
′
=
p
∥
+
q
t
e
m
p
p
⊥
(18)
\mathbf{p}^{\prime}=\mathbf{p}_{\parallel}+\mathbf{q}_{\mathrm{temp}}\mathbf{p}_{\perp}\tag{18}
p′=p∥+qtempp⊥(18)
定义一个新的单位四元数
q
=
[
cos
θ
2
,
sin
θ
2
u
]
(19)
\mathbf{q}=[\cos\frac{\theta}{2},\sin\frac{\theta}{2}\mathbf{u}]\tag{19}
q=[cos2θ,sin2θu](19)
因为
q
\mathbf{\mathbf{q}}
q为单位四元数,故
q
∗
=
q
−
1
\mathbf{\mathbf{q}}^{\ast}=\mathbf{\mathbf{q}}^{-1}
q∗=q−1,根据引理1-3,可将
(
18
)
(18)
(18)变形为
p
′
=
q
q
∗
p
∥
+
q
q
p
⊥
=
q
p
∥
q
∗
+
q
p
⊥
q
∗
=
q
(
p
⊥
+
p
∥
)
q
∗
=
q
p
q
∗
\begin{align*} \mathbf{p}^{\prime} &=\mathbf{q}\mathbf{q}^{\ast }\mathbf{p}_{\parallel}+\mathbf{q}\mathbf{q}\mathbf{p}_{\perp}\\ &=\mathbf{q}\mathbf{p}_{\parallel}\mathbf{q}^{\ast}+\mathbf{q}\mathbf{p}_{\perp}\mathbf{q}^{\ast}\\ &=\mathbf{q}(\mathbf{p}_{\perp}+\mathbf{p}_{\parallel})\mathbf{q}^{\ast}\\ &=\mathbf{q}\mathbf{p}\mathbf{q}^{\ast}\tag{20} \end{align*}
p′=qq∗p∥+qqp⊥=qp∥q∗+qp⊥q∗=q(p⊥+p∥)q∗=qpq∗(20)
至此,得到了用四元数表示旋转的方式,因为旋转向量
θ
∈
[
0
,
π
]
\theta\in[0,\pi]
θ∈[0,π],故要求四元数实部在
[
0
,
1
]
[0,1]
[0,1]之间
下面研究同一旋转过程对应的四元数和旋转向量及旋转矩阵之间的转换
3.1、四元数和旋转向量间的转换
3.1.1、从旋转向量到四元数
从旋转向量 ϕ = θ [ u 1 , u 2 , u 3 ] T ∈ R 3 , θ ∈ [ 0 , π ] \boldsymbol\phi=\theta[u_{1},u_{2},u_{3}]^{T}\in\R^{3},\,\theta\in[0,\pi] ϕ=θ[u1,u2,u3]T∈R3,θ∈[0,π]出发求四元数 q = [ q 0 ; [ q 1 , q 2 , q 3 ] T ] ∈ H 1 , q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0};[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,q_{0}\in[0,1] q=[q0;[q1,q2,q3]T]∈H1,q0∈[0,1]
将
(
19
)
(19)
(19)写开
q
=
[
q
0
;
[
q
1
,
q
2
,
q
3
]
T
]
=
[
cos
θ
2
,
sin
θ
2
[
u
1
,
u
2
,
u
3
]
T
]
(21)
\mathbf{q}=[q_{0};[q_{1},q_{2},q_{3}]^{T}]=[\cos\frac{\theta}{2},\sin\frac{\theta}{2}[u_{1},u _{2},u_{3}]^{T}]\tag{21}
q=[q0;[q1,q2,q3]T]=[cos2θ,sin2θ[u1,u2,u3]T](21)
容易看出求出的四元数满足
q
∈
H
1
,
s
∈
[
0
,
1
]
\mathbf{\mathbf{q}}\in\mathbb{H}_{1},\,s\in[0,1]
q∈H1,s∈[0,1]
3.1.2、从四元数到旋转向量
从 q = [ q 0 , [ q 1 , q 2 , q 3 ] T ] ∈ H 1 , q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0},[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,q_{0}\in[0,1] q=[q0,[q1,q2,q3]T]∈H1,q0∈[0,1]出发求旋转向量 ϕ = θ [ u 1 , u 2 , u 3 ] T ∈ R 3 , θ ∈ [ 0 , π ] \boldsymbol\phi=\theta[u_{1},u_{2},u_{3}]^{T}\in\R^{3},\,\theta\in[0,\pi] ϕ=θ[u1,u2,u3]T∈R3,θ∈[0,π]
首先求转角,根据
(
21
)
(21)
(21),可得
cos
θ
2
=
q
0
(22)
\cos\frac{\theta}{2}=q_{0}\tag{22}
cos2θ=q0(22)
可以看出,因为要求
θ
∈
[
0
,
π
]
\theta\in[0,\pi]
θ∈[0,π],故
θ
\theta
θ有唯一解,若
q
0
=
1
q_{0}=1
q0=1,则
θ
=
0
\theta=0
θ=0,
ϕ
=
0
\boldsymbol\phi=\mathbf{0}
ϕ=0为所求值;否则取
n
=
[
u
1
,
u
2
,
u
3
]
T
=
[
q
1
,
q
2
,
q
3
]
T
sin
θ
2
(23)
\mathbf{n}=[u_{1},u_{2},u_{3}]^{T}=\frac{[q_{1},q_{2},q_{3}]^{T}}{\sin\frac{\theta}{2}}\tag{23}
n=[u1,u2,u3]T=sin2θ[q1,q2,q3]T(23)
即可求出转轴。最终求出的旋转向量为
ϕ
=
θ
u
,
θ
∈
[
0
,
π
]
\boldsymbol\phi=\theta\mathbf{u},\,\theta\in[0,\pi]
ϕ=θu,θ∈[0,π]
根据上面的讨论可以看到,在上述要求下,四元数和旋转向量是一一对应的
3.2、四元数和旋转矩阵间的转换
3.2.1、从四元数到旋转矩阵
从四元数 q = [ q 0 , [ q 1 , q 2 , q 3 ] T ] ∈ H 1 , s ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0},[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,s\in[0,1] q=[q0,[q1,q2,q3]T]∈H1,s∈[0,1]出发求旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in SO(3) R∈SO(3)
根据
(
11
)
,
(
22
)
,
(
23
)
(11),(22),(23)
(11),(22),(23)可得
R
=
[
1
−
2
q
2
2
−
2
q
3
2
2
(
q
1
q
2
−
q
0
q
3
)
2
(
q
1
q
3
+
q
0
q
2
)
2
(
q
2
+
q
0
q
3
)
1
−
2
q
1
2
−
2
q
3
2
2
(
q
2
q
3
−
q
0
q
1
)
2
(
q
1
q
3
−
q
0
q
2
)
2
(
q
2
q
3
+
q
0
q
1
)
1
−
2
q
1
2
−
2
q
2
2
]
(24)
\mathbf{R}=\begin{bmatrix} 1-2q_{2}^{2}-2q_{3}^{2}&2(q_{1}q_{2}-q_{0}q_{3})&2(q_{1}q_{3}+q_{0}q_{2})\\ 2(q_{2}+q_{0}q_{3})&1-2q_{1}^{2}-2q_{3}^{2}&2(q_{2}q_{3}-q_{0}q_{1})\\ 2(q_{1}q_{3}-q_{0}q_{2})&2(q_{2}q_{3}+q_{0}q_{1})&1-2q_{1}^{2}-2q_{2}^{2} \end{bmatrix}\tag{24}
R=
1−2q22−2q322(q2+q0q3)2(q1q3−q0q2)2(q1q2−q0q3)1−2q12−2q322(q2q3+q0q1)2(q1q3+q0q2)2(q2q3−q0q1)1−2q12−2q22
(24)
上式推导过程中主要用到
sin
θ
=
2
sin
θ
2
cos
θ
2
\sin\theta=2\sin\frac{\theta}{2}\cos\frac{\theta}{2}
sinθ=2sin2θcos2θ,
cos
θ
=
1
−
2
sin
2
θ
2
\cos\theta=1-2\sin^{2}\frac{\theta}{2}
cosθ=1−2sin22θ这两个三角函数公式
因为 ( 24 ) (24) (24)实际上是通过将四元数转换成旋转向量再代入 ( 11 ) (11) (11)得到,故实际求出的旋转矩阵 R ∈ S O ( 3 ) \mathbf{R}\in{SO}(3) R∈SO(3)
3.2.2、从旋转矩阵到四元数
从旋转矩阵 R = [ r i j ] 3 × 3 ∈ S O ( 3 ) \mathbf{R}=[r_{ij}]_{3\times3}\in SO(3) R=[rij]3×3∈SO(3)出发求出四元数 q = [ q 0 , [ q 1 , q 2 , q 3 ] T ] ∈ H 1 , q 0 ∈ [ 0 , 1 ] \mathbf{\mathbf{q}}=[q_{0},[q_{1},q_{2},q_{3}]^{T}]\in\mathbb{H}_{1},\,q_{0}\in[0,1] q=[q0,[q1,q2,q3]T]∈H1,q0∈[0,1]
根据
(
24
)
(24)
(24)可得
{
1
+
r
11
+
r
22
+
r
33
=
4
q
0
2
r
32
−
r
23
=
4
q
0
q
1
r
13
−
r
31
=
4
q
0
q
2
r
21
−
r
12
=
4
q
0
q
3
\left\{ \begin{align*} 1+r_{11}+r_{22}+r_{33} &=4q_{0}^{2}\\ r_{32}-r_{23}&=4q_{0}q_{1}\\ r_{13}-r_{31}&=4q_{0}q_{2}\\ r_{21}-r_{12}&=4q_{0}q_{3} \end{align*}\right.
⎩
⎨
⎧1+r11+r22+r33r32−r23r13−r31r21−r12=4q02=4q0q1=4q0q2=4q0q3
因为要求
q
0
∈
[
0
,
1
]
q_{0}\in[0,1]
q0∈[0,1],若
q
0
=
0
q_{0}=0
q0=0,此时
t
r
(
R
)
=
−
1
\mathrm{tr}(\mathbf{R})=-1
tr(R)=−1,故此时对应的旋转向量角度为
π
\pi
π,根据
(
12
)
,
(
23
)
(12),(23)
(12),(23)可知,
[
q
1
,
q
2
,
q
3
]
T
[q_{1},q_{2},q_{3}]^{T}
[q1,q2,q3]T为旋转矩阵
R
\mathbf{R}
R特征值为
1
1
1的特征向量,有两个可能值,任取一个即可;若
q
0
∈
[
0
,
1
]
q_{0}\in[0,1]
q0∈[0,1],则
{
q
0
=
1
2
1
+
r
11
+
r
22
+
r
33
q
1
=
r
32
−
r
23
4
q
0
q
2
=
r
13
−
r
31
4
q
0
q
3
=
r
21
−
r
12
4
q
0
(25)
\left\{ \begin{align*} q_{0}&=\frac{1}{2}\sqrt{1+r_{11}+r_{22}+r_{33}}\\ q_{1}&=\frac{r_{32}-r_{23}}{4q_{0}}\\ q_{2}&=\frac{r_{13}-r_{31}}{4q_{0}}\\ q_{3}&=\frac{r_{21}-r_{12}}{4q_{0}}\\ \end{align*}\tag{25}\right.
⎩
⎨
⎧q0q1q2q3=211+r11+r22+r33=4q0r32−r23=4q0r13−r31=4q0r21−r12(25)
可以证明,通过
(
25
)
(25)
(25)得到的四元数满足
q
∈
H
1
,
q
0
∈
[
0
,
1
]
\mathbf{\mathbf{q}}\in\mathbb{H}_{1},\,q_{0}\in[0,1]
q∈H1,q0∈[0,1]
根据上面的讨论可以看到,在上述要求下,四元数到旋转矩阵的映射是单射,而旋转矩阵到四元数的映射则非单射
4、四元数视角下的运动学
下面确定单位四元数 q \mathbf{q} q的时间导数 q ˙ \dot{\mathbf{q}} q˙和旋转矩阵 R \mathbf{R} R的时间导数 R ˙ \dot{\mathbf{R}} R˙的关系
因为单位四元数满足约束
q
∗
q
=
1
\mathbf{q}^{\ast}\mathbf{q}=1
q∗q=1,故在等号两侧对时间求导得到
q
˙
∗
q
+
q
∗
q
˙
=
0
\dot{\mathbf{q}}^{\ast}\mathbf{q}+\mathbf{q}^{\ast}\dot{\mathbf{q}}=0
q˙∗q+q∗q˙=0
进一步得到
q
∗
q
˙
=
−
q
˙
∗
q
=
−
(
q
∗
q
˙
)
∗
\mathbf{q}^{\ast}\dot{\mathbf{q}}=-\dot{\mathbf{q}}^{\ast}\mathbf{q}=-(\mathbf{q}^{\ast}\dot{\mathbf{q}})^{\ast}
q∗q˙=−q˙∗q=−(q∗q˙)∗
故
q
∗
q
˙
\mathbf{q}^{\ast}\dot{\mathbf{q}}
q∗q˙是一个纯虚四元数,令
q
∗
q
˙
=
ϖ
\mathbf{q}^{\ast}\dot{\mathbf{q}}=\boldsymbol\varpi
q∗q˙=ϖ
上式等号两侧同时乘以
q
\mathbf{q}
q得到
q
˙
=
q
ϖ
(26)
\dot{\mathbf{q}}=\mathbf{q}\boldsymbol\varpi\tag{26}
q˙=qϖ(26)
考虑空间中固定的一点
p
\mathbf{p}
p,因为四元数和旋转矩阵表示同一旋转过程,故
I
m
(
q
[
0
,
p
]
q
∗
)
=
R
p
(27)
\mathrm{Im}(\mathbf{q}[0,\mathbf{p}]\mathbf{q}^{\ast})=\mathbf{R}\mathbf{p}\tag{27}
Im(q[0,p]q∗)=Rp(27)
在等号两侧对时间求导得
I
m
(
q
˙
[
0
,
p
]
q
∗
+
q
˙
[
0
,
p
]
(
q
∗
)
˙
)
=
R
˙
p
\mathrm{Im}(\dot{\mathbf{q}}[0,\mathbf{p}]\mathbf{q}^{\ast}+\dot{\mathbf{q}}[0,\mathbf{p}]\dot{(\mathbf{q}^{\ast})})=\dot{\mathbf{R}}\mathbf{p}
Im(q˙[0,p]q∗+q˙[0,p](q∗)˙)=R˙p
代入
(
26
)
(26)
(26)及
R
˙
=
R
ω
\dot{\mathbf{R}}=\mathbf{R}\boldsymbol\omega
R˙=Rω,化简得到
I
m
(
q
˙
(
ϖ
[
0
,
p
]
+
[
0
,
p
]
ϖ
∗
)
q
∗
)
=
R
ω
∧
p
(28)
\mathrm{Im}(\dot{\mathbf{q}}(\boldsymbol\varpi[0,\mathbf{p}]+[0,\mathbf{p}]\boldsymbol\varpi^{\ast})\mathbf{q}^{\ast})=\mathbf{R}\boldsymbol\omega^{\wedge}\mathbf{p}\tag{28}
Im(q˙(ϖ[0,p]+[0,p]ϖ∗)q∗)=Rω∧p(28)
设
ϖ
=
[
0
,
v
]
\boldsymbol\varpi=[0,\mathbf{v}]
ϖ=[0,v],则
ϖ
[
0
,
p
]
+
[
0
,
p
]
ϖ
∗
=
[
0
,
2
v
∧
p
]
(29)
\boldsymbol\varpi[0,\mathbf{p}]+[0,\mathbf{p}]\boldsymbol\varpi^{\ast}=[0,2\mathbf{v}^{\wedge}\mathbf{p}]\tag{29}
ϖ[0,p]+[0,p]ϖ∗=[0,2v∧p](29)
将
(
29
)
(29)
(29)代入
(
28
)
(28)
(28),再根据旋转结果相同则被旋转向量相同可以得到
2
v
∧
p
=
ω
∧
p
2\mathbf{v}^{\wedge}\mathbf{p}=\boldsymbol\omega^{\wedge}\mathbf{p}
2v∧p=ω∧p
故
v
=
1
2
ω
\mathbf{v}=\frac{1}{2}\boldsymbol\omega
v=21ω
因此
ϖ
=
[
0
,
1
2
ω
]
(30)
\boldsymbol\varpi=\left[0,\frac{1}{2}\boldsymbol\omega\right]\tag{30}
ϖ=[0,21ω](30)
根据
(
26
)
,
(
30
)
(26),(30)
(26),(30),有
q
˙
=
q
[
0
,
1
2
ω
]
(31)
\dot{\mathbf{q}}=\mathbf{q}\left[0,\frac{1}{2}\boldsymbol\omega\right]\tag{31}
q˙=q[0,21ω](31)
上式还可以写成
q
˙
=
1
2
Ω
(
ω
)
q
(32)
\dot{\mathbf{q}}=\frac{1}{2}\Omega(\boldsymbol\omega)\mathbf{q}\tag{32}
q˙=21Ω(ω)q(32)
其中
Ω
(
ω
)
=
[
0
−
ω
T
ω
ω
∧
]
\Omega(\boldsymbol\omega)=\begin{bmatrix} 0&-\boldsymbol\omega^{T}\\ \boldsymbol\omega&\boldsymbol\omega^{\wedge} \end{bmatrix}
Ω(ω)=[0ω−ωTω∧]
下面考虑在一段时间
[
t
0
,
t
]
[t_{0},t]
[t0,t]内四元数得变化,若
ω
\boldsymbol\omega
ω转轴保持不变,即
ω
(
t
)
=
u
ω
(
t
)
,
t
∈
[
t
0
,
t
]
\boldsymbol\omega(t)=\mathbf{u}\omega(t),t\in[t_{0},t]
ω(t)=uω(t),t∈[t0,t],可以证明
q
(
t
)
=
q
(
t
0
)
exp
(
∫
t
0
t
[
0
,
1
2
ω
(
τ
)
]
d
τ
)
=
q
(
t
0
)
exp
(
[
0
,
θ
2
u
]
)
=
q
(
t
0
)
[
cos
θ
2
,
sin
θ
2
u
]
\begin{align*} \mathbf{q}(t) &=\mathbf{q}(t_{0})\exp\left(\int_{t_{0}}^{t}\left[0,\frac{1}{2}\boldsymbol\omega(\tau)\right]d\tau\right)\\ &=\mathbf{q}(t_{0})\exp\left(\left[0,\frac{\theta}{2}\mathbf{u}\right]\right)\\ &=\mathbf{q}(t_{0})\left[\cos\frac{\theta}{2},\sin\frac{\theta}{2}\mathbf{u}\right]\tag{33} \end{align*}
q(t)=q(t0)exp(∫t0t[0,21ω(τ)]dτ)=q(t0)exp([0,2θu])=q(t0)[cos2θ,sin2θu](33)
其中,
θ
=
∫
t
0
t
ω
(
τ
)
d
τ
\theta=\int_{t_{0}}^{t}\omega(\tau)d\tau
θ=∫t0tω(τ)dτ,当时间段
[
t
0
,
t
]
[t_{0},t]
[t0,t]较短时,
cos
θ
2
≈
1
\cos\frac{\theta}{2}\approx1
cos2θ≈1,
sin
θ
2
u
≈
θ
2
u
\sin\frac{\theta}{2}\mathbf{u}\approx\frac{\theta}{2}\mathbf{u}
sin2θu≈2θu,故此时
(
33
)
(33)
(33)可以写成
q
(
t
)
=
q
(
t
0
)
[
1
,
θ
2
u
]
(34)
\mathbf{q}(t)=\mathbf{q}(t_{0})\left[1,\frac{\theta}{2}\mathbf{u}\right]\tag{34}
q(t)=q(t0)[1,2θu](34)
5、四元数插值
设 t 1 t_{1} t1时刻旋转对应的单位四元数为 q ( t 1 ) \mathbf{q}(t_{1}) q(t1), t 2 t_{2} t2时刻旋转对应的单位四元数为 q ( t 2 ) \mathbf{q}(t_{2}) q(t2),则四元数插值可理解为对 t 1 + α ( t 2 − t 1 ) ∈ [ t 1 , t 2 ] , α ∈ [ 0 , 1 ] t_{1}+\alpha(t_{2}-t_{1})\in[t_{1},t_{2}],\,\alpha\in[0,1] t1+α(t2−t1)∈[t1,t2],α∈[0,1]时刻旋转对应的单位四元数 q ( t 1 + α ( t 2 − t 1 ) ) \mathbf{q}(t_{1}+\alpha(t_{2}-t_{1})) q(t1+α(t2−t1))进行估计
球面线性插值(Sphere Linear Interpolation,SLerp)是常用的四元数插值方法,其做法如下:
首先确定两个单位四元数夹角。
q
(
t
1
)
\mathbf{q}(t_{1})
q(t1)和
q
(
t
2
)
\mathbf{q}(t_{2})
q(t2)间的夹角余弦值满足
cos
Ω
=
q
(
t
1
)
⋅
q
(
t
2
)
(35)
\cos\Omega=\mathbf{q}(t_{1})\cdot\mathbf{q}(t_{2})\tag{35}
cosΩ=q(t1)⋅q(t2)(35)
上式在
Ω
∈
[
0
,
π
]
\Omega\in[0,\pi]
Ω∈[0,π]范围内具有唯一解,实际上,该夹角对应的弧是
q
(
t
1
)
\mathbf{q}(t_{1})
q(t1)和
q
(
t
2
)
\mathbf{q}(t_{2})
q(t2)间的较短弧
插值结果是从
q
(
t
1
)
\mathbf{q}(t_{1})
q(t1)开始,在该弧上转动
α
Ω
\alpha\Omega
αΩ角度得到的四元数。通过正弦定理可证明,插值结果为
q
(
t
1
+
α
(
t
2
−
t
1
)
)
=
sin
(
(
1
−
α
)
Ω
)
sin
(
Ω
)
q
(
t
1
)
+
sin
(
α
Ω
)
sin
(
Ω
)
q
(
t
2
)
(36)
\mathbf{q}(t_{1}+\alpha(t_{2}-t_{1}))=\frac{\sin((1-\alpha)\Omega)}{\sin(\Omega)}\mathbf{q}(t_{1})+\frac{\sin(\alpha\Omega)}{\sin(\Omega)}\mathbf{q}(t_{2})\tag{36}
q(t1+α(t2−t1))=sin(Ω)sin((1−α)Ω)q(t1)+sin(Ω)sin(αΩ)q(t2)(36)
可以看出,插值结果始终保持在四维空间中以原点为中心的单位超球面的某条弧上,为可视化插值过程,不妨将四元数画在三维空间上
附录
§1、向量积的定义和计算
向量 v 1 = x 1 i + y 1 j + z 1 k \mathbf{v}_{1}=x_{1}\mathbf{i}+y_{1}\mathbf{j}+z_{1}\mathbf{k} v1=x1i+y1j+z1k和向量 v 2 = x 2 i + y 2 j + z 2 k \mathbf{v}_{2}=x_{2}\mathbf{i}+y_{2}\mathbf{j}+z_{2}\mathbf{k} v2=x2i+y2j+z2k间的向量积记为 v 1 × v 2 \mathbf{v}_{1}\times\mathbf{v}_{2} v1×v2, v 1 × v 2 \mathbf{v}_{1}\times\mathbf{v}_{2} v1×v2仍为向量,其可按照大小和方向分别定义
大小: ∥ v 1 × v 2 ∥ = ∥ v 1 ∥ ∥ v 2 ∥ sin Ω \|\mathbf{v}_{1}\times\mathbf{v}_{2}\|=\|\mathbf{v}_{1}\|\|\mathbf{v}_{2}\|\sin\Omega ∥v1×v2∥=∥v1∥∥v2∥sinΩ, Ω ∈ [ 0 , π ] \Omega\in[0,\pi] Ω∈[0,π]为 v 1 \mathbf{v}_{1} v1和 v 2 \mathbf{v}_{2} v2之间的向量夹角
方向: v 1 × v 2 \mathbf{v}_{1}\times\mathbf{v}_{2} v1×v2方向可按右手定则从 v 1 \mathbf{v}_{1} v1转向 v 2 \mathbf{v}_{2} v2确定
根据定义,可以得出向量积的如下运算性质:
反交换律
:
v
1
×
v
2
=
−
v
2
×
v
1
对加减法的左分配律
:
v
1
×
(
v
2
±
v
3
)
=
v
1
×
v
2
±
v
1
×
v
3
对加减法的右分配律
:
(
v
1
±
v
2
)
×
v
3
=
v
1
×
v
3
±
v
2
×
v
3
与标量乘法兼容
:
(
λ
v
1
)
×
v
2
=
v
1
×
(
λ
v
2
)
=
λ
(
v
1
×
v
2
)
雅可比恒等式
:
v
1
×
(
v
2
×
v
3
)
+
v
2
×
(
v
3
×
v
1
)
+
v
3
(
v
1
×
v
2
)
=
0
\begin{align*} 反交换律&:\mathbf{v}_{1}\times\mathbf{v}_{2}=-\mathbf{v}_{2}\times\mathbf{v}_{1}\\ 对加减法的左分配律&:\mathbf{v}_{1}\times(\mathbf{v}_{2}\pm\mathbf{v}_{3})=\mathbf{v}_{1}\times\mathbf{v}_{2}\pm\mathbf{v}_{1}\times\mathbf{v}_{3}\\ 对加减法的右分配律 &:(\mathbf{v}_{1}\pm\mathbf{v}_{2})\times\mathbf{v}_{3}=\mathbf{v}_{1}\times\mathbf{v}_{3}\pm\mathbf{v}_{2}\times\mathbf{v}_{3}\\ 与标量乘法兼容&:(\lambda\mathbf{v}_{1})\times\mathbf{v}_{2}=\mathbf{v}_{1}\times(\lambda\mathbf{v}_{2})=\lambda(\mathbf{v}_{1}\times\mathbf{v}_{2})\\ 雅可比恒等式&:\mathbf{v}_{1}\times(\mathbf{v}_{2}\times\mathbf{v}_{3})+\mathbf{v}_{2}\times(\mathbf{v}_{3}\times\mathbf{v}_{1})+\mathbf{v}_{3}(\mathbf{v}_{1}\times\mathbf{v}_{2})=0 \end{align*}
反交换律对加减法的左分配律对加减法的右分配律与标量乘法兼容雅可比恒等式:v1×v2=−v2×v1:v1×(v2±v3)=v1×v2±v1×v3:(v1±v2)×v3=v1×v3±v2×v3:(λv1)×v2=v1×(λv2)=λ(v1×v2):v1×(v2×v3)+v2×(v3×v1)+v3(v1×v2)=0
注意向量积不满足结合律,即
v
1
×
(
v
2
×
v
3
)
≠
(
v
1
×
v
2
)
×
v
3
\mathbf{v}_{1}\times(\mathbf{v}_{2}\times\mathbf{v}_{3})\neq(\mathbf{v}_{1}\times\mathbf{v}_{2})\times\mathbf{v}_{3}
v1×(v2×v3)=(v1×v2)×v3
根据向量积的定义和运算律可以推导得到
v
1
×
v
2
=
∣
i
j
k
x
1
y
1
z
1
x
2
y
2
z
2
∣
(A1)
\mathbf{v}_{1}\times\mathbf{v}_{2}=\left| \begin{array}{lll} \mathbf{i}&\mathbf{j}&\mathbf{k}\\ x_{1}&y_{1}&z_{1}\\ x_{2}&y_{2}&z_{2} \end{array} \right|\tag{A1}
v1×v2=
ix1x2jy1y2kz1z2
(A1)
进一步,上式的计算结果为
v
1
×
v
2
=
(
y
1
z
2
−
z
1
y
2
)
i
+
(
z
1
x
2
−
x
1
z
2
)
j
+
(
x
1
y
2
−
y
1
x
2
)
k
(A2)
\mathbf{v}_{1}\times\mathbf{v}_{2}=(y_{1}z_{2}-z_{1}y_{2})\mathbf{i}+(z_{1}x_{2}-x_{1}z_{2})\mathbf{j}+(x_{1}y_{2}-y_{1}x_{2})\mathbf{k}\tag{A2}
v1×v2=(y1z2−z1y2)i+(z1x2−x1z2)j+(x1y2−y1x2)k(A2)
若将向量写成矩阵形式,则
v
1
=
[
x
1
,
y
1
,
z
1
]
T
\mathbf{v}_{1}=[x_{1},y_{1},z_{1}]^{T}
v1=[x1,y1,z1]T,
v
2
=
[
x
2
,
y
2
,
z
2
]
T
\mathbf{v}_{2}=[x_{2},y_{2},z_{2}]^{T}
v2=[x2,y2,z2]T
v
1
×
v
2
=
[
y
1
z
2
−
z
1
y
2
,
z
1
x
2
−
x
1
z
2
,
x
1
y
2
−
y
1
x
2
]
T
(A3)
\mathbf{v}_{1}\times\mathbf{v}_{2}=[y_{1}z_{2}-z_{1}y_{2},z_{1}x_{2}-x_{1}z_{2},x_{1}y_{2}-y_{1}x_{2}]^{T}\tag{A3}
v1×v2=[y1z2−z1y2,z1x2−x1z2,x1y2−y1x2]T(A3)
还可定义矩阵
v
1
∧
=
[
0
−
z
1
y
1
z
1
0
−
x
1
−
y
1
x
1
0
]
(A4)
\mathbf{v}^{\wedge}_{1}=\begin{bmatrix} 0&-z_{1}&y_{1}\\ z_{1}&0&-x_{1}\\ -y_{1}&x_{1}&0 \end{bmatrix}\tag{A4}
v1∧=
0z1−y1−z10x1y1−x10
(A4)
可以证明
v
1
×
v
2
=
v
1
∧
v
2
(A5)
\mathbf{v}_{1}\times\mathbf{v}_{2}=\mathbf{v}^{\wedge}_{1}\mathbf{v}_{2}\tag{A5}
v1×v2=v1∧v2(A5)
§2、构成群的条件
若一个集合
G
G
G和一个在
G
G
G上的二元运算
⋅
\cdot
⋅满足下列要求
封闭性
:
∀
a
,
b
∈
G
,
a
⋅
b
∈
G
结合律
:
∀
a
,
b
,
c
∈
G
,
a
⋅
(
b
⋅
c
)
=
(
a
⋅
b
)
⋅
c
存在单位元
:
∃
e
∈
G
,
s
.
t
.
∀
a
∈
G
,
a
⋅
e
=
e
⋅
a
=
a
存在逆元
:
∀
a
∈
G
,
∃
a
−
1
∈
G
,
s
.
t
.
a
⋅
a
−
1
=
a
−
1
⋅
a
=
e
\begin{align*} 封闭性&:\forall a,b\in G,\,a\cdot b\in G\\ 结合律&:\forall a,b,c\in G,\,a\cdot(b\cdot c)=(a\cdot b)\cdot c\\ 存在单位元&:\exists e\in G,\,\mathrm{s.t.}\,\forall a\in G,\,a\cdot e=e\cdot a=a\\ 存在逆元&:\forall a\in G,\,\exists a^{-1}\in G,\,\mathrm{s.t.}\,a\cdot a^{-1}=a^{-1}\cdot a=e \end{align*}
封闭性结合律存在单位元存在逆元:∀a,b∈G,a⋅b∈G:∀a,b,c∈G,a⋅(b⋅c)=(a⋅b)⋅c:∃e∈G,s.t.∀a∈G,a⋅e=e⋅a=a:∀a∈G,∃a−1∈G,s.t.a⋅a−1=a−1⋅a=e
则称二者组成的代数结构构成群,记作
(
G
,
⋅
)
(G,\cdot)
(G,⋅)
可以证明,群的单位元具有唯一性,对于群中的任意元素,其逆元也是唯一的