说明:转发请注明作者和出处;以下文章内容为精简版,详细版以pdf格式的幻灯片形式呈现,请见链接:视觉SLAM_05_李群与李代数基础.pdf
0.目录
1.群
群是一种集合加上一种运算的代数结构。如果把集合记作 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, 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, (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, s.t. \quad \forall a \in A, 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, \exists a^{-1} \in A, s.t. \quad a \cdot a^{-1} = a_0
∀a∈A,∃a−1∈A,s.t.a⋅a−1=a0.
矩阵中常见的群有: - 一般线性群 G L ( n ) GL(n) GL(n):指 n × n n \times n n×n的可逆矩阵,它们对矩阵乘法成群。
- 特殊正交群 S O ( n ) SO(n) SO(n):指 n n n维旋转矩阵群,其中 S O ( 2 ) , S O ( 3 ) SO(2), SO(3) SO(2),SO(3)最常见。
- 特殊欧氏群
S
E
(
n
)
SE(n)
SE(n):指
n
n
n维欧氏变换矩阵群,其中
S
E
(
2
)
,
S
E
(
3
)
SE(2), SE(3)
SE(2),SE(3)最常见。
群论是研究群的各种结构和性质的理论。李群是指具有连续性质的群,像整数群 Z \mathbb{Z} Z那样离散的群没有连续性质,所以不是李群。
特殊正交群:
S O ( 3 ) = { R ∈ R 3 × 3 ∣ R R T = I , det ( R ) = 1 } (1) SO(3) = \left \{\boldsymbol R \in \mathbb R^{3\times 3} | \boldsymbol R \boldsymbol R^T = \boldsymbol I, \det (\boldsymbol R) = 1 \right \} \tag{1} SO(3)={R∈R3×3∣RRT=I,det(R)=1}(1) 特殊欧式群:
S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } (2) SE(3) = \left \{ \boldsymbol T = \begin{bmatrix} \boldsymbol R & \boldsymbol t \\ \boldsymbol 0^T & 1 \end{bmatrix} \in \mathbb{R}^{4 \times 4} | \boldsymbol R \in SO(3), \boldsymbol t \in \mathbb R^3 \right \} \tag{2} SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R3}(2)
2.李代数的引出
旋转矩阵是正交的,满足:
R
R
T
=
I
(3)
\boldsymbol{R} \boldsymbol{R}^T = \boldsymbol{I} \tag{3}
RRT=I(3)假设
R
\boldsymbol{R}
R是某个相机的旋转,它随时间连续变化,即为时间的函数
R
(
t
)
\boldsymbol{R}(t)
R(t),由于它仍是旋转矩阵,有:
R
(
t
)
R
(
t
)
T
=
I
(4)
\boldsymbol{R}(t) \boldsymbol{R}(t)^T = \boldsymbol{I} \tag{4}
R(t)R(t)T=I(4)在等式两边对时间求导得:
R
˙
(
t
)
R
(
t
)
T
+
R
(
t
)
R
˙
(
t
)
T
=
I
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^T + \boldsymbol{R(t)} \dot{\boldsymbol{R}}(t)^T = \boldsymbol{I}
R˙(t)R(t)T+R(t)R˙(t)T=I整理得:
R
˙
(
t
)
R
(
t
)
T
=
−
(
R
˙
(
t
)
R
(
t
)
T
)
T
(5)
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^T = -(\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^T)^T \tag{5}
R˙(t)R(t)T=−(R˙(t)R(t)T)T(5)可以看出
R
˙
(
t
)
R
(
t
)
T
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^T
R˙(t)R(t)T是一个反对称矩阵,可以找到一个三维向量
ϕ
(
t
)
∈
R
3
\boldsymbol \phi(t) \in \mathbb{R}^3
ϕ(t)∈R3与之对应:
R
˙
(
t
)
R
(
t
)
T
=
ϕ
(
t
)
^
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^T = \boldsymbol \phi (t) \hat{\,}^{}
R˙(t)R(t)T=ϕ(t)^等式两边右乘
R
(
t
)
\boldsymbol{R}(t)
R(t),由于
R
\boldsymbol{R}
R正交,有:
R
˙
(
t
)
=
ϕ
(
t
)
^
R
(
t
)
=
[
0
−
ϕ
3
ϕ
2
ϕ
3
0
−
ϕ
1
−
ϕ
2
ϕ
1
0
]
R
(
t
)
(6)
\dot{\boldsymbol{R}}(t) = \boldsymbol \phi(t) \hat{\,} \boldsymbol{R}(t) = \begin{bmatrix} 0 & -\phi_3 & \phi_2 \\ \phi_3 & 0 & -\phi_1 \\ -\phi_2 & \phi_1 & 0 \end{bmatrix} \boldsymbol{R}(t) \tag{6}
R˙(t)=ϕ(t)^R(t)=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤R(t)(6)可以看到,每对矩阵求一次导数,只需左乘一个
ϕ
(
t
)
^
\boldsymbol \phi(t) \hat{\,}
ϕ(t)^矩阵即可。设
t
0
t_0
t0时,旋转矩阵
R
(
0
)
=
I
\boldsymbol{R}(0) = \boldsymbol{I}
R(0)=I。对
R
(
t
)
\boldsymbol{R}(t)
R(t)在
t
=
0
t=0
t=0附近进行一阶泰勒展开:
R
(
t
)
≈
R
(
t
0
)
+
R
˙
(
t
0
)
(
t
−
t
0
)
=
I
+
ϕ
(
t
0
)
^
I
(
t
−
0
)
=
I
+
ϕ
(
t
0
)
^
(
t
)
(7)
\begin{aligned} \boldsymbol{R}(t) &\approx \boldsymbol{R}(t_0) + \dot{\boldsymbol{R}}(t_0)(t-t_0) \\ &= \boldsymbol{I} + \boldsymbol \phi(t_0) \hat{\,} \boldsymbol I (t - 0) \\ &= \boldsymbol{I} + \boldsymbol \phi(t_0) \hat{\,} (t) \end{aligned} \tag{7}
R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)^I(t−0)=I+ϕ(t0)^(t)(7)设在
t
0
t_0
t0附近,设
ϕ
\phi
ϕ保持为常数
ϕ
(
t
0
)
=
ϕ
0
\boldsymbol \phi(t_0) = \boldsymbol \phi_0
ϕ(t0)=ϕ0,则:
R
˙
(
t
)
=
ϕ
(
t
)
^
R
(
t
)
=
ϕ
0
^
R
(
t
)
\dot{\boldsymbol{R}}(t) = \boldsymbol \phi(t) \hat{\,} \boldsymbol{R}(t) = \boldsymbol \phi_0 \hat{\,} \boldsymbol{R}(t)
R˙(t)=ϕ(t)^R(t)=ϕ0^R(t)
上式是关于
R
\boldsymbol{R}
R的微分方程,且初始值
R
(
0
)
=
I
\boldsymbol{R(0)} =\boldsymbol{I}
R(0)=I,解得:
R
(
t
)
=
e
ϕ
0
^
t
(8)
\boldsymbol{R}(t) = e^{\boldsymbol \phi_0 \hat{\,} t} \tag{8}
R(t)=eϕ0^t(8)通过上式可以看出:给定某时刻的
R
\boldsymbol R
R,我们就能求得一个
ϕ
\phi
ϕ,它描述了
R
\boldsymbol R
R在局部的导数关系。与
R
\boldsymbol R
R对应的
ϕ
\phi
ϕ正是对应到
S
O
(
3
)
SO(3)
SO(3)上的李代数
s
o
(
3
)
\mathfrak{so}(3)
so(3)。
3.李代数的定义
每个李群都有与之对应的李代数,李代数描述了李群的局部性质。一般的李代数的定义如下:
李代数由一个集合
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 \forall \boldsymbol X, \boldsymbol Y \in \mathbb V , [\boldsymbol X, \boldsymbol Y] \in \mathbb V ∀X,Y∈V,[X,Y]∈V
- 双线性:
∀
X
,
Y
,
Z
∈
V
,
a
,
b
∈
F
\forall \boldsymbol{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 ] [a \boldsymbol X + b \boldsymbol Y, \boldsymbol Z] = a[\boldsymbol X, \boldsymbol Z] + b[\boldsymbol Y, \boldsymbol Z],\quad [\boldsymbol Z, a \boldsymbol X + b \boldsymbol Y] = a[\boldsymbol Z, \boldsymbol X] + b[\boldsymbol Z, \boldsymbol Y] [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y] - 自反性: ∀ X ∈ V , [ X , X ] = 0 \forall \boldsymbol X \in \mathbb V , [\boldsymbol X, \boldsymbol X] = 0 ∀X∈V,[X,X]=0
- 雅可比等价:
∀
X
,
Y
,
Z
∈
V
,
[
X
,
[
Y
,
Z
]
]
+
[
Z
,
[
X
,
Y
]
]
+
[
Y
,
[
Z
,
X
]
]
=
0
\forall \boldsymbol{X, Y, Z} \in \mathbb V, [\boldsymbol X, [\boldsymbol Y, \boldsymbol Z ]] + [\boldsymbol Z, [\boldsymbol X, \boldsymbol Y]] + [\boldsymbol Y, [\boldsymbol Z, \boldsymbol X]] = 0
∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0
其中,二元运算称为李括号。三维向量 R 3 \mathbb R^3 R3上定义的叉积 × \times ×是一种李括号,因此 g = ( R 3 , R , × ) \mathfrak g = (\mathbb R^3, \mathbb R, \times) g=(R3,R,×)构成了一个李代数。
4.李代数 s o ( 3 ) \mathfrak{so}(3) so(3)
李代数
s
o
(
3
)
\mathfrak{so}(3)
so(3)的元素是三维向量或者三维反对称矩阵:
s
o
(
3
)
=
{
ϕ
∈
R
3
,
Φ
=
ϕ
^
∈
R
3
×
3
}
(9)
\mathfrak{so}(3) = \left\{ \boldsymbol \phi \in \mathbb R^3, \Phi = \boldsymbol \phi \hat{\,}^{} \in \mathbb R ^ {3 \times 3} \right\} \tag{9}
so(3)={ϕ∈R3,Φ=ϕ^∈R3×3}(9)亦即,
s
o
(
3
)
\mathfrak{so}(3)
so(3)的内容是一个由三维向量组成的集合,每个向量对应一个反对称矩阵,可以用于表达旋转矩阵的导数。它与
S
O
(
3
)
SO(3)
SO(3)的关系由指数映射给定:
R
=
e
ϕ
^
\boldsymbol R = e^{\boldsymbol \phi \hat{\,}^{}}
R=eϕ^
5.李代数 s e ( 3 ) \mathfrak{se}(3) se(3)
s
e
(
3
)
=
{
ξ
=
[
ρ
ϕ
]
∈
R
6
,
ρ
∈
R
3
,
ϕ
∈
s
o
(
3
)
,
ξ
^
=
[
ϕ
^
ρ
0
T
0
]
∈
R
4
×
4
}
(10)
\mathfrak{se}(3) = \left\{ \boldsymbol \xi = \begin{bmatrix} \boldsymbol \rho \\ \boldsymbol \phi \end{bmatrix} \in \mathbb R^6, \boldsymbol \rho \in \mathbb R^3, \boldsymbol \phi \in \mathfrak{so}(3), \boldsymbol \xi \hat{\,}^{} = \begin{bmatrix} \boldsymbol \phi \hat{\,}^{} & \boldsymbol \rho \\ \boldsymbol 0^T & 0 \end{bmatrix} \in \mathbb R^{4 \times 4} \right\} \tag{10}
se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ^=[ϕ^0Tρ0]∈R4×4}(10)
我们把每个
s
e
(
3
)
\mathfrak{se}(3)
se(3)的元素记作
ξ
\boldsymbol \xi
ξ,它是一个六维向量,前三维表示平移,记作
ρ
\boldsymbol \rho
ρ,后三维表示旋转,记作
ϕ
\boldsymbol \phi
ϕ。可以简单地把
s
e
(
3
)
\mathfrak{se}(3)
se(3)理解成“由一个平移加上一个
s
o
(
3
)
\mathfrak{so}(3)
so(3)元素构成的向量”。
6.参考文献
- 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.