李群与李代数

参考书目 《视觉SLAM十四讲》 高翔 张涛 等著

参考链接: https://zhuanlan.zhihu.com/p/33156814


一、 李群与李代数基础

1. 李群

三维旋转矩阵构成了 特殊正交群 $SO(3)$ ,变换矩阵构成了 特殊欧式群 $SE(3)$
$$
SO(3)={R \in R^{3 \times 3} |RR^T=I,det(R)=1}
$$

$$
SE(3)={ T = \begin{bmatrix} R & t \ 0^T & 1 \end{bmatrix} \in R^{4\times4} | R \in SO(3),t \in R^3}
$$

它们对于加法是不封闭的,换句话说两个变换矩阵相加后得到的矩阵并不是一个变换矩阵。

定义李群就是具有 连续(光滑) 性质的群。

前面举的整数的加法的例子显然不是连续的,因而它不是李群。但SO(3) 和SE(3) 在实数空间上是连续的(机器人在三维空间中显然是连续地运动,而不会进行“瞬移”)。

问题: 为什么要用到李群和李代数?避免一直是数学上的推导。我们用一个比较实际的例子。假设某个时刻我们预测机器人的位姿为 $T$ (待定值), 它观测到了一个惯性坐标系下的点 $p$ 而产生了一个观测数据 $z$ ,它是该点在相机坐标系下的坐标,则可得
$$
z=Tp+w
$$

其中,$w$ 是观测噪声。由于观测噪声的存在, $z$ 无法严格满足式 $z=Tp$ 。因此而产生的误差 $e$ 为
$$
e=z-Tp
$$
若共有N 个观测值,那么就有N 个这样的式子。机器人的位姿估计就转变成寻找一个最优的 $T$ 使得整体的误差最小化:

[公式]

通常,直接求解上式得出最优的 $T$ 是很困难的(或计算量很大)。我们常常先给定一个猜测值(初始值) $T_0$ ,然后不断地对它进行迭代更新。而这个过程需要用到导数(可以想想梯度下降法)。

导数的定义,

[公式]

显然计算导数和进行更新时都要用到加法。但SO(3) 和SE(3) 上对矩阵加法的运算并不封闭。如果要继续采取这个迭代更新的策略势必要再想想办法,使得导数“可行”。而这就可以通过李群及其对应的李代数来实现。

2. 李代数