李群和李代数

今天先介绍李群和李代数的基础,说明白了基础,下一讲就可以开始讲讲位姿估计了。

1. 李群

特殊正交群是有效的旋转矩阵的集合:

[公式]

这里,正交约束 [公式] 给具有9个参数的旋转矩阵引入了6项约束,把自由度降到了3。我们通过选择 [公式] 来获得一个有效旋转。

用于表示姿态的是特殊欧几里得群

[公式]

如此,我们引入群的定义:群(group)是一种集合加上一种运算代数结构。把集合记为 [公式] ,运算记为 [公式] , 群就可以记为 [公式] 。而这个运算必须满足以下条件:

  1. 封闭性: [公式]
  2. 结合律: [公式]
  3. 幺元: [公式]
  4. 逆: [公式]

此外,李群还是一个微分流形,群上的运算是光滑的。 这里先提一句,后面我们也会再进行解释。

2. 李代数

每个矩阵李群都有一个对应的李代数。李代数由数域F上张成的向量空间V和一个二元运算符(李括号)组成。

李代数由如下4个性质:

- 封闭性: [公式] .

- 双线性: [公式]

- 自反性: [公式] .

- 雅可比等价: [公式] .

李代数是李群幺元处的切空间,它完全地刻画了对应李群的局部性质

2.1 李代数so(3)

与SO(3)相关联的李代数so(3)为

- 向量空间:

[公式]

- 域:R

- 李括号:

[公式]

这里,^表示对向量取李代数对操作。

对于so(3)而言, [公式] 取李代数的操作正好是对向量取反对称矩阵 [公式] 的操作。

2.2 李代数se(3)

[公式]

此外,定义运算符 [公式] ,该运算符会在后面介绍SE(3)的伴随时用到:

[公式]

3. 指数和对数映射

矩阵的指数、对数运算为

[公式]

3.1 旋转

我们用旋转向量来表示so(3)的向量空间, [公式]

[公式]

(这中间将求和函数展开,并利用了向量叉乘的一些性质和三角函数的泰勒展开式,推导又臭又长,就不写了。真想推可以看参考文献。不过我估计也没多少人想推一遍...)

反之,有

[公式]

解方程即可得到旋转角 [公式] ,一般限制 [公式] 。而由 [公式] 可以发现,a是C的特征向量,对应的特征值为1,通过解C的特征值和特征向量就可以得到a。

由于cos是一个偶函数,因此 [公式] 的符号并不确定。我们可以看解得的 [公式] 是否产生一个有效的旋转矩阵C,若不是,则将 [公式] 的符号取反。

由上面的计算公式可以发现:指数映射是一个满射。即对每个SO(3) 中的元素都可以找到一个so(3) 的元素与之对应;但存在多个so(3) 元素( [公式] )对应到同一个SO(3)上。

3.2 姿态

SE(3) 上的指数映射的推导原理与SO(3) 类似。

[公式]

其中,

[公式]

这是由于 [公式] 中的 [公式] 并不直接表示向量空间中的平移,还需要通过对应旋转矩阵的左雅可比J来进行映射。

3.3 雅可比

SO(3)的左雅可比为:

[公式] 

展开级数有

[公式]

注意到当 [公式] 时上式具有奇异性,对应的J没有逆矩阵。

在优化中,我们也常常需要 [公式] 及其逆矩阵:

[公式]

3.4 位姿T的直接级数表示

利用等式

[公式]

可以使用级数直接计算T:

[公式]

(这个推导同样又臭又长,就不列出来了...)

4. 伴随

SE(3)元素的伴随可以表示为:

[公式]

Ad(SE(3))同样是一个矩阵李群

同样地,对于李代数se(3),也有对应的伴随。

 [公式] ,对应的伴随矩阵为

[公式]

4.1 指数对数映射

[公式]

具体的计算公式为

[公式]

其中,

[公式]

这样计算比较复杂,建议还是通过SE(3)和so(3)来进行计算。

因此可以有

[公式]

4.2 直接级数表示

利用

[公式]

可以得到伴随 [公式] 的直接级数表示:

[公式]

最后,注意到非常重要的一点就是:李代数so(3), se(3)均附着在一个向量空间上( [公式]),这为后续的非线性优化工作打下了基础。

如果觉得有用,还请点个赞: )

参考文献:《state estimation for robotics》