这篇文章总结了《视觉 SLAM 14 讲》中第四讲(李群与李代数)的部分内容. 跳到小结.
群
群是一种集合加上一种运算的代数结构. 记集合为 A, 运算为 ⋅, 则群可以记为
G=(A,⋅)
运算性质
群要求运算 ⋅ 满足以下条件:
∀a1,a2∈A,a1⋅a2∈A.
∀a1,a2,a3∈A,(a1⋅a2)⋅a3=a1⋅(a2⋅a3).
∃a0∈A,s.t.∀a∈A,a0⋅a=a⋅a0=a.
∀a∈A,∃a−1∈A,s.t.a⋅a−1=a0.
常见的群:
- 一般线性群 GL(n): 指 n×n 可逆矩阵, 对矩阵乘法运算成群.
- 特殊正交群 SO(n): 即旋转矩阵群, 对矩阵乘法成群, SO(2) 和 SO(3) 最常见.
- 特殊欧氏群 SE(n): 代表了 n 维欧式变换, 对矩阵乘法成群, 如 SE(2), SE(3).
李群
李群指具有连续(光滑)性质的群.
整数群 Z 就没有连续性质;
SO(n) 和 SE(n) 在 Rn 上是连续的, 它们是李群.
回顾:
SO(n)={R∈Rn×n∣RRT=I,det(R)=1}.
SE(n)={T=[R0Tt1]∈R(n+1)×(n+1)∣R∈SO(n),t∈Rn}
视觉 SLAM 中主要讨论的是 SO(3) 和 SE(3) 这两个李群.
李代数
引出
考虑 SO(3) 中的元素 R, 有
RRT=I.
类似地, 对一个随时间变化的旋转矩阵 R(t), 有
R(t)R(t)T=I.
上式左右两边对 t 求导有
R˙(t)R(t)T+R(t)TR˙(t)=0,
即
R˙(t)R(t)T=−[R(t)TR˙(t)]T.
这说明矩阵 R˙RT 是一个反对称矩阵. 故存在向量 ϕ(t)∈R3 使得
R˙RT=ϕ(t)∧.
在等式两边右乘 R(t), 得
R˙(t)=ϕ(t)∧R(t).
这说明要对矩阵 R 求一次导数, 只需要左乘一个反对称矩阵 ϕ∧ 即可.
设 R(t) 在 t0=0 处的值为 I, 可以把 R(t) 在 t0=0 附近做一阶泰勒展开:
R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)∧.
ϕ 反映了 R∈SO(3) 的导数性质, 故称它在 SO(3) 原点附近的正切空间(Tangent Space)上.
在 t0=0 附近, 设 ϕ 为常数 ϕ0, 有
R˙⇒R˙=ϕ(t0)∧R(t),=ϕ0∧R(t).
这是关于 R 的微分方程, 由于已知 R(0)=I, 则有
R(t)=exp(ϕ∧),whereR∈SO(3).
如此就得到了 SO(3) 中元素 R 与 R3 中向量 ϕ 的映射关系. 也出现了两个问题:
- 与 R 对应的 ϕ 有何含义?
- 矩阵指数 exp(ϕ∧) 如何计算?
定义
每个李群都有与之对应的李代数. 李代数描述了李群的局部性质.
定义: 李代数由一个集合 V, 一个数域 F 和一个二元运算 [,] 组成. 如果它们满足以下性质, 称 (V,F,[,]) 为一个李代数, 记作 g:
- 封闭性: ∀X,Y∈V,[X,Y]∈V.
- 双线性: ∀X,Y,Z∈V,a,b∈F, 有
[aX+bY,Z][Z,aX+bY]=a[X,Z]+b[Y,Z],=a[Z,X]+b[Z,Y].
- 自反性(交错性): ∀X∈V,[X,X]=0.
自反性指自己与自己进行李括号运算结果为零.
- 雅可比等价: ∀X,Y,Z∈V, 有
[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0.
此处有推论(反交换律): 由双线性和自反性(交错性), 有
0=[X+Y,X+Y]=[X,X+Y]+[Y,X+Y]=[X,X]+[X,Y]+[Y,X]+[Y,Y]=[X,Y]+[Y,X]
故有 [X,Y]=−[Y,X]. (反交换律)
例子:
- 三维向量 R3 上定义的叉积 × 是一种李括号, 因此 g=(R3,R,×) 构成了一个李代数.
李代数 so(3)
在前面的引出中提到的 ϕ, 事实上是一种李代数. SO(3) 对应的李代数是定义在 R3 上的向量, 记作 ϕ∈R3. 每一个 ϕ 都可以对应生成一个反对称矩阵 Φ:
Φ=ϕ∧=⎣⎢⎢⎢⎢⎢⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎥⎥⎥⎥⎥⎤∈R3×3
在此定义下, 两个向量 ϕ1,ϕ2 的李括号为:
[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨.
由于 ϕ 与其对应的反对称矩阵 Φ 之间的关系很紧密, 故在不引起歧义的情况下, 就称李代数 so(3) 的元素是 3 维向量或 3 维反对称矩阵:
so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}.
三维向量 ϕ∈so(3) 与其在 {SO(3) 中的旋转矩阵的对应关系由_指数映射_给出:
R=exp(ϕ∧).
李代数 se(3)
对于李群 SE(3), 也有对应的李代数 se(3).
李群 SE(3) 的形式可以表示为:
SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R3}.
每个变换矩阵 T 有六个自由度, 故对应的李代数 ξ 位于 R6 中 :
se(3)={ξ=[ρϕ]∈R6,Ξ=ξ∧=[ϕ∧0Tρ0]∈R4×4}.
注意此处 ∧ 不再表示向量 → 反对称矩阵的映射, 而是把一个六维向量映射为一个四维矩阵.
可以看到 ξ 的前三维代表平移 (此时的 ρ 还不直接是平移向量), 后三维代表旋转 (后三维即 ϕ∈so(3) ). 这一李代数对应微分方程:
T˙(t)=ξ∧(t)T(t).
于是有
T(t)=exp(ξ∧)T(t0).
由_指数映射_, 有
exp(ξ∧)={∑n=0∞n1(ϕ∧)n0T∑n=0∞(n+1)!1(ϕ∧)nρ1}={Φ0TJρ1}.
小结
- 李代数表达的正切空间, 具有和其对应李群相同的自由度;
- _指数映射_能够把正切空间中的向量正好映射到原李群.