NOTE / 2018/8/25
[十四讲]第4章总结
SLAM技术笔记SLAMVIO传感器融合
最近在看《视觉SLAM十四讲》,在此对一些关键点进行总结和记录。
这一章的主要内容是介绍李群和李代数
为什么要使用李群和李代数?主要的目的是为了简化涉及位姿变量的优化问题的求解。如果采用旋转矩阵和变换矩阵作为位姿表达,我们构造的优化问题就是一个带约束的优化问题,约束就是旋转矩阵是正交的,这个问题就很难求解;而如果使用李群、李代数的方式表达刚体的运动,问题就变成了一个无约束优化问题。这就是VSLAM中的主要用途。
群的定义
群是一种几何加上一种运算的代数结构,集合记为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)
李群:具有连续(光滑)性质的群;
李代数的定义
每个李群都有与之对应的李代数,李代数描述了李群的局部性质。
李群由一个集合 V , 一个数域 F和一个二元运算(李括号) [,] 组成。称 (V, F, [,]) 为一个李代数;满足一下条件:
- 封闭性: ∀X,Y∈V, [X,Y]∈V.
- 双线性: ∀X,Y,Z∈V,a,b∈F有: [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=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.
李代数 so(3)
so(3)={ϕ∈R3, Φ=ϕ∧∈R3×3}
- 元素是三维向量或者三维反对称矩阵;
- 李括号是: [ϕ1, ϕ2]=(Φ1Φ2−Φ2Φ1)∨ .
- 他与李群SO(3)的关系是 R=exp(ϕ∧) .
李代数se(3)
se(3)={ξ=[ρϕ]∈R6×6, ρ∈R3×3,ϕ∈so(3),ξ∧=[ϕ∧0Tρ0]∈R4×4}
- 元素是六维向量,前三个是平移相关的量,后三个是旋转相关的量;
- 李括号为: [ξ1, ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨ ;
- 他与李群SE(3)的关系是 T=exp(ξ∧) 。
指数对数映射
盗图
李代数求导与扰动模型
对于一般的矩阵指数函数,下式并不成立,
ln(exp(A)exp(B))=A+B
但是BCH公式告诉我们,有个近似的式子:
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1 ϕ1+ϕ2 当ϕ1很小Jr(ϕ1)−1ϕ2+ϕ1 当ϕ2很小
有了这个就可以根据导数的定义去做刚体运动的求导工作:
∂φ∂Rp=φ→0limφexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p=−(Rp)∧
∂δξ∂Tp=[I0T−(Rp+t)0T]=(Tp)⊙
VSLAM应用
假设,我们要解决一个motion only BA问题:
ξ∗=argξmin21∥e∥2e=ui−si1Kexp(ξ∧)piT=exp(ξ∧)
如果采用高斯牛顿法求解,需要对误差利用泰勒展开,取线性项:
e(ξ⊕δξ)=e(ξ)+J⋅δξJ=∂δξ∂e
这里的关键就在于雅可比矩阵 J 的求解。这里的 ui 是一个2x1的向量,求导时无用,我们引入一下中间变量——地图点在摄像机坐标系下的表达 P′ :
e=ui−si1KP′;P′=exp(ξ∧)pi=Tpi
根据链式求导法则:
J=∂δξ∂e=∂P′∂e∂δξ∂P′
前面一项就是投影模型的求导:
∂P′∂e=−[Z′fx00Z′fy−Z′2fxX′−Z′2fyY′]
后面一部分就是前面提到的利用李代数的扰动模型进行的求导:
∂δξ∂P′=∂δξ∂Tpi=[I−P′∧]=(Tpi)⊙
这就是李代数的应用,实现了无约束的优化。