SLAM14讲学习笔记(一) 李群李代数基础

187
0
2020年10月29日 09时03分

第二次翻看《视觉SLAM十四讲》,发现第一次看过的都忘记了,认真分析了一下,我认为是第一次学习没有弄清楚整体的脉络。因此这次做一个小小的总结,希望不要再过几天又忘掉。前面的内容就没有总结的意义了,因为是最简单的,真正进入SLAM,应该是从这章的内容开始。

 


 

首先,旋转矩阵是一个正交矩阵,它与自己的转置的乘积是单位矩阵。另外它还是关于时间的函数。

每次对R(t)求导,相当于将其左乘一个Φ(t)^,其中Φ(t)是一个三维向量,Φ(t)^为其对应的反对称矩阵。即满足如下关系式:

SLAM14讲学习笔记(一) 李群李代数基础插图

Φt即为R(t)对应的李代数。R(t)作为李群,是具有光滑连续性质的群,有封结幺逆性质。

 


 

封是两个元素都属于群,那么乘积也属于群;

结是结合律;

幺元是群中至少有一个元素,别的元素与其相乘都是自身;

逆是对于所有群中的元素,群中至少有一个元素,与其他元素相乘都得到一个固定的元素

 


 

1.每个李群有其对应的李代数。李代数是向量,反映的是李群的局部性质。例如上面,so(3)就反应了SO(3)的局部导数性质。

 

2.两个向量还有李括号运算,即a的^和b的^的乘积减去b的^和a的^,最后括起来,再用”v”变成一个向量。

 

3.指数映射,即exp(Φ^)泰勒展开,然后把Φ当成是θa的乘积,(θ是模长,a是方向),算的算的就会发现满足罗德里格斯公式,即书上的4.22公式。

 

罗德里格斯公式描述的是旋转矩阵R和旋转向量的关系,这里算出来的左边的exp(Φ^)其实也是旋转矩阵,

因此说明李代数so(3)其实就是旋转向量组成的空间,指数映射就是罗德里格斯公式。

 

4.对数映射,即反过来,求ln(R),然后再加个”v”操作,变成向量。这样李群SO3就能转化成李代数so3。不过这样太麻烦了,实际计算可以用迹的那个公式算。

 

5.李群李代数变换法则总结:

 

1

 

关于这块:平移部分经过指数映射之后,发生了一次以 J 为系数矩阵的线性变换。

 

6.扰动模型:

虽然李群和李代数满足的是这种指数关系,但是这里是矩阵,也就是说(e的a次方)乘以(e的b次方)结果并不等于e的a+b次方。

因此BCH公式就是说,当处理两个矩阵指数之积的时候,会产生一些李括号构成的余项。

例子:某个旋转R,对应李代数Φ,左乘一个微小旋转△R,对应的李代数△Φ,

那么李群就是直接相乘△R·R,而李代数不是直接相加,而是Φ+J(下标l,上标-1,自变量Φ)△Φ。

下标l是左乘,如果右乘就是r(即Jl的自变量Φ取反),上标-1是雅克比矩阵J的逆运算。J其实就是SE(3)和se(3)转换时候的那个J,就是上面那个图里的J。

 

2

 

注意有一点记忆方法:第一,小量在哪边,雅克比的下标方向在哪边;第二,大量进雅克比自变量;第三,最后结果是雅克比乘小量,再加上大量。

3

 

7.李代数解决求导问题,原因是:

z=Tp+w,T是位姿,p世界坐标系下的点,w是噪声。

根据很多个点,构建误差最小化:

 

4

 

即构建与位姿有关的函数,讨论该函数关于位姿的导数,调整估计值。(之后的内容会讲到,误差会对位姿求导,会对特征点位置求导,而对位姿求导的过程中,会分成几个偏导,其中之一就是位置对位姿求导,也就是本讲之后的推导内容)

两种思路:

