李群与李代数1:对应关系及指数/对数映射
前言:本篇系列文章参照高翔老师《视觉SLAM十四讲从理论到实践》的第四讲,讲解李群与李代数。写此篇的目的是为了补足《十四讲》中的数学类基础知识,原书内容有点像直译文献,因此笔者根据自己理解,对整体内容重新划分,更改了目录章节,改写部分公式,同时扩展了部分内容,有书的同学可以参照阅读,达到事半功倍的效果。
摘要:在三维刚体运动一系列文章中,我们介绍了刚体运动的描述方式,包括旋转矩阵、旋转向量、欧拉角、四元数等若干方式,以及着重讲了四元数的插值方法,包括Lerp、Nlerp、Slerp、Squad、Spicv、Sping等方法。但是在SLAM中,除了表示旋转,我们还要对它进行估计和优化。因为在SLAM中位姿是未知的,而我们需要解决“相机位姿在哪儿最符合观测数据”这样的问题。一种典型的方式是把它构建成一个优化问题,求解最优的 R , t R,t R,t,使得误差最小化。
如前所言,旋转矩阵自身是带有约束的,即正交且行列式为1。它们作为优化变量时,会引入额外的约束,使优化变的困难。通过李群—李代数间的转换关系,我们希望把位姿估计变成无约束的优化问题,简化求解方式。考虑到读者可能还没有李群与李代数的基本知识,我们将从基本的知识讲起。
1. 群和李群
1.1 群的引出
在三维刚体运动中,我们介绍了旋转矩阵和变换矩阵的定义。当时,我们说三维旋转矩阵构成特殊正交群SO(3),而变换矩阵构成了特殊欧式群SE(3)。它们写起来像这样:
S
O
(
3
)
=
{
R
∈
R
3
×
3
∣
R
R
T
=
I
,
d
e
t
(
R
)
=
1
}
(1.1)
SO(3)=\{\mathbf{R}\in \mathbb{R}^{3\times 3}|\mathbf{R}\mathbf{R}^{T}=\mathbf{I},det(\mathbf{R})=1\}\tag{1.1}
SO(3)={R∈R3×3∣RRT=I,det(R)=1}(1.1)
S
E
(
3
)
=
{
T
=
[
R
t
0
T
1
]
∈
R
4
×
4
∣
R
∈
S
O
(
3
)
,
t
∈
R
}
(1.2)
SE(3)=\left \{ \mathbf{T}= \begin{bmatrix} \mathbf{R} & t\\ 0^{T} & 1 \end{bmatrix} \in \mathbb{R}^{4\times 4}|\mathbf{R}\in SO(3),t\in \mathbb{R}\right \}\tag{1.2}
SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R}(1.2)
不过,当时我们并未详细解释群的定义。细心的读者应该会注意到,旋转矩阵也好,变换矩阵也罢,它们对加法是不封闭的。换句话说,对于任意两个旋转矩阵
R
1
,
R
2
\mathbf{R_{1}},\mathbf{R_{2}}
R1,R2及变换矩阵
T
1
,
T
2
\mathbf{T_{1}},\mathbf{T_{2}}
T1,T2,按照矩阵加法的定义,和不再是一个旋转矩阵或变换矩阵:
R
1
+
R
2
∉
S
O
(
3
)
,
T
1
+
T
2
∉
S
E
(
3
)
(1.3)
\mathbf{R_{1}}+\mathbf{R_{2}}\notin SO(3),\mathbf{T_{1}}+\mathbf{T_{2}}\notin SE(3)\tag{1.3}
R1+R2∈/SO(3),T1+T2∈/SE(3)(1.3)你也可以说两种矩阵没有良好定义的加法,或者说矩阵加法对这两个集合是不封闭的。相对地,它们只有一种较好的运算:乘法,SO(3)和SE(3)关于乘法是封闭的:
R
1
R
2
∈
S
O
(
3
)
,
T
1
T
2
∈
S
E
(
3
)
(1.4)
\mathbf{R_{1}}\mathbf{R_{2}}\in SO(3),\mathbf{T_{1}}\mathbf{T_{2}}\in SE(3)\tag{1.4}
R1R2∈SO(3),T1T2∈SE(3)(1.4)同时,我们也可以对任何一个旋转或变换矩阵求逆,对于这种只有一个良好运算的集合,我们称之为群,下面来看群的具体定义。
1.2 群和李群定义及性质
接下来,我们要稍微涉及一些抽象代数方面的知识。笔者觉得这是讨论李群与李代数的必要条件,先看一些基本知识。
群(Group):群是一种集合加上一种运算的代数结构。我们把集合记作 A A A,运算记作 ⋅ \cdot ⋅,那么群可以记作 G = ( A , ⋅ ) G=(A,\cdot) G=(A,⋅)。群要求这个运算满足以下几个条件:
- 封闭性: ∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A \forall a_{1},a_{2}\in A,\space\space a_{1}\cdot a_{2}\in A ∀a1,a2∈A, a1⋅a2∈A.
- 结合律: ∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) \forall a_{1},a_{2},a_{3}\in A,\space\space(a_{1}\cdot a_{2})\cdot a_{3}=a_{1}\cdot (a_{2} \cdot a_{3}) ∀a1,a2,a3∈A, (a1⋅a2)⋅a3=a1⋅(a2⋅a3).
- 幺元: ∃ a 0 ∈ A , s . t . ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a \exists a_{0}\in A, \space\space s.t.\space\space \forall a\in A,\space\space a_{0}\cdot a=a\cdot a_{0}=a ∃a0∈A, s.t. ∀a∈A, a0⋅a=a⋅a0=a.
- 逆: ∀ a ∈ A , ∃ a − 1 ∈ A , s . t . a ⋅ a − 1 = a 0 \forall a \in A, \space\space\exists a^{-1}\in A,\space\space s.t. \space\space a\cdot a^{-1}=a_{0} ∀a∈A, ∃a−1∈A, s.t. a⋅a−1=a0.
读者可以将其记作“封结幺逆”。容易验证,旋转矩阵集合和矩阵乘法构成群,同样,变换矩阵集合和矩阵乘法也构成群。其它常见的群包括整数的加法 ( Z , + ) (\mathbb{Z},+) (Z,+),去掉0后的 有理数乘法 ( Q ∖ 0 , ⋅ ) (\mathbb{Q\setminus 0,\cdot)} (Q∖0,⋅)等等。矩阵中常见的群有:
- 一般线性群 G L ( n ) GL(n) GL(n):指 n × n n\times n n×n的可逆矩阵,它们对矩阵乘法成群。
- 特殊正交群 S O ( n ) SO(n) SO(n):也就是所谓的旋转矩阵群,其中 S O ( 2 ) SO(2) SO(2)和 S O ( 3 ) SO(3) SO(3)最为常见。
- 特殊欧式群 S E ( n ) SE(n) SE(n):也就是前面提到的 n n n维欧式变换,如 S E ( 2 ) SE(2) SE(2)和 S E ( 3 ) SE(3) SE(3)。
群结构保证了在群上的运算具有良好的性质,群论则是研究群的各种结构和性质的理论,感兴趣的读者可参考代数教材。
李群:是指具有连续(光滑)性质的群。像整数群 Z \mathbb{Z} Z那样离散的群没有连续性质,所以不是李群。而 S O ( n ) SO(n) SO(n)和 S E ( n ) SE(n) SE(n)在实数空间上是连续的,我们能够直观地想象一个刚体能够连续地在空间中运动,所以它们都是李群。由于 S O ( 3 ) SO(3) SO(3)和 S E ( 3 ) SE(3) SE(3)对相机姿态估计尤其重要,所以主要讨论这两个李群。
通常有两种思路来介绍李代数,一种是直接引入李代数,每个李群对应着一个李代数,但这样的话,读者不知道它有什么物理意义。所以,笔者准备花一点儿时间从旋转矩阵的李群引出李代数,我们先从较简单的李群 S O ( 3 ) SO(3) SO(3)开始,引出其对应的李代数 s o ( 3 ) \mathfrak{so}(3) so(3)。
2. 由李群引出李代数
2.1 反对称矩阵对应向量与求导关系
考虑 S O ( 3 ) SO(3) SO(3)中的任意旋转矩阵 R R R,我们知道它满足: R R T = I RR^{T}=I RRT=I在位姿中 R R R是某个相机的旋转,它会随时间连续地变化,即为时间的函数: R ( t ) R(t) R(t)。由于它仍是旋转矩阵,有: R ( t ) R ( t ) t = I R(t)R(t)^{t}=I R(t)R(t)t=I在等式两边对时间求导,得到: R ′ ( t ) R ( t ) T + R ( t ) R ′ ( t ) T = 0 R^{'}(t)R(t)^{T}+R(t)R^{'}(t)^{T}=0 R′(t)R(t)T+R(t)R′(t)T=0整理得: R ′ ( t ) R ( t ) T = − ( R ′ ( t ) R ( t ) T ) T (2.1) R^{'}(t)R(t)^{T}=-\left (R^{'}(t)R(t)^{T}\right)^{T}\tag{2.1} R′(t)R(t)T=−(R′(t)R(t)T)T(2.1)
可以看出, R ′ ( t ) R ( t ) T R^{'}(t)R(t)^{T} R′(t)R(t)T是一个反对称矩阵。在《三维空间刚体运动1:旋转矩阵与变换矩阵》第1节中方程(1.3),我们介绍了向量外积的概念: a × b = ∥ e 1 e 2 e 3 a 1 a 2 a 3 b 1 b 2 b 3 ∥ = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] b = d e f a ∧ b (2.2) a\times b= \begin{Vmatrix} e_{1} & e_{2} & e_{3}\\ a_{1} & a_{2} & a_{3}\\ b_{1} & b_{2} & b_{3} \end{Vmatrix}= \begin{bmatrix} a_{2}b_{3}-a_{3}b_{2}\\ a_{3}b_{1}-a_{1}b_{3}\\ a_{1}b_{2}-a_{2}b_{1} \end{bmatrix}= \begin{bmatrix} 0 & -a_{3} & a_{2}\\ a_{3} & 0 & -a_{1}\\ -a_{2} & a_{1} & 0 \end{bmatrix}b \xlongequal[]{def} a^{\wedge }b \tag{2.2} a×b=∥∥∥∥∥∥e1a1b1e2a2b2e3a3b3∥∥∥∥∥∥=⎣⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎤=⎣⎡0a3−a2−a30a1a2−a10⎦⎤bdefa∧b(2.2)上式引入了符号 ∧ ^{\wedge} ∧,将一个向量变成了反对称矩阵。同理,对于任意反对称矩阵,也能找到唯一与之对应的向量,把这个运算用符号 ∨ ^{\vee} ∨表示,则有: A = a ∧ , A ∨ = a (2.3) A=a^{\wedge},A^{\vee}=a\tag{2.3} A=a∧,A∨=a(2.3)
于是,由于 R ′ ( t ) R ( t ) T R^{'}(t)R(t)^{T} R′(t)R(t)T是一个反对称矩阵,可以找到一个三维向量 ϕ ( t ) ∈ R 3 \phi (t)\in\mathbb{R}^{3} ϕ(t)∈R3与之对应: R ′ ( t ) R ( t ) T = ϕ ( t ) ∧ R^{'}(t)R(t)^{T}=\phi (t)^{\wedge} R′(t)R(t)T=ϕ(t)∧,等式两边右乘 R ( t ) R(t) R(t),由于 R R R为正交阵,有: R ′ ( t ) = ϕ ( t ) ∧ R ( t ) = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] R ( t ) (2.4) R^{'}(t)=\phi(t)^{\wedge}R(t)=\begin{bmatrix} 0 & -\phi_{3} & \phi_{2}\\ \phi_{3} & 0 & -\phi_{1}\\ -\phi_{2} & \phi_{1} & 0 \end{bmatrix}R(t)\tag{2.4} R′(t)=ϕ(t)∧R(t)=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤R(t)(2.4)可以看到,对旋转矩阵求一次导数,只需左乘一个 ϕ ( t ) ∧ \phi(t)^{\wedge} ϕ(t)∧矩阵即可。
2.2 一阶导数矩阵求解
考虑当 t = 0 t=0 t=0时,设此时旋转矩阵为 R ( 0 ) = I R(0)=I R(0)=I。按照导数定义,可以把 R ( t ) R(t) R(t)在 t = 0 t=0 t=0附近进行一阶泰勒展开: R ( t ) ≈ R ( t 0 ) + R ′ ( t 0 ) ( t − t 0 ) = t 0 = 0 R ( 0 ) + ϕ ( t 0 ) ∧ R ( 0 ) t = I + ϕ ( t 0 ) ∧ ⋅ t \begin{aligned} R(t) &\approx R(t_{0})+R^{'}(t_{0})(t-t_{0}) \\&\overset{\underset{\mathrm{t_{0}=0}}{}}{=}R(0)+\phi(t_{0})^{\wedge}R(0)t \\& = I+\phi(t_{0})^{\wedge}\cdot t\end{aligned} R(t)≈R(t0)+R′(t0)(t−t0)=t0=0R(0)+ϕ(t0)∧R(0)t=I+ϕ(t0)∧⋅t从上式看到 ϕ \phi ϕ反映了 R R R的导数性质,故称它在 S O ( 3 ) SO(3) SO(3)原点附近的正切空间1(Tangent Space)上。
同时在
t
0
t_{0}
t0附近,设
ϕ
(
t
)
\phi(t)
ϕ(t)保持为常数
ϕ
(
t
0
)
=
ϕ
0
\phi(t_{0})=\phi_{0}
ϕ(t0)=ϕ0,那么根据公式(2.4),有:
R
′
(
t
)
=
ϕ
(
t
0
)
∧
R
(
t
)
=
ϕ
0
∧
R
(
t
)
R^{'}(t)=\phi(t_{0})^{\wedge}R(t)=\phi_{0}^{\wedge}R(t)
R′(t)=ϕ(t0)∧R(t)=ϕ0∧R(t)即:
R
′
(
t
)
−
ϕ
0
∧
R
(
t
)
=
0
(2.5)
R^{'}(t)-\phi_{0}^{\wedge}R(t)=0\tag{2.5}
R′(t)−ϕ0∧R(t)=0(2.5)上式是一个关于
R
R
R的微分方程,而且有初始值
R
(
0
)
=
I
R(0)=I
R(0)=I,解得:
R
(
t
)
=
e
x
p
(
ϕ
0
∧
t
)
(2.6)
R(t)=exp(\phi_{0}^{\wedge}t)\tag{2.6}
R(t)=exp(ϕ0∧t)(2.6)读者可以验证,上式对微分方程和初始值均成立。这说明在
t
=
0
t=0
t=0附近,旋转矩阵可以由
e
x
p
(
ϕ
0
∧
t
)
exp(\phi_{0}^{\wedge}t)
exp(ϕ0∧t)计算出来。
可以看到,旋转矩阵
R
R
R与另一个反对称矩阵
ϕ
0
∧
t
\phi_{0}^{\wedge}t
ϕ0∧t通过指数关系发生了联系。但是矩阵的指数是什么呢?这里我们有两个问题需要澄清:
- 给定某时刻的 R R R,有一个对应的 ϕ \phi ϕ,它描述了 R R R在某时刻局部的导数关系,而 ϕ \phi ϕ正是对应到 S O ( 3 ) SO(3) SO(3)上的李代数 s o ( 3 ) \mathfrak{so}(3) so(3)。
- 其次,给定某个向量 ϕ \phi ϕ时,矩阵指数 e x p ( ϕ ∧ ) exp(\phi^{\wedge}) exp(ϕ∧)如何计算得到 R R R?反之,给定 R R R时,能否有相反的运算来计算 ϕ \phi ϕ?而这正是李群与李代数之间的指数/对数映射关系。
下面分两个章节来解决这个问题。
3. 李代数
3.1 李代数的定义
每个李群都有与之对应的李代数。李代数描述了李群的局部性质,准确地说,是单位圆附近的正切空间。一般的李代数定义如下:
李代数由一个集合
V
\mathbb{V}
V、一个数域
F
\mathbb{F}
F和一个二元运算[,](又称李括号)组成。如果他们满足以下几条性质,则称
(
V
,
F
,
[
,
]
)
(\mathbb{V},\mathbb{F},[,])
(V,F,[,])为一个李代数,记作
g
\mathfrak{g}
g(哥特体)。它具有以下性质:
- 封闭性: ∀ X , Y ∈ V , [ X , Y ] ∈ V \space \space \forall X,Y \in \mathbb{V},[X,Y]\in \mathbb{V} ∀X,Y∈V,[X,Y]∈V.
- 双线性: ∀ X , Y , Z ∈ V , a , b ∈ F \space \space \forall X, Y, Z \in \mathbb{V}, a, b \in \mathbb{F} ∀X,Y,Z∈V,a,b∈F,有 [ a X + b Y , Z ] = a [ X , Z ] + b [ Y , Z ] , [ Z , a X + b Y ] = a [ Z , X ] + b [ Z , Y ] [aX+bY,Z]=a[X,Z]+b[Y,Z],\space \space \space \space [Z,aX+bY]=a[Z,X]+b[Z,Y] [aX+bY,Z]=a[X,Z]+b[Y,Z], [Z,aX+bY]=a[Z,X]+b[Z,Y].
- 自反性2: ∀ X ∈ V , [ X , X ] = 0 \space \space \forall X \in \mathbb{V},[X,X]=0 ∀X∈V,[X,X]=0.
- 雅克比等价: ∀ X , Y , Z ∈ V \space \space \forall X,Y,Z \in \mathbb{V} ∀X,Y,Z∈V,有: [ X , [ Y , Z ] ] + [ Z , [ X , Y ] ] + [ Y , [ Z , X ] ] = 0 [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0 [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0
从表面上看,李代数所需要的性质还是挺多的。相比于群中较为简单的二元运算,李括号表达了两个元素的差异。它不要求乘法结合律,而要求元素和自己做李括号之后为零的性质(自反性)。作为例子,三维向量空间 R 3 \mathbb{R}^{3} R3上定义的叉积 × \times ×是一种李括号,即 ϕ × ϕ = ∣ ϕ ∣ ⋅ ∣ ϕ ∣ ⋅ sin θ = 0 \phi\times\phi=|\phi|\cdot|\phi|\cdot \sin \theta=0 ϕ×ϕ=∣ϕ∣⋅∣ϕ∣⋅sinθ=0,因此 g = ( R 3 , R , × ) \mathfrak{g}=(\mathbb{R}^{3},\mathbb{R},\times) g=(R3,R,×)构成了一个李代数。
3.2 李代数 s o ( 3 ) \mathfrak{so}(3) so(3)
之前提到的 ϕ \phi ϕ,事实上是一种李代数。 S O ( 3 ) SO(3) SO(3)对应的李代数是定义在 R 3 \mathbb{R}^{3} R3上的向量,我们记作 ϕ \phi ϕ。根据前面的推导,每个 ϕ \phi ϕ都可以生成一个反对称矩阵: Φ = ϕ ∧ = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] ∈ R 3 × 3 \Phi =\phi ^{\wedge}=\begin{bmatrix} 0 & -\phi_{3} & \phi_{2}\\ \phi_{3} & 0 & -\phi_{1}\\ -\phi_{2} & \phi_{1} & 0 \end{bmatrix}\in \mathbb{R}^{3\times 3} Φ=ϕ∧=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤∈R3×3在此定义下,举例证明其封闭性。设两个向量 ϕ 1 = ( a 1 , a 2 , a 3 ) , ϕ 2 = ( b 1 , b 2 , b 3 ) \phi_{1}=(a_{1},a_{2},a_{3}),\phi_{2}=(b_{1},b_{2},b_{3}) ϕ1=(a1,a2,a3),ϕ2=(b1,b2,b3),其对应的反对称矩阵为: Φ 1 = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] , Φ 2 = [ 0 − b 3 b 2 b 3 0 − b 1 − b 2 b 1 0 ] \Phi_{1} =\begin{bmatrix} 0 & -a_{3} & a_{2}\\ a_{3} & 0 & -a_{1}\\ -a_{2} & a_{1} & 0 \end{bmatrix},\Phi_{2} =\begin{bmatrix} 0 & -b_{3} & b_{2}\\ b_{3} & 0 & -b_{1}\\ -b_{2} & b_{1} & 0 \end{bmatrix} Φ1=⎣⎡0a3−a2−a30a1a2−a10⎦⎤,Φ2=⎣⎡0b3−b2−b30b1b2−b10⎦⎤则 ϕ 1 , ϕ 2 \phi_{1},\phi_{2} ϕ1,ϕ2的李括号为: [ ϕ 1 , ϕ 2 ] = ( Φ 1 Φ 2 − Φ 2 Φ 1 ) ∨ = [ 0 − a 1 b 2 + a 2 b 1 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 0 − a 2 b 3 + a 3 b 2 − a 3 b 1 + a 1 b 3 a 2 b 3 − a 3 b 2 0 ] ∨ = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] (3.1) [\phi_{1},\phi_{2}]=(\Phi_{1}\Phi_{2}-\Phi_{2}\Phi_{1})^{\vee}=\begin{bmatrix} 0 & -a_{1}b_{2}+a_{2}b_{1} & a_{3}b_{1}-a_{1}b_{3}\\ a_{1}b_{2}-a_{2}b_{1} & 0 & -a_{2}b_{3}+a_{3}b_{2}\\ -a_{3}b_{1}+a_{1}b_{3} & a_{2}b_{3}-a_{3}b_{2} & 0 \end{bmatrix}^{\vee}=\begin{bmatrix} a_{2}b_{3}-a_{3}b_{2}\\ a_{3}b_{1}-a_{1}b_{3}\\ a_{1}b_{2}-a_{2}b_{1} \end{bmatrix}\tag{3.1} [ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨=⎣⎡0a1b2−a2b1−a3b1+a1b3−a1b2+a2b10a2b3−a3b2a3b1−a1b3−a2b3+a3b20⎦⎤∨=⎣⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎤(3.1)可以看出,结果仍然为三维向量,满足封闭性。其它三条性质读者可自行证明。
由于向量 ϕ \phi ϕ与反对称矩阵是一一对应的,在不引起歧义的情况下,就说 s o ( 3 ) \mathfrak{so}(3) so(3)的元素是三维向量或三维反对称矩阵,不加区别: s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ ∧ ∈ R 3 × 3 } (3.2) \mathfrak{so}(3)=\{\phi \in \mathbb{R}^{3},\Phi=\phi^{\wedge}\in \mathbb{R}^{3\times3}\}\tag{3.2} so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}(3.2)至此,我们已经清楚了 s o ( 3 ) \mathfrak{so}(3) so(3)的内容,它们是一个由三维向量组成的集合,每个向量对应一个反对称矩阵,可以用于表达旋转矩阵的导数。它与 S O ( 3 ) SO(3) SO(3)的关系由指数映射给定: R = exp ( ϕ ∧ ) = exp ( A ) R=\exp(\phi^{\wedge})=\exp(A) R=exp(ϕ∧)=exp(A)指数映射会在下一章介绍。由于已经介绍了李群 S O ( 3 ) SO(3) SO(3)对应的李代数 s o ( 3 ) \mathfrak{so}(3) so(3),我们顺带先来看李群 S E ( 3 ) SE(3) SE(3)对应的李代数 s e ( 3 ) \mathfrak{se}(3) se(3)。
3.3 李代数 s e ( 3 ) \mathfrak{se}(3) se(3)
为节省篇幅,这里就不介绍如何引出
s
e
(
3
)
\mathfrak{se}(3)
se(3)了。与
s
o
(
3
)
\mathfrak{so}(3)
so(3)相似,
s
e
(
3
)
\mathfrak{se}(3)
se(3)位于
R
6
\mathbb{R}^{6}
R6空间中:
s
e
(
3
)
=
{
ξ
=
[
ρ
ϕ
]
∈
R
6
,
ρ
∈
R
3
,
ϕ
∈
s
o
(
3
)
,
Ξ
=
ξ
∧
=
[
ϕ
∧
ρ
0
T
0
]
∈
R
4
×
4
}
(3.3)
\mathfrak{se}(3)=\left \{\xi =\begin{bmatrix} \rho \\ \phi \end{bmatrix} \in \mathbb{R}^{6},\rho\in\mathbb{R}^{3},\phi \in \mathfrak{so}(3), \Xi = \xi ^{\wedge}=\begin{bmatrix} \phi^{\wedge} & \rho\\ 0^{T} & 0 \end{bmatrix}\in \mathbb{R}^{4\times 4}\right \}\tag{3.3}
se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),Ξ=ξ∧=[ϕ∧0Tρ0]∈R4×4}(3.3)我们把每个
s
e
(
3
)
\mathfrak{se}(3)
se(3)元素记作
ξ
\xi
ξ,它是一个六维向量,前三维为平移(但含义与变换矩阵中的平移不同,分析见后),记作
ρ
\rho
ρ;后三维为旋转,记作
ϕ
\phi
ϕ,实质是
s
o
(
3
)
\mathfrak{so}(3)
so(3)的元素。
同时,我们拓展了符号
∧
^\wedge
∧的含义。在
s
e
(
3
)
\mathfrak{se}(3)
se(3)中,同样使用
∧
^{\wedge}
∧符号,将一个六维向量转换成四维矩阵,但这里不再表示反对称,而是指代“从向量到矩阵”的关系,同理使用
∨
^{\vee}
∨表示“从矩阵到向量”:
Ξ
=
ξ
∧
=
[
ϕ
∧
ρ
0
T
0
]
∈
R
4
×
4
,
Ξ
∨
=
ξ
(3.4)
\Xi=\xi^{\wedge}=\begin{bmatrix} \phi^{\wedge} & \rho\\ 0^{T} & 0 \end{bmatrix}\in \mathbb{R}^{4\times4},\Xi^{\vee}=\xi\tag{3.4}
Ξ=ξ∧=[ϕ∧0Tρ0]∈R4×4,Ξ∨=ξ(3.4)读者可以简单地把
s
e
(
3
)
\mathfrak{se}(3)
se(3)理解为“由一个平移
ρ
\rho
ρ加上一个
s
o
(
3
)
\mathfrak{so}(3)
so(3)元素构成的向量”。同样,李代数
s
e
(
3
)
\mathfrak{se}(3)
se(3)也有类似于公式(3.1)中
s
o
(
3
)
\mathfrak{so}(3)
so(3)的李括号:
[
ξ
1
,
ξ
2
]
=
(
Ξ
1
Ξ
2
−
Ξ
2
Ξ
1
)
∨
(3.5)
[\xi_{1},\xi_{2}]=(\Xi_{1}\Xi_{2}-\Xi_{2}\Xi_{1})^{\vee}\tag{3.5}
[ξ1,ξ2]=(Ξ1Ξ2−Ξ2Ξ1)∨(3.5)读者可以验证
s
e
(
3
)
\mathfrak{se}(3)
se(3)是否满足李代数的其它性质。至此,我们已经见过两种重要的李代数
s
o
(
3
)
\mathfrak{so}(3)
so(3)和
s
e
(
3
)
\mathfrak{se}(3)
se(3)了。
4. 指数和对数映射
现在来考虑第二个问题:已知 ϕ \phi ϕ,如何计算 exp ( ϕ ∧ ) \exp(\phi^{\wedge}) exp(ϕ∧)?显然它是一个矩阵的指数,在李群和李代数中,它称为李代数到李群的指数映射(Exponential Map)。反之,已知 R R R,如何计算 ( l n R ) ∨ (lnR)^{\vee} (lnR)∨?同样,我们先讨论旋转变换,再讨论欧氏变换。
4.1 旋转变换 S O ( 3 ) SO(3) SO(3)上的指数/对数映射
4.1.1 s o ( 3 ) \mathfrak{so}(3) so(3)上的指数映射
矩阵指数是方块矩阵的一种矩阵函数,与指数函数类似。矩阵指数给出了矩阵李代数与对应的李群之间的关系。任意矩阵的指数映射可以写成一个泰勒展开,但是只有在收敛的情况下才会有结果,其结果仍是一个矩阵:
exp
(
A
)
=
∑
n
=
0
∞
1
n
!
A
n
\exp(A)=\sum_{n=0}^{\infty }\frac{1}{n!}A^{n}
exp(A)=n=0∑∞n!1An同样的,对
s
o
(
3
)
\mathfrak{so}(3)
so(3)中的任意元素
ϕ
\phi
ϕ,我们也可按此方式定义它的指数映射:
exp
(
ϕ
∧
)
=
∑
n
=
0
∞
1
n
!
(
ϕ
∧
)
n
\exp(\phi^{\wedge})=\sum_{n=0}^{\infty }\frac{1}{n!}(\phi^{\wedge})^{n}
exp(ϕ∧)=n=0∑∞n!1(ϕ∧)n但这个定义没法直接计算,因为我们不想计算矩阵的无穷次幂。下面我们推导一种计算矩阵指数映射的简便方法。
由于
ϕ
\phi
ϕ是三维向量,我们可以定义它的模长和方向,分别记作
θ
\theta
θ和
a
\mathbf{a}
a,于是有
ϕ
=
θ
a
\phi=\theta \mathbf{a}
ϕ=θa,这里
a
=
[
a
1
,
a
2
,
a
3
]
T
\mathbf{a}=[a_{1},a_{2},a_{3}]^{T}
a=[a1,a2,a3]T是一个长度为1的方向向量,即
∥
a
∥
=
1
\left \| \mathbf{a} \right \|=1
∥a∥=1。首先,对于
a
∧
\mathbf{a}^{\wedge}
a∧,有以下两条性质:
a
∧
a
∧
=
[
−
a
2
2
−
a
3
2
a
1
a
2
a
1
a
3
a
1
a
2
−
a
1
2
−
a
3
2
a
2
a
2
a
1
a
3
a
2
a
2
−
a
1
2
−
a
2
2
]
=
a
a
T
−
I
.
(4.1)
\mathbf{a}^{\wedge}\mathbf{a}^{\wedge}=\begin{bmatrix} -a_{2}^{2}-a_{3}^{2} & a_{1}a_{2} & a_{1}a_{3}\\ a_{1}a_{2} & -a_{1}^{2}-a_{3}^{2} & a_{2}a_{2}\\ a_{1}a_{3} & a_{2}a_{2} &-a_{1}^{2}-a_{2}^{2} \end{bmatrix}=\mathbf{a}\mathbf{a}^{T}-\mathbf{I}.\tag{4.1}
a∧a∧=⎣⎡−a22−a32a1a2a1a3a1a2−a12−a32a2a2a1a3a2a2−a12−a22⎦⎤=aaT−I.(4.1)以及
a
∧
a
∧
a
∧
=
a
∧
(
a
a
T
−
I
)
=
−
a
∧
.
(4.2)
\mathbf{a}^{\wedge}\mathbf{a}^{\wedge}\mathbf{a}^{\wedge}=\mathbf{a}^{\wedge}(\mathbf{a}\mathbf{a}^{T}-\mathbf{I})=-\mathbf{a}^{\wedge}.\tag{4.2}
a∧a∧a∧=a∧(aaT−I)=−a∧.(4.2)这两个式子提供了处理
a
∧
\mathbf{a}^{\wedge}
a∧高阶项的方法。我们可以把指数映射写成:
exp
(
ϕ
∧
)
=
exp
(
θ
a
∧
)
=
∑
n
=
0
∞
1
n
!
(
θ
a
∧
)
n
=
I
+
θ
a
∧
+
1
2
!
θ
2
a
∧
a
∧
+
1
3
!
θ
3
a
∧
a
∧
a
∧
+
1
4
!
θ
4
(
a
∧
)
4
+
⋯
=
(
4.1
)
(
4.2
)
a
a
T
−
a
∧
a
∧
+
θ
a
∧
+
1
2
!
θ
2
a
∧
a
∧
−
1
3
!
θ
3
a
∧
−
1
4
!
θ
4
(
a
∧
)
2
+
⋯
=
a
a
T
+
(
θ
−
1
3
!
θ
3
+
1
5
!
θ
5
−
⋯
)
a
∧
−
(
1
−
1
2
!
θ
2
+
1
4
!
θ
4
−
⋯
)
a
∧
a
∧
=
a
∧
a
∧
+
I
+
sin
θ
a
∧
−
cos
θ
a
∧
a
∧
=
(
1
−
cos
θ
)
a
∧
a
∧
+
I
+
sin
θ
a
∧
=
cos
θ
I
+
(
1
−
cos
θ
)
a
a
T
+
sin
θ
a
∧
.
\begin{aligned} \exp (\phi^{\wedge}) &= \exp (\theta \mathbf{a}^{\wedge})= \sum_{n=0}^{\infty }\frac{1}{n!}(\theta \mathbf{a}^{\wedge})^{n} \\& = \mathbf{I} + \theta\mathbf{a}^{\wedge} + \frac{1}{2!}\theta^{2}\mathbf{a}^{\wedge}\mathbf{a}^{\wedge} + \frac{1}{3!}\theta^{3}\mathbf{a}^{\wedge}\mathbf{a}^{\wedge}\mathbf{a}^{\wedge} + \frac{1}{4!}\theta^{4}(\mathbf{a}^{\wedge})^{4}+\cdots \\& \overset{\underset{\mathrm{(4.1)(4.2)}}{}}{=}\mathbf{a}\mathbf{a}^{T}-\mathbf{a}^{\wedge}\mathbf{a}^{\wedge}+\theta\mathbf{a}^{\wedge}+\frac{1}{2!}\theta^{2}\mathbf{a}^{\wedge}\mathbf{a}^{\wedge} - \frac{1}{3!}\theta^{3}\mathbf{a}^{\wedge} -\frac{1}{4!}\theta^{4}(\mathbf{a}^{\wedge})^{2} + \cdots \\& = \mathbf{a}\mathbf{a}^{T} + \left ( \theta - \frac{1}{3!}\theta^{3} + \frac{1}{5!}\theta^{5} - \cdots\right )\mathbf{a}^{\wedge}-\left ( 1- \frac{1}{2!}\theta^{2} + \frac{1}{4!}\theta^{4}-\cdots\right )\mathbf{a}^{\wedge}\mathbf{a}^{\wedge} \\&= \mathbf{a}^{\wedge}\mathbf{a}^{\wedge}+\mathbf{I}+\sin\theta\mathbf{a}^{\wedge}-\cos\theta\mathbf{a}^{\wedge}\mathbf{a}^{\wedge} \\&=(1-\cos\theta)\mathbf{a}^{\wedge}\mathbf{a}^{\wedge}+\mathbf{I}+\sin\theta\mathbf{a}^{\wedge} \\&= \cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{a}\mathbf{a}^{T}+\sin\theta\mathbf{a}^{\wedge} \end{aligned}.
exp(ϕ∧)=exp(θa∧)=n=0∑∞n!1(θa∧)n=I+θa∧+2!1θ2a∧a∧+3!1θ3a∧a∧a∧+4!1θ4(a∧)4+⋯=(4.1)(4.2)aaT−a∧a∧+θa∧+2!1θ2a∧a∧−3!1θ3a∧−4!1θ4(a∧)2+⋯=aaT+(θ−3!1θ3+5!1θ5−⋯)a∧−(1−2!1θ2+4!1θ4−⋯)a∧a∧=a∧a∧+I+sinθa∧−cosθa∧a∧=(1−cosθ)a∧a∧+I+sinθa∧=cosθI+(1−cosθ)aaT+sinθa∧.最后,得到一个似曾相识的式子:
exp
(
θ
a
∧
)
=
cos
θ
I
+
(
1
−
cos
θ
)
a
a
T
+
sin
θ
a
∧
.
(4.3)
\exp (\theta \mathbf{a}^{\wedge})= \cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{a}\mathbf{a}^{T}+\sin\theta\mathbf{a}^{\wedge}.\tag{4.3}
exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧.(4.3)回想老火另一篇博客《旋转向量与罗德里格斯公式》,它和罗德里格斯公式(2.1)如出一辙。这表明,由所谓的旋转向量
ϕ
\phi
ϕ组成的李代数
s
o
(
3
)
\mathfrak{so}(3)
so(3),其指数映射即是罗德里格斯公式。
结论:通过罗德里格斯公式,我们把 s o \mathfrak{so} so中的任意一个向量 ϕ \phi ϕ对应到了一个位于 S O ( 3 ) SO(3) SO(3)中的旋转矩阵 R R R。
4.1.2 S O ( 3 ) SO(3) SO(3)上的对数映射
反之,如果定义对数映射,也能把 S O ( 3 ) SO(3) SO(3)中的元素对应到 s o ( 3 ) \mathfrak{so}(3) so(3)中。对于函数 l n ( 1 + x ) ln(1+x) ln(1+x),它对应的泰勒展开式为: l n ( 1 + x ) = ∑ n = 0 ∞ ( − 1 ) n + 1 n x n , ∀ x > − 1. ln(1+x)=\sum_{n=0}^{\infty }\frac{(-1)^{n+1}}{n}x^{n} ,\forall x>-1. ln(1+x)=n=0∑∞n(−1)n+1xn,∀x>−1.推广到矩阵有: ϕ = ( l n R ) ∨ = ( l n ( I + R − I ) ) ∨ = ∑ n = 0 ∞ ( − 1 ) n n + 1 ( R − I ) n + 1 (4.4) \begin{aligned} \phi &= (ln\mathbf{R})^{\vee} \\&=(ln(\mathbf{I}+\mathbf{R}-\mathbf{I}))^{\vee} \\&=\sum_{n=0}^{\infty }\frac{(-1)^{n}}{n+1}(\mathbf{R}-\mathbf{I})^{n+1} \end{aligned}\tag{4.4} ϕ=(lnR)∨=(ln(I+R−I))∨=n=0∑∞n+1(−1)n(R−I)n+1(4.4)和指数映射一样,我们没必要直接用泰勒展开计算对数映射。在《旋转向量与罗德里格斯公式》第3节,我们介绍过如何把旋转矩阵转换为旋转向量,即对应的李代数。计算方法即其中的公式 ( 3.2 ) (3.2) (3.2)和 ( 3.3 ) (3.3) (3.3),分别利用迹的性质求解旋转角度 θ \theta θ和归一化求转轴 u u u,显然采用这种方法更简便。
现在,我们介绍了对数映射的计算方法。但是,对于任意的 R R R是否都能找到唯一的 ϕ \phi ϕ呢?很遗憾,对数映射是一个满射,并不是单射。这意味着,每个 S O ( 3 ) SO(3) SO(3)中的元素 R R R,都可以找到一个 s o ( 3 ) \mathfrak{so}(3) so(3)中的元素 ϕ \phi ϕ与之对应;但可能存在多个 s o ( 3 ) \mathfrak{so}(3) so(3)中的元素 ϕ \phi ϕ对应到同一个 S O ( 3 ) SO(3) SO(3)中的元素 R R R。因为对于旋转角 θ \theta θ,它具有周期性,如果把 θ \theta θ固定在 ± π \pm\pi ±π之间,那么李群和李代数的元素是一一对应的。
总结:指数映射即罗德里格斯公式,旋转矩阵的导数可以由旋转向量指定,指导着如何在旋转矩阵中进行微积分运算。对数映射则可以通过矩阵到轴角的转换关系获得。
4.2 欧氏变换 S E ( 3 ) SE(3) SE(3)上的指数/对数映射
4.2.1 s e ( 3 ) \mathfrak{se}(3) se(3)上的指数映射
下面介绍
s
e
(
3
)
\mathfrak{se}(3)
se(3)上的指数映射。为了节省篇幅,不再像
s
o
(
3
)
\mathfrak{so}(3)
so(3)那样详细推导。
s
e
(
3
)
\mathfrak{se}(3)
se(3)上的指数映射形式如下:
exp
(
ξ
∧
)
=
exp
[
ϕ
∧
ρ
0
T
0
]
=
[
∑
n
=
0
∞
1
n
!
(
ϕ
∧
)
n
∑
n
=
0
∞
1
(
n
+
1
)
!
(
ϕ
∧
)
n
ρ
0
T
1
]
=
Δ
[
R
J
ρ
0
T
1
]
(4.5)
\begin{aligned} \exp(\xi^{\wedge}) &=\exp\begin{bmatrix} \phi^{\wedge} & \rho\\ 0^{T} &0 \end{bmatrix}\\&=\begin{bmatrix} \sum_{n=0}^{\infty }\frac{1}{n!}(\phi^{\wedge})^{n} & \sum_{n=0}^{\infty }\frac{1}{(n+1)!}(\phi^{\wedge})^{n}\rho\\ 0^{T} & 1 \end{bmatrix} \\&\overset{\underset{\mathrm{\Delta }}{}}{=}\begin{bmatrix} \mathbf{R} & J\rho\\ 0^{T} &1 \end{bmatrix}\end{aligned}\tag{4.5}
exp(ξ∧)=exp[ϕ∧0Tρ0]=[∑n=0∞n!1(ϕ∧)n0T∑n=0∞(n+1)!1(ϕ∧)nρ1]=Δ[R0TJρ1](4.5)
只要有一点耐心,可以照着
s
e
(
3
)
\mathfrak{se}(3)
se(3)上的做法指导,把指数进行泰勒展开推导此式。关于矩阵的指数运算,可以参考附录文献3中的矩阵指数。
令
ϕ
=
θ
a
\phi=\theta \boldsymbol{a}
ϕ=θa,其中
a
\boldsymbol{a}
a为单位向量,则:
∑
n
=
0
∞
1
(
n
+
1
)
!
(
ϕ
∧
)
n
=
I
+
1
2
!
θ
a
∧
+
1
3
!
θ
2
(
a
∧
)
2
+
1
4
!
θ
3
(
a
∧
)
3
+
1
5
!
θ
4
(
a
∧
)
4
+
⋯
=
1
θ
(
1
2
!
θ
2
−
1
4
!
θ
4
+
⋯
)
(
a
∧
)
+
1
θ
(
1
3
!
θ
3
−
1
5
!
θ
5
+
⋯
)
(
a
∧
)
2
+
I
=
1
θ
(
1
−
cos
θ
)
(
a
∧
)
+
θ
−
sin
θ
θ
(
a
a
T
−
I
)
+
I
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
a
a
T
+
1
−
cos
θ
θ
a
∧
=
d
e
f
J
.
\begin{aligned} \sum_{n=0}^{\infty }\frac{1}{(n+1)!}(\phi^{\wedge})^{n} &= \boldsymbol{I}+\frac{1}{2!}\theta\boldsymbol{a}^{\wedge}+\frac{1}{3!}\theta^{2}(\boldsymbol{a}^{\wedge})^{2}+\frac{1}{4!}\theta^{3}(\boldsymbol{a}^{\wedge})^{3}+\frac{1}{5!}\theta^{4}(\boldsymbol{a}^{\wedge})^{4}+\cdots \\&= \frac{1}{\theta}\left ( \frac{1}{2!}\theta^{2}- \frac{1}{4!}\theta^{4}+\cdots\right )(\boldsymbol{a}^{\wedge})+\frac{1}{\theta}\left ( \frac{1}{3!}\theta^{3}- \frac{1}{5!}\theta^{5}+\cdots\right )(\boldsymbol{a}^{\wedge})^{2}+\boldsymbol{I} \\&= \frac{1}{\theta}(1-\cos\theta)(\boldsymbol{a}^{\wedge})+\frac{\theta-\sin\theta}{\theta}(\boldsymbol{a}\boldsymbol{a}^{T}-\boldsymbol{I})+\boldsymbol{I} \\&= \frac{\sin\theta}{\theta}\boldsymbol{I}+(1-\frac{\sin\theta}{\theta})\boldsymbol{a}\boldsymbol{a}^{T}+\frac{1-\cos\theta}{\theta}\boldsymbol{a}^{\wedge}\overset{\underset{\mathrm{def}}{}}{=}\boldsymbol{J}. \end{aligned}
n=0∑∞(n+1)!1(ϕ∧)n=I+2!1θa∧+3!1θ2(a∧)2+4!1θ3(a∧)3+5!1θ4(a∧)4+⋯=θ1(2!1θ2−4!1θ4+⋯)(a∧)+θ1(3!1θ3−5!1θ5+⋯)(a∧)2+I=θ1(1−cosθ)(a∧)+θθ−sinθ(aaT−I)+I=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧=defJ.从结果上看,
ξ
\xi
ξ的指数映射矩阵左上角的
R
\boldsymbol{R}
R,是我们熟知的
S
O
(
3
)
SO(3)
SO(3)中的元素,与
s
e
(
3
)
\mathfrak{se}(3)
se(3)中的旋转部分
ϕ
\phi
ϕ对应。而右上角的
J
\boldsymbol{J}
J由上面的推导给出:
J
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
a
a
T
+
1
−
cos
θ
θ
a
∧
(4.6)
\boldsymbol{J}=\frac{\sin\theta}{\theta}\boldsymbol{I}+(1-\frac{\sin\theta}{\theta})\boldsymbol{a}\boldsymbol{a}^{T}+\frac{1-\cos\theta}{\theta}\boldsymbol{a}^{\wedge}\tag{4.6}
J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧(4.6)该式与罗德里格斯公式有些相似,但不完全一样。我们看到,平移部分经过指数映射之后,发生了一次以
J
\boldsymbol{J}
J为系数矩阵的线性变换。请读者重视这个
J
\boldsymbol{J}
J,因为后面还要用到。
4.2.2 S E ( 3 ) SE(3) SE(3)上的对数映射
同样,虽然我们也可以类比推导对数映射,不过根据变换矩阵 T \boldsymbol{T} T求 s e ( 3 ) \mathfrak{se}(3) se(3)上的对应向量也有更省事的方式:从左上角的 R R R计算旋转向量 ϕ \phi ϕ,而右上角的 t t t满足: t = J ρ . t=\boldsymbol{J}\rho. t=Jρ.由于 J \boldsymbol{J} J可以由 ϕ \phi ϕ得到, t t t为测量量,所以这里的 ρ \rho ρ也可由上式解得。这样我们就能得到 ξ \xi ξ中全部变量 ϕ , ρ \phi,\rho ϕ,ρ了。
4.3 总结
现在,我们已经弄清了李群、李代数的定义以及它们之间相互的转换关系,总结图如下:
三维旋转变换:
∣
S
O
(
3
)
R
∈
R
3
×
3
R
R
T
=
I
d
e
t
(
R
)
=
1
∣
→
对
数
映
射
:
θ
=
arccos
t
r
(
R
)
−
1
2
,
R
a
=
a
←
指
数
映
射
:
ϕ
=
θ
a
,
exp
(
θ
a
∧
)
=
cos
θ
I
+
(
1
−
cos
θ
)
a
a
T
+
sin
θ
a
∧
∣
s
o
(
3
)
ϕ
∈
R
ϕ
∧
=
[
0
−
ϕ
3
ϕ
2
ϕ
3
0
−
ϕ
1
−
ϕ
2
ϕ
1
0
]
∣
\begin{vmatrix} SO(3)\\ R\in\mathbb{R}^{3\times3}\\ RR^{T}=I\\ det(R)=1 \end{vmatrix}\frac{\xrightarrow[]{对数映射:\theta=\arccos\frac{tr(R)-1}{2},Ra=a}}{\xleftarrow[指数映射:\phi=\theta a,\exp (\theta \mathbf{a}^{\wedge})= \cos\theta\mathbf{I}+(1-\cos\theta)\mathbf{a}\mathbf{a}^{T}+\sin\theta\mathbf{a}^{\wedge}]{}}\begin{vmatrix} \mathfrak{so}(3)\\ \phi\in\mathbb{R}\\ \phi^{\wedge}=\begin{bmatrix} 0 & -\phi_{3} & \phi_{2}\\ \phi_{3} & 0 & -\phi_{1}\\ -\phi_{2} & \phi_{1} & 0 \end{bmatrix} \end{vmatrix}
∣∣∣∣∣∣∣∣SO(3)R∈R3×3RRT=Idet(R)=1∣∣∣∣∣∣∣∣指数映射:ϕ=θa,exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧对数映射:θ=arccos2tr(R)−1,Ra=a∣∣∣∣∣∣∣∣∣∣so(3)ϕ∈Rϕ∧=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤∣∣∣∣∣∣∣∣∣∣
三维欧氏变换:
∣
S
E
(
3
)
T
∈
R
4
×
4
T
=
[
R
t
0
T
1
]
∣
→
对
数
映
射
:
θ
=
arccos
t
r
(
R
)
−
1
2
,
R
a
=
a
,
t
=
J
ρ
←
指
数
映
射
:
ϕ
=
θ
a
,
exp
(
ξ
∧
)
=
[
e
x
p
(
ϕ
∧
)
J
ρ
0
T
1
]
,
J
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
a
a
T
+
1
−
cos
θ
θ
a
∧
∣
s
e
(
3
)
ξ
=
[
ρ
ϕ
]
∈
R
6
ξ
∧
=
[
ϕ
∧
ρ
0
T
0
]
∣
\begin{vmatrix} SE(3)\\ T\in\mathbb{R}^{4\times 4}\\ T=\begin{bmatrix} R & t\\ 0^{T} &1 \end{bmatrix} \end{vmatrix}\frac{\xrightarrow[]{对数映射:\theta=\arccos\frac{tr(R)-1}{2},Ra=a,t=\boldsymbol{J}\rho}}{\xleftarrow[指数映射:\phi=\theta a,\exp (\xi^{\wedge})= \begin{bmatrix} \\exp(\phi^{\wedge}) & J\rho\\ 0^{T} &1 \end{bmatrix},\boldsymbol{J}=\frac{\sin\theta}{\theta}\boldsymbol{I}+(1-\frac{\sin\theta}{\theta})\boldsymbol{a}\boldsymbol{a}^{T}+\frac{1-\cos\theta}{\theta}\boldsymbol{a}^{\wedge}]{}}\begin{vmatrix} \mathfrak{se}(3)\\ \xi=\begin{bmatrix} \rho\\ \phi \end{bmatrix}\in\mathbb{R}^{6}\\ \xi^{\wedge=}\begin{bmatrix} \phi^{\wedge} & \rho\\ 0^{T} &0 \end{bmatrix} \end{vmatrix}
∣∣∣∣∣∣∣∣SE(3)T∈R4×4T=[R0Tt1]∣∣∣∣∣∣∣∣指数映射:ϕ=θa,exp(ξ∧)=[exp(ϕ∧)0TJρ1],J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧对数映射:θ=arccos2tr(R)−1,Ra=a,t=Jρ∣∣∣∣∣∣∣∣∣∣se(3)ξ=[ρϕ]∈R6ξ∧=[ϕ∧0Tρ0]∣∣∣∣∣∣∣∣∣∣
本文基于《视觉SLAM十四讲:从理论到实践》编写,但相对于原文会适当扩充疑难部分,精简非必要陈述,同时为便于全面理解,会收集其他网络好文,加入一些注解和扩展知识点,如果您觉得还不错,请一键四连(点赞关注收藏评论),让更多的人看到。
参考文献:
- 《视觉SLAM十四讲:从理论到实践》,高翔、张涛等著,中国工信出版社
- 《为什么要有切线空间(Tangent Space),它的作用是什么?》
- 《线性代数笔记24——微分方程和exp(At)》