一天开两篇,我真是个勤劳的小公举,给自己撒花花
这一章也是在做知识储备,群是把第三章的矩阵升华了一下,引入李代数是因为群不能求导。第一遍看视频看的半懂不懂,重新过一遍书之后就清晰了。
1. 李群
群(Group)是一种集合加上一种运算的代数结构。
翻译:
“代数结构”:这个词表达了群的抽象,就是摸不着看不见,还有各种形式,就像抽象函数f(x),可以是二次函数、指数函数,只要符合规定就行。
“一种集合加上一种运算”:这里面给出了两个限制条件,集合和运算,就是群这个东西必须建立在集合上,元素之间必须可以运算。至于哪个集合哪种运算,don't care,只要符合规定就行。
把集合记作A,运算记作
根据这个条件,可以发现旋转矩阵,变换矩阵都可以称为群。
- 旋转矩阵——特殊正交群(SO(3)),
- 变换矩阵——特殊欧式群(SE(3)),如公式(4.2)所示。
李群是指具有连续(光滑)性质的群。
SO(3)和SE(3)都是李群,并且在这两个群里面,只定义了乘法,没定义加法,所以不能求导。
2. 李代数
每个李群都有与之对应的李代数。李代数由一个集合V,一个数域F和一个二元运算[,]组成。
翻译:
“每个李群都有与之对应的李代数”:李群和李代数之间有座桥,可以相互转化,但并没说是一对一的关系。
“二元运算[,]”:也称为李括号,李代数的运算在形式上已经被规定好了,但是具体的李括号怎么算需要按照条件定义。
李代数要满足的条件:
三维向量中的叉积是一种李括号,所以
证明:
封闭性:两个3维向量的叉积还是一个3维向量
双线性:
自反性:
雅可比等价:下面三个式子相加可以得到0
2.1 李群SO(3)的李代数so(3)
SO(3)对应的李代数是定义在
给出李括号
然后就可以说
2.2 李群SE(3)的李代数se(3)
变换矩阵要表示平移和旋转,在李代数中每个元素用
3. 李群和李代数的关系
3.1 指数关系
李群R和对应的李代数
不严肃的推导:
对于旋转矩阵R,有
对于
假设在
这里只是简单说明了李群和李代数之间存在指数关系,但没有指出具体的计算方法。
3.2 SO(3)上的指数映射
任意矩阵的指数映射可以写成一个泰勒展开,但是只有在收敛的情况下才会有结果,其结果仍是一个矩阵。
SO(3)和so(3)的指数映射为
其中,用模长
最终的展开式与旋转向量和旋转矩阵之间的罗德里格斯公式相同,也就是说通过展开后的公式可以把so(3)中的向量对应到SO(3)中的矩阵上。
通过展开后的公式可以看出,角度
类似地,可以得到SE(3)和se(3)之间的映射关系。
4. 李群和李代数的求导
引入李代数是为了求导,那么如何借用李代数进行求导?直观上有两种想法:1)利用李代数上的加法定义李群上的导数,2)借助指数和对数映射完成。两种想法给出了两种模型,一种是求导模型,一种是扰动模型。
首先要讨论李群乘法和李代数加法之间的关系,BCH公式证明,二者不能直接转换,两个矩阵的指数之积会产生一系列由李括号组成的余向。当矩阵为一个小量,并且不考虑二次以上的余项时,可以近似的认为
其中,
在求导的时候,对于旋转矩阵的李代数
对于SE(3)有,
4.1 求导模型
求导模型做的事情是:将旋转矩阵对应的李代数加一个小量,求相对于小量的变化率。
对于SO(3),要计算的是旋转之后的坐标相对于旋转的导数,记做
4.2 扰动模型
扰动模型做的事情是:左乘或者右乘一个小量,求相对于小量的李代数的变化率。
左乘扰动的推导如下:
对于SE(3),根据扰动模型求导的推导如下:
以上,现在就可以对旋转矩阵进行求导了。
参考文献
《视觉SLAM十四讲从理论到实践》 高翔,张涛