(1)用李代数表示姿态。根据李代数加法来对李代数求导;

(2)   用李群表示姿态,左右乘以微小扰动,对该扰动求导。

 

第一种思路,是要用Rp对R来求偏导,构建的方程为:

exp(Φ^)p对Φ求偏导,根据定义,加一个小量δΦ,exp((Φ+δΦ)^)p-exp(Φ^)p,再对小量δΦ求偏导。把exp((Φ+δΦ)^)p拆成两项,多一个雅克比矩阵出来,然后泰勒展开,把反对称符号看做叉积,交换变号,最后得到的结果是(-Rp)^JL。

用这种方式求出来的结果,带一个雅克比矩阵,不太方便计算。

 

第二种思路,是对R进行扰动,左乘一个△R,对应李代数ψ。Rp对ψ求偏导,那么式子变成exp(ψ^)exp(Φ^)p-exp(Φ^) 对ψ求偏导,exp(ψ^)泰勒展开,乘进去约掉,最后交换变号,得到(-Rp)^,省去了一个求解雅克比矩阵的步骤。

 

(注意:这里讲的“难算的雅克比矩阵”和之后重投影误差与光度误差的章节的内容中的雅克比矩阵不是一码事,之后章节是为了求偏导,通过这里的两种思路得到的结果,在后面被统称为雅克比矩阵;如果要指难算的雅克比矩阵,是有下标r或者l的才是

 

不过两种思路的区别是,一个是对R本身的李代数Φ求偏导,通过传统的微分步骤,只不过是把指数部分的李代数单独提出来以后多了一项不好计算的雅克比。另一个是对乘以的小量扰动△R的李代数ψ求偏导(我觉得这里的符号表示用△Φ比ψ更合适)。对小量求偏导的目的是:在本章之后构造的误差函数,对自变量是不方便直接求导的,因此对自变量进行小量扰动,然后求出对小量的偏导,令其为0,得到小量,再把自变量加上小量,进行更新,进行下一轮的迭代。(个人觉得这里讲的有些超前,看到后面才能明白前面的意思,另外从公式的符号可以看出,高博在写书的时候,这章和之后的重点部分,他的写作思路是发生了变化的)

 

对于SE3,扰动也是同样的意思,最后得到的结果是,下面都是0,左上角是I,右上角是-(Rp+t)^,记为Tp⊙,即:

 

6

这个是相机坐标系下的坐标点关于扰动小量位姿的偏导数,之后有特别的用途,尤其是在求重投影误差那里。

 


不过这时的^不再是反对称矩阵的意思了,而是一个矩阵,

SLAM14讲学习笔记(一) 李群李代数基础插图(6)

(对应的李代数是 [ρ,Φ]T)


今天学了后面的内容,再返回来补充一下:

 

这个书里大部分求导,都是用的第二种方式,即第二种思路,扰动一个小量,然后对小量求导。这的目的在我的第三个笔记(非线性优化)中有介绍:SLAM14讲学习笔记(三)非线性优化基础。而对小量的位姿求偏导,得到的Tp⊙之后会反复使用,特别是重投影误差求偏导和光度误差求偏导那里,附上链接:SLAM14讲学习笔记(五)视觉里程计(光流法和直接法)和对于雅克比矩阵的理解

看到后面,才能真正理解这里的基础,因此这里的内容一定不能敷衍了事的直接跳过,否则会影响后面的学习。不过,实在看不明白或者记不住的话,我觉得也没有关系,因为这部分的内容之后会反复提及,在不断地学习以后就理解了这章的含义。

 

不过罗德里格斯公式是一定要记住的,之后不会再提了,偏偏它还很重要。它表达了旋转向量与旋转矩阵之间的关系,同时也是李代数与李群的变换关系,可以粗略的这么理解:一个旋转矩阵,就是一个李群;该矩阵对应的旋转向量,就是那个李群对应的李代数。

发表评论

后才能评论