《视觉SLAM十四讲》学习笔记:第4讲 李群与李代数
前言:本学习笔记将记录《视觉SLAM十四将》中一些重要的知识点,并对书中一些比较难的知识点添加上一些笔者个人的理解,以供笔者本人复习并与各位同学一起交流学习。本笔记结构将与原书结构一致,如果某一目录下面没有任何笔记,则代表笔者认为该小节内容相对来说没有过多重点知识。
本讲主要解决问题
理论:
1.理解李群与李代数的概念,掌握 S O ( 3 ) , S E ( 3 ) SO(3),SE(3) SO(3),SE(3) 与对应李代数的表示方式
2. 理解 BCH 近似的意义。
3. 学会在李代数上的扰动模型。
实践:
1.使用 Sophus 对李代数进行运算。
本章意义:由于在SLAM中位姿是未知的,因此需要解决什么样的相机位姿最符合当前观测数据这个问题,其中一个典型的方式就是把它构建成一个优化问题,求解最优的 R , t R,t R,t,使得误差最小化。但是,如果直接将旋转矩阵/变换作为优化变量时,会引入额外的约束(旋转矩阵/变换本身带有约束,即旋转部分正交且行列式为1),因此会给优化带来许多麻烦。而通过李群——李代数间的转换关系,把位姿估计变成无约束的优化问题,简化求解方式。
4.1 李群李代数基础
4.1.1 群
1.群的定义,群是一种集合加上一种运算的代数结构。将集合记作 A A A,运算记作 ⋅ · ⋅,那么群可以记作 G = ( A , ⋅ ) G=(A,·) G=(A,⋅)。群要求这个运算满足以下几个条件:
可以验证,旋转矩阵集合和矩阵乘法构成群,同样变换矩阵和矩阵乘法也构成群。
2.李群:李群是指具有连续(光滑)性质的群。本章重点关注李群 S O ( 3 ) SO(3) SO(3)和 S E ( 3 ) SE(3) SE(3)。
4.1.2 重新排版说明
本章第一节剩余部分与本章第二节排版较原书略有不同,因此,可能会出现一些奇奇怪怪的节名
但是此处,我们首先需要明确,本章最终想要获得的,是典型的李群 S O ( 3 ) SO(3) SO(3), S E ( 3 ) SE(3) SE(3)分别和李代数 s o ( 3 ) so(3) so(3), s e ( 3 ) se(3) se(3)相互之间的转换关系
4.1.3 李代数的定义
每个李群都有与之对应的李代数。李代数描述了李群的局部性质(至于)。通用的李代数的定义如下:
李代数有一个集合 V V V,一个数域 F F F和一个二元运算[,]组成。如果它们满足以下几条性质,称 ( V , F , [ , ] ) (V,F,[,]) (V,F,[,])为一个李代数,记作 g g g。
4.1.3 李代数so(3)
定义李代数 s o ( 3 ) so(3) so(3):
其对应的李括号为:
可以推导,李代数 s o ( 3 ) so(3) so(3)与 S O ( 3 ) SO(3) SO(3)的关系由指数映射给定:
其中, ϕ \phi ϕ满足:
推导过程如下:
对于任意旋转矩阵 R ∈ S O ( 3 ) R\in SO(3) R∈SO(3),有:
若认为 R R R会随时间连续地变化,比如相机的旋转,那么有:
等式两边对时间求导,得到:
整理得到:
因此,可以看出 R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^T R˙(t)R(t)T是一个反对称矩阵。
这里给出一个符号 ∨ \lor ∨该符号表示将反对称矩阵变为向量:
由于 R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^T R˙(t)R(t)T是一个反对称矩阵,可以找到一个三维向量 ϕ ( t ) ∈ R 3 \phi(t)\in R^3 ϕ(t)∈R3与之对应,于是有:
等式两边右乘 R ( t ) R(t) R(t),有:
可以看到,每对旋转矩阵求一次导数,只需左乘一个 ϕ ( t ) ∧ \phi(t)^{\land} ϕ(t)∧矩阵即可。( ϕ ( t ) ∧ \phi(t)^{\land} ϕ(t)∧是和旋转矩阵有关的,而不是说上式的二阶导就是再加一个一模一样的 ϕ ( t ) ∧ \phi(t)^{\land} ϕ(t)