前言
在做SLAM研究的时候,会涉及到对旋转矩阵求导的问题。这时候需要使用矩阵李群的知识,将旋转或者变换等矩阵李群形式,映射到李代数上求解。本文主要涉及两个特殊矩阵李群:特殊正交群(special orthogonal group)SO(3),表示旋转;特殊欧几里得群(special Euclidean group)SE(3),表示位姿。
1 群的定义
群(Group)是一个集合加上一种运算所构成的代数结构。该运算将两个元素a和b组成另外一个元素,记为a·b或者ab。记集合为G,运算为· ,则当满足一下四个性质的时候,称(G, •)为一个群。
(1)封闭性(closure):任意a,b属于G,有a·b仍然属于G;
(2)结合性(associativity):任意a,b,c属于G,有(a·b)·c = a·(b·c);
(3)单位元(幺元)(identity):存在a0属于G,对任意b属于G,均有a0·b = b·a0= b;
(4)逆元(invertibility):任意a属于G,存在a-1属于G,使得a·a-1= a0 。
2 特殊正交群和特殊欧几里得群
特殊正交群:
特殊欧几里得群:
李群:
• 李群是一个微分流形,群上的操作是光滑的。
• 矩阵李群的元素是矩阵,群上的运算是矩阵乘法,元素的逆即矩阵的逆。
• SO(3)和SE(3)都是李群,但是只对乘法封闭,对加法不封闭,不适合做微分、求导运算。
3 李代数
3.1 李代数定义
对于任意一个李群,都存在一个李代数与之对应。李代数是一种位于向量空间的代数结构。李代数包含一个集合V,一个数域F和一个二元运算[ , ]。如果它们满足一下四条性质(封闭性、双线性、自反性、雅克比等价),就称(V, F, [ , ]) 为一个李代数。
(1)封闭性(closure):[X, Y]属于V,
(2)双线性(bilinearity):[aX+bY,Z] = a[X,Z]+b[Y,Z], [Z, aX+bY]= a[Z,X]+b[Z,Y],
(3)自反性(alternating):[X, X] =0,
(4)雅克比等价(Jacobi identity):[X, [Y,Z]] + [Z, [X,Y]] +[Y, [Z,X]] =0
3.2 李代数的引出过程
3.3 旋转和变换的李代数so(3)和se(3)
与SO(3)对应的李代数是so(3):
与SE(3)对应的李代数是se(3):
4 指数映射和对数映射
4.1 指数映射
指数映射是从李代数映射到李群的一种方式。
为了定义矩阵指数运算,需要用到泰勒展开式。
令,关于有如下性质:
关于 进行泰勒展开:
即罗德里格斯公式。这说明so(3)的物理意义就是旋转向量。
对于se(3)和SE(3),也能得到类似的指数映射关系。
4.2 对数映射
同理,给定旋转矩阵(李群元素),也能求出对应的李代数。
实际中可以采用下面的公式来求解。
小结
本文的内容参考了《state estimation for robotics》,以及高博(半闲居士)的SLAM公开课,如有错误,敬请指正。