李群和李代数
李群和李代数
问题的引入
当我们估计出相机姿态了以后,估计的结果和实际的相机姿态肯定会有一些不一致性,因而我们需要对估计出来的结果进行优化。优化方法一般都采用迭代优化的方法,每次迭代都更新一个位姿的增量,使得目标函数最小。这个就是通过误差函数对或者求微分得到的,也就是说我们需要对变换矩阵以及旋转矩阵求导。
但是,旋转矩阵并没有良好定义的加法,即和是都是旋转矩阵,但是并不符合旋转矩阵的定义:旋转矩阵应该满足,且,即行列式的值为1的正交矩阵,因此上边的结论是显而易见的。
所以,在实际操作中,我们无法通过如下的微调满足我们对相机观测模型的优化:
因而也会影响到观测模型(关于旋转矩阵的函数)对的求导,因为通常来说我们的导数定义为:
没有良好定义的加法——没有传统意义上的导数定义。因此,李群和李代数的作用就是间接对进行求导。
预备知识
矩阵指数
首先要引入矩阵指数的概念(Matrix Exponential)。矩阵指数可以由线性微分方程的解的形式导出,比如有一阶线性微分方程:
其中,,,并且初始分布为,那么解为:
其中指数函数可以展开为无穷级数:
同理,如果我们对三维向量由一阶线性微分方程:
其中,,且初始条件为,那么解为:
其中矩阵指数函数可以展开为无穷级数的形式:
矩阵指数与矩阵旋转的关系

如上图,三维向量绕着单位旋转轴 (,)旋转角度,得到三维向量 。该旋转运动亦可以视作是三维向量以的角速度绕着单位旋转轴从时间 运动到时间 得到三维向量。
如果用来表示旋转路径上向量端点处的位置,用表示该点的瞬时速度值,则有:
而向量叉乘可以写为左端向量对应的反对称矩阵与右端向量的乘积形式:
其中,定义为反对称矩阵算子,假如,那么有:
那么上式就有如下解:
因为角速度为,所以这里角度和时间是可以互换的:
由于反对称矩阵有满足,将矩阵指数函数展开有:
因此,三维旋转矩阵就可以用矩阵指数的形式来表示。
李群和李代数
群
群是一种集合加上一种代数运算。这个集合和运算应该满足“封结幺逆”四个性质,把集合记为 ,运算记为, 群就可以记为 。
- 封闭性:
- 结合律:
- 幺元:
- 逆元:
可以验证,三维旋转矩阵对矩阵乘法构成了特殊正交群——直观意义上接连两次旋转动作认为旋转。
变换矩阵构成了特殊欧式群,它也对乘法封闭。
但是二者对加法都不封闭,即两个变换矩阵相加后并不是旋转矩阵。
李群
李群(Lie group)是具有群结构的光滑微分流形,其群作用与微分结构相容,从抽象上来说,李群就是具有光滑或连续性质的群。对应到我们的问题上,由于三维机器人在空间中移动必然是连续地运动,不可能发生“瞬移”的情形,因而和都是李群。
下面由旋转矩阵引出李代数。因为R是随时间连续变化的——相机可看成是连续运动,我们将相机姿态看作是时间的函数,那么自然就有成立。上式的左右两侧同时对t求导,我们可得
整理后可得
如果我们把等式左边看成一个整体,那么我们会发现上式左边是一个反对陈矩阵。
对于任意一个反对称矩阵,我们都由一个向量做反对称变换得到,比如:
如果将上式左边记为,我们对这个式子两边右乘并注意到的正交矩阵性质,就可以得到:
就好像对求导后其实是左乘了一个,而上边这个等式就类似一个一阶微分方程,反应了一节导数的性质,它位于正切空间上(tangent space)。我们认为初始值,那么就可以解得:
由于这个式子只在附近有效。由此可知,对任意时刻,旋转矩阵和一个向量对应,二者满足矩阵指数关系,这个就是上的李代数。因而,为了求,我们只需要求出即可,这个关系即为指数映射。现在的问题是是如何定义的,指数映射又如何求出呢?
李代数
每个李群都有与之对应的李代数,李代数描述了李群的局部性质。在这个局部正切空间里,一些我们可以找到一些比较好的性质,比如良好定义的加法,从而我们有了良好定义的导数——将李群的导数转化为李代数上的导数,求出来后再转化回去,这就是我们处理李群导数相关内容的基本思路,同时也是研究的重心。
李代数由一个集合, 一个数域和一个二元运算 组成。如果它们满足以下几条性质,则称 为一个李代数,记作,其中二元运算成为离括号,表达了两个元素的差异。
- 封闭性:
- 双线性: , 有
- 自反性:
- 雅可比等价:
举例三位向量上定义的叉乘就是一个离括号,其中就构成了李代数。
李代数
之前提到的对应的向量就是一种李代数,他定义在的向量上。它的反对称矩阵记作:,那么SO(3)中的向量对应的李括号为:
经过验证可以得到上边的式子等价于两向量作外积。
李代数
与不同的是,定义在空间中。
其中每个元素都称为,它是一个六维向量:前三维为平移,记作,后三位即为三维旋转向量,实质上就是中的元素。另外在 中, 符号的含义被拓展了:这里它将一个六维向量转换为四维矩阵,但这里不再表示反对称矩阵,其实这里即为变换矩阵的转置。同样,李代数的李括号被定义为:
上式经验证后发现,李括号将两个变换矩阵变成了了一个无旋的变换矩阵:
即旋转部分被抹去,只剩下平移部分,而平移部分是由原来两个元素中的旋转和平移部分组合得到的。
指数映射和对数映射
李群到李代数之间是一个指数映射(反之是对数映射),通过借助这个指数映射我们可以将大量在李群上不好解决的问题转嫁到李代数上解决,之后再映射回去间接得到李群上的答案。
上的指数映射
我们利用关系李群和李代数之间的关系:
可知求出起初指数映射,就能得到李群上的导数。求指数映射我们需要用到泰勒展开式。任意矩阵的指数映射都可以写成一个泰勒展开式,这个展开式只有在收敛的情况下才有解,结果仍然是一个矩阵。所以对于中的元素,其指数映射可以写成
我们定义,其中和分别是的模长和单位向量。我们可以验证:
以上两个式子提供了我们对泰勒展开式中高次项化简的方法。 那么我们对上边泰勒展开式化简可以得到:
这和之前的罗德里格斯公式有着相同的形式,标明实际上就是由旋转向量组成的空间,而指数映射其实就是罗德里格斯公式。那么与之对应的对数映射,给定旋转矩阵,我们就可以求李代数,将映射到上:
但是实际上没必要这样求,因为旋转向量已经介绍了矩阵到向量的转换关系:
这里需要注意的是,指数映射是一个满射,即每个中的元素都可以找到一个里的元素与之对应;但是泛指不成立,因为多旋转一圈的旋转向量对应的李代数是相同的。但是如果把旋转角固定在之间,那么李群和李代数的元素就是一一对应的。
上的指数映射
下面是推导结果:
其中的左上角是SO(3)的元素,即旋转部分。矩阵则为:
这个公式与落地里格斯公式类似,中的平一部分经过指数变换后,发生了一次以为系数的线性变换。
相反的,到也有相应的对数映射,但是我们一般不用,我们一般利用左上角的旋转矩阵计算出旋转向量,再用右上角的平移向量得到。
李代数求导与扰动模型
李代数与李群的计算对应关系
我们由于李群没有加法讨论出来了李代数,我们想要利用李代数的加法定义李群的导数,再利用指数映射和对数映射完成变换关系。但是还有一个基本问题,就是在李代数上做加法,是否就等价于在李群上做乘法呢?
上式在标量的情况下显然是成立的,但是现在指数上式矩阵,结果很遗憾是不成立的。我们由BCH(Baker-Campbell-Hausdorff)公式给出:
其中为李括号,可以看到,两个矩阵指数的乘积结果的指数项,是两个矩阵之和再加上一些由李括号组成的余项。
我们在求导数的时候,其中一项肯定是小量,可以看成相机连续两帧之间的位姿变化,利用这个小量,我们就可以对上边的式子进行优化:
上边的优化结果分别对应着和为小量时的近似状态,我们分别称为左乘模型和右乘模型。之所以要区分做成还是右乘模型,是因为其中的和是不一样的。对于左乘BCH近似模型,雅可比矩阵就是:
它的逆为:
而对于右乘模型,右乘雅可比矩阵就是将左乘雅可比矩阵的自变量取负号。
现在来小结一下,假如有一个旋转矩阵,对应的李代数为,现在对它有一个微小的扰动,记作,对应的李代数为。那么在李群上,新的旋转矩阵即为,而在李代数上,新的李代数为,即:
反之,如果我们在李代数上做加法,那么可以近似为李群上带左/右雅可比矩阵的乘法:
至此,我们可以讨论一下怎么求没有良好定义加法的李群上的导数:
- 利用李代数表示位子,然后根据李代数的加法对李代数进行求导。(导数模型)
- 对李群来左乘或右乘微小扰动,并对这个扰动的李代数求导。(扰动模型)
求导模型
假设空间点进行了一次旋转,得到了新的点,要计算旋转后的点相对于旋转的导数,可以不严谨得写为:
设对应的李代数为,就可以写成:
按照导数的定义并利用一阶泰勒展开以及BCH公式,就可以得到:
这个公式时直接对旋转矩阵进行求导,最后结果含有左雅可比矩阵。当然,我们自然希望避免计算雅可比矩阵,所以我们一般选用下边的扰动模型。
扰动模型
假设某空间点 经过了一次变换,对应的李代数为,得到。给 左乘一个微小扰动,扰动项的李代数为。则有:
最后结果被定义为了运算符号,把一个齐次坐标下的空间点变换成一个4*6 的矩阵。