最近系统的再学习了一下SLAM,主要的参考资料是《SLAM十四讲》,那么本博文对李群与李代数做一些学习的记录。本博文仅仅是本人的学习笔记,部分资料来源于网络。不作任何商业用途
首先给出高翔对于李群李代数的讲解视频
【高翔】视觉SLAM十四讲
目录
什么是李群与李代数?为啥需要它们?
李群李代数是为了解决SLAM中非常实际的问题的,如位姿估计等问题。对于SLAM问题,实际上就是不断的估计相机的位姿和建立地图。其中,相机位姿也就是变换矩阵T。
假设某个时刻相机的位姿是T,它观察到一个在世界坐标系中的一个空间点p,并在相机上产生了一个观测数据z,那么有:
z = T*p + noise
noise是观测噪声。那么观测误差就是
e = z - T*p
假设我们总共有N个这样的三维点p和观测值z,那么我们的目标就是寻找一个最佳的位姿T,使得整体误差最小化,也就是
求解此问题,就是求目标函数J对于变换矩阵T的导数。而对于变换矩阵T,其所在的SE(3)空间,对加法计算并不封闭,也就是说任意两个变换矩阵相加后并不是一个变换矩阵,这主要是因为旋转矩阵对加法是不封闭造成的,它是有约束的。什么意思呢?我们知道旋转矩阵R本身有一定的约束:
两个旋转矩阵R1+R2的结果就不能满足上述约束了,但是R1*R2满足。故此,旋转矩阵对加法不满足封闭性:
而李代数就是解决这个问题的。把大写SE(3)空间的T映射为一种叫做李代数的东西,映射后的李代数叫做se(3)。它是由向量组成的,而向量是对加法封闭的。这样我们就可以通过对李代数求导来间接的对变换矩阵求导了。
在进一步介绍李代数前,先说说什么是群。群(group)是一种集合加上一种运算的代数结构(or对于这种只有一个运算的集合,我们把它叫做群。)比如旋转矩阵和乘法就构成了旋转矩阵群,变换矩阵和乘法也构成了变换矩阵群。但旋转矩阵和加法不能构成群,因为他们不满足封闭性。
群的性质如下:(对于旋转矩阵其乘法满足封闭性,还满足结合律:R1*R2=R2*R1,还有幺元是单位矩阵I,也有逆矩阵满足R乘以R的逆等于幺元(单位阵)。)
而李群是指具有连续(光滑)性质的群。其定义是指连续光滑的群,比如旋转矩阵群SO(3),拿个杯子就可以在空间中以某个支点连续的旋转它,所以SO(3)它就是李群。如果一边旋转一边移动它,也是连续的或者说光滑的运动,所以变换矩阵群SE(3)也是李群。
但是SO(3)与SE(3)只有定义良好的乘法,没用加法,故此很难进行取极限、求导等操作。
而李代数对应李群的正切空间,它描述了李群局部的导数
重要结论1:旋转矩阵的微分是一个反对称矩阵左乘它本身
旋转矩阵的微分是一个反对称(也叫斜对称,skew symmetric matrix) 矩阵左乘它本身,对于某个时刻的R(t)(李群空间),存在一个三维向量φ=(φ1,φ2,φ3)(李代数空间),用来描述R在t时刻的局部的导数。
关于反对称矩阵的定义:反对称矩阵其实是将三维向量和三维矩阵建立对应关系。它是这样定义的:如果一个3 X 3的矩阵A满足如下式子,那么A就是反对称矩阵。
根据它的性质,上式等式左边矩阵A转置后,对角线元素aii还在对角线上,而对于等式右边,所有元素取负号,那么对于对角线元素aii来说,足aii=-aii,所以aii=0。也就是说反对称矩阵对角线元素都为0。那么非对角线元素还有6个,它们能不能精简呢?等式左边第2行第1列位置的元素,是矩阵A元素a12转置后到了位置a21,等式右边原来a21变成了 -a21,所以其实对于矩阵A,元素a12 = -a21,所以用一个元素及其负数就可以表示矩阵中这两个元素,同理,其他4个元素也是这样。所以,其实矩阵A中非对角线元素只用3个元素就可以表示。也就是说反对称矩阵A只有3个自由度。这样我们就可以把一个三维向量和一个三维矩阵建立对应关系。举个例子,假设有一个反对称矩阵A的定义如下:
我们定义对应的一个三维向量:
然后我们用一个上三角符号来表示这个向量α和三维矩阵A的对应关系
通过这个符号,我们把向量和矩阵建立了对应关系。也即有:
重要结论2:指数映射(可以理解为通过此公式求解李群对应的李代数)
如下式所示。李代数so(3)是三维向量φ的集合,每个向量φi的反对称矩阵都可以表达李群(SO(3))上旋转矩阵R的导数,而R和φ是一个指数映射关系。也就是说,李群空间的任意一个旋转矩阵R都可以用李代数空间的一个向量的反对称矩阵指数来近似。
简单来说就是,用旋转矩阵表示的话就是李群空间,也是我们熟悉的表示方法。而用向量的反对称矩阵表示的话就是李代数空间,这两个空间建立了联系。
R在原点附近的一阶泰勒展开,我们看到这个向量φ=(φ1,φ2,φ3)反应了R的导数性质,故称它在SO(3)上的原点 φ0 附近的正切空间上。这个φ正是李群SO(3)对应的李代数so(3)。指数e的泰勒展开如下:
通过运用泰勒展开,以及反对称矩阵的性质,我们可以得到如下结果:
其中,三维向量 φ = θa,a是一个长度为1的方向向量。这公式就是罗德里格斯公式(德里格斯公式是表示从旋转向量到旋转矩阵的转换过程)so(3)的李代数空间就是由旋转向量组成的的空间,其物体意义就是旋转向量。而结论2中的指数映射关系就是罗德里格斯公式,他们在数学上本质是一样。这样我们可以说旋转矩阵的导数可以由其对应的旋转向量指定,指导如何在旋转矩阵中进行微积分运算。
对于李群而言,SE(3)或者SO(3)都是有约束的,其优化是有约束的优化。而李代数(向量)则是无约束的,所以李群与李代数的转换就是把位姿优化问题从约束转到无约束下,进而使得优化问题更加的简单~~~
而李代数也有自己的定义如下:
so(3)与se(3)的定义如下:
李群与李代数的一些性质汇总
李群李代数之间的指数对数映射关系
so(3) 实际上就是由所谓的旋转向量组成的空间,而指数映射即罗德里格斯公式。通过它们,我们把so(3) 中任意一个向量对应到了一个位于SO(3) 中的旋转矩阵。反之,如果定义对数映射,我们也能把SO(3) 中的元素对应到so(3) 中:
根据上面的罗德里格斯公式,我们可以知道,所谓的so(3)其物理意义实际上就是旋转向量。是由旋转向量构成的空间。
对应的SE(3)的转换可参考SLAM十四讲上的推导。
李代数求导与扰动模型
李代数求导分两种:一种是用李代数表示位姿,然后根据李代数加法来对李代数求导。结果中有复杂的雅克比公式,不是很方便。一般都用第二种,就是对李群进行左乘或者右乘微小的扰动,然后对该扰动求导。
参考资料
https://mp.weixin.qq.com/s/7gmSyF13UUMDOnxpHVx9lg
《视觉SLAM十四讲》