李群与李代数
0 前言
我学习李群和李代数的主要动机是因为在机器人学中,描述空间坐标系的旋转平移变换时,经常出现诸如 \(\mathrm{SO}(3)\),SE(3),\(\mathfrak{so}(3)\) 等内容。
我们不妨先说明一下 \(\mathrm{SO}(3)\) 和 SE(3) 是什么:
\[\begin{aligned}
\mathrm{SO(3)} &= \{\mathbf{R} \in \mathbb{R}^{3\times3} | \mathbf{R}\mathbf{R}^\top = \mathbf{I}, \mathrm{det}(\mathbf{R}) = 1\}\\
\mathrm{SE(3)} &= \left\{\mathbf{T} = \begin{bmatrix}\mathbf{R} & \mathbf{t}\\ \mathbf{0}^\top & 1\end{bmatrix} \in \mathbb{R}^{4\times4} | \mathbf{R}\in \mathrm{SO(3), \mathbf{t}\in\mathbb{R}^{3}}\right\}
\end{aligned}\]
\(\mathrm{SO}(3)\) 又被称为特殊正交群,SE(3) 又被称为特殊欧式群。
在机器人学中,通常将 \(\mathrm{SO}(3)\) 理解为旋转矩阵群,而 SE(3) 则是齐次变换群。
1 李群
1.1 群(Group)
群指的是一种集合加上一种运算组成的结构。要求这个集合和运算满足以下四个条件
- 封闭性:对于集合内任意两个元素 a, b,运算 (a, b) 的结果也在集合内
- 结合律:对于集合内任意三个元素 a,b,c,运算 ((a, b), c) 和运算 (a, (b, c)) 的结果一致
- 幺元:集合内存在一个元素 e,对于集合内任意元素 a,总有 (e, a) = (a, e) = a 成立
- 逆元:对于集合内任意一个元素 a,总存在一个对应的元素 b,满足 (a, b) = (b, a) = e .
1.2 李群(Lie group)
李群是指具有连续(光滑)性质的群。
比如说整数群 \(\mathbb{Z}\) 这种离散的群没有连续性质,就不是李群。又比如说 SO(3) 特殊正交群和 SE(3) 特殊欧式群,每一个属于 SO(3) 群的矩阵都代表一个刚体的姿态,每一个属于 SE(3) 群的矩阵都代表一个刚体的位姿;我们可以直观想象一个刚体在空间中连续运动,所以这两个群都具有连续形式,都是李群。
(数学的语言有点超出我的认知范围了)
2 李代数(Lie Algebra)
每个李群都有与之对应的李代数,李代数描述了李群的局部性质,是单位元附近的正切空间。
李代数由一个集合 \(\mathbb{V}\),一个数域 \(\mathbb{F}\) 和一个二元运算 \([,]\) 李括号组成。它们需要满足以下几条性质:
- 封闭性:\(\forall \mathbf{X}, \mathbf{Y} \in \mathbb{V}, [\mathbf{X}, \mathbf{Y}] \in \mathbb{V}\)
- 双线性:\(\forall \mathbf{X},\mathbf{Y},\mathbf{Z} \in \mathbb{V}, a,b\in\mathbb{F}\),有
\[[a\mathbf{X} + b\mathbf{Y},\mathbf{Z}] = a[\mathbf{X},\mathbf{Z}] + b[\mathbf{Y} + \mathbf{Z}], [\mathbf{Z}, a\mathbf{X} + b\mathbf{Y}] = a[\mathbf{Z}, \mathbf{X}] + b[\mathbf{Z}, \mathbf{Y}]\]
- 自反性: \(\forall \mathbf{X} \in \mathbb{V}, [\mathbf{X}, \mathbf{X}] = \mathbf{0}\).
- 雅可比等价:\(\forall \mathbf{X}, \mathbf{Y}, \mathbf{Z} \in \mathbb{V}, [\mathbf{X},[\mathbf{Y},\mathbf{Z}]]+[\mathbf{Z},[\mathbf{X},\mathbf{Y}]]+[\mathbf{Y},[\mathbf{Z},\mathbf{X}]] = 0\)
2.1 李代数 so(3)
什么是代数?代数又叫线性代数,本质就是定义了矢量乘法 \(V\times V \rightarrow V\) 的线性空间 \(\{V\}\).
\(\mathrm{SO}(3)\) 对应的李代数是 \(\mathfrak{so}(3)\),该集合中的元素有两种表示方法 \(\phi\) 或者 \(\Phi\),由于两者是一一对应的,所以二者表示的其实是同一个李代数:
\[\mathfrak{so}(3) = \left\{\phi \in \mathbb{R}^3,\Phi = \hat{\phi}\in\mathbb{R}^{3\times3}\right\}\]
李代数的乘法称为李括号。给定一个李代数 \(\mathfrak{g}\),对于 \(\forall A, B \in \mathfrak{g}, \left[A, B\right] = C \in \mathfrak{g}\) 。
对应的李括号为
\[\begin{aligned}
\left[\phi_1, \phi_2\right] &= (\Phi_1\Phi_2 - \Phi_2\Phi_1)^{\vee}, \Phi = \hat{\phi}\in\mathbb{R}^{3\times3}\\
\left[\Phi_1, \Phi_2\right] &= \Phi_1\Phi_2 - \Phi_2\Phi_1
\end{aligned}\]
其中,\(^{\wedge}\) 表示取三维向量的反对称矩阵,\(^{\vee}\) 表示取反对称矩阵对应的三维向量。
\[\begin{aligned}
&\begin{bmatrix}\phi_1 \\ \phi_2\\ \phi_3\end{bmatrix}^{\wedge} = \begin{bmatrix}0 & -\phi_3 & \phi_2\\ \phi_3 & 0 & -\phi_1\\ -\phi_2 & \phi_1 & 0\end{bmatrix}\\
&\begin{bmatrix}0 & -\phi_3 & \phi_2\\ \phi_3 & 0 & -\phi_1\\ -\phi_2 & \phi_1 & 0\end{bmatrix}^{\vee}= \begin{bmatrix}\phi_1 \\ \phi_2\\ \phi_3\end{bmatrix}
\end{aligned}\]
\(\mathrm{SO}(3)\) 对应于旋转矩阵,\(\mathfrak{so}(3)\) 对应于等轴角表示的角速度向量。
3 映射
3.1 指数映射(李代数到李群)
从李代数 \(\mathfrak{so}(3)\) 到李群 \(\mathrm{SO}(3)\) 的映射是如下的指数映射:
\[\begin{aligned}
\mathbf{R} &= \text{exp}\left(\hat{\phi} \right)\\
&= \sum_{n = 0}^{\infty}\frac{1}{n!}\left(\hat{\phi}\right)^{n}
\end{aligned}\]
以下给出计算证明:
此处矩阵的无穷次幂难以计算,我们考虑一些数学技巧。
首先,我们注意到
\[(c_1\phi_1)^{\wedge} \cdot (c_2\phi_2)^{\wedge} = c_1c_2(\hat{\phi_1}\cdot \hat{\phi_2}) \tag{1}\]
\[\begin{aligned}
\hat{\phi}\hat{\phi} &= \begin{bmatrix}-\phi_2^2-\phi_3^2 & \phi_1\phi_2 & \phi_1\phi_3\\ \phi_1\phi_2 & -\phi_1^2-\phi_3^2 &\phi_2\phi_3\\ \phi_1\phi_3 & \phi_2\phi_3 & -\phi_1^2-\phi_2^2\end{bmatrix}\\
&= \phi \phi^{\top} - \begin{bmatrix}\phi_1^2+\phi_2^2+\phi_3^2 & 0 & 0\\ 0 & \phi_1^2+\phi_2^2+\phi_3^2 & 0\\ 0 & 0 & \phi_1^2+\phi_2^2+\phi_3^2\end{bmatrix}
\end{aligned}\tag{2}\]
\[\hat{\phi}\phi\cdot\phi^\top = \begin{bmatrix}0 & -\phi_3 & \phi_2\\
\phi_3 & 0 & -\phi_1\\
-\phi_2 & \phi_1 & 0\end{bmatrix}\begin{bmatrix}\phi_1^2 & \phi_1\phi_2 & \phi_1\phi_3\\
\phi_1\phi_2 & \phi_2^2 & \phi_2\phi_3\\
\phi_1\phi_3 & \phi_2\phi_3 & \phi_3^2\end{bmatrix} = 0\tag{3}\]
因此,我们想到一个思路,那就是把 \(\phi\) 用模长 \(\theta\) 和方向 \(\mathbf{a}\) 来表示,即 \(\phi = \theta \mathbf{a}\) . 这里的 \(\mathbf{a}\) 是个长度为 1 的方向向量,所以 \(\hat{\mathbf{a}} \hat{\mathbf{a}} = \mathbf{a} \mathbf{a}^\top - \mathbf{I}\),\(\hat{\mathbf{a}} \hat{\mathbf{a}} \hat{\mathbf{a}} = -\hat{\mathbf{a}}\) .
于是
\[\begin{aligned}
\sum_{n = 0}^{\infty}\frac{1}{n!}(\hat{\phi})^{n} &= \sum_{n=0}^{\infty}\frac{1}{n!}(\theta\hat{\mathbf{a}} )^{n}\\
&= \mathbf{I} + \theta\hat{\mathbf{a}} + \frac{1}{2}\theta^2\hat{\mathbf{a}} \hat{\mathbf{a}} + \frac{1}{3!}\theta^3\hat{\mathbf{a}} \hat{\mathbf{a}} \hat{\mathbf{a}} + ...\\
&= (\mathbf{a} \mathbf{a}^\top -\hat{\mathbf{a}} \hat{\mathbf{a}} )+\theta\hat{\mathbf{a}} + \frac{1}{2}\theta^2\hat{\mathbf{a}} \hat{\mathbf{a}} -\frac{1}{3!}\theta^3\hat{\mathbf{a}} -\frac{1}{4!}\theta^4\hat{\mathbf{a}} \hat{\mathbf{a}} \\
&= \mathbf{a} \mathbf{a}^\top + \hat{\mathbf{a}} (\theta - \frac{1}{3!}\theta^3 + \frac{1}{5!}\theta^5 + ...) + \hat{\mathbf{a}} \hat{\mathbf{a}} (-1 + \frac{1}{2}\theta^2-\frac{1}{4}\theta^4 + ...)\\
&= \mathbf{a}\mathbf{a}^\top + \hat{\mathbf{a}} \sin\theta + \hat{\mathbf{a}} \hat{\mathbf{a}} (-\cos\theta)\\
&= \mathbf{a} \mathbf{a}^\top + \hat{\mathbf{a}} \sin\theta + (\mathbf{I}-\mathbf{a} \mathbf{a}^\top)\cos\theta\\
&= \mathbf{I}\cos\theta + (1-\cos\theta)\mathbf{a} \mathbf{a}^\top + \hat{\mathbf{a}} \sin\theta
\end{aligned}\]
\[\mathbf{R} = \sum_{n = 0}^{\infty}\frac{1}{n!}(\hat{\phi})^{n} = \mathbf{I}\cos\theta + (1-\cos\theta)\mathbf{a} \mathbf{a}^\top + \hat{\mathbf{a}} \sin\theta \tag{4}\]
怎么理解 (4) 式?
我们需要引入一个罗德里格斯公式(Rodrigue's Formula):
\[\mathbf{R} = \cos\theta \mathbf{I} + (1-\cos\theta)\mathbf{n}\mathbf{n}^\top + \sin\theta \hat{\mathbf{n}}\tag{5}\]
其中,\(\mathbf{R}\) 代表旋转矩阵,\(\mathbf{n}\) 代表转轴,\(\theta\) 代表旋转角度。
我们把李代数 \(\mathfrak{so}(3)\) 中的三维向量理解为一个角速度向量 \(\omega\),而指数映射写成 \(\text{exp}(\omega t)\),则有
\[\text{exp}(\omega t) = \sum_{n=0}^{\infty}\frac{1}{n!}\left(\left\|\omega\right\|t \cdot \hat{\Omega}\right)^{n}\]
这里的 \(\left\|\omega \right\|t\) 就是上文的 \(\theta\),角速度乘以时间等于角度,非常合理。
所以,\(\mathrm{SO}(3)\) 可以理解为三维旋转矩阵的集合,而 \(\mathfrak{so}(3)\) 可以理解为角速度向量的集合。
一般而言,\(\mathfrak{so}(3)\) 中的元素不是三维向量,而是其对应的三维反对称矩阵。在这种情况下,指数映射的公式略有差异。
根据 (2) 式,我们有
\[\hat{\mathbf{a}}\hat{\mathbf{a}} = \mathbf{a}\mathbf{a}^\top - \mathbf{I} \tag{6}\]
把 (6) 式代入到 (4) 式,我们得到
\[\mathbf{R} = e^{\hat{\mathbf{a}}\theta} = \mathbf{I} + \hat{\mathbf{a}}\sin\theta + \hat{\mathbf{a}}^2(1-\cos\theta) \tag{7}\]
注意:当 \(\theta = 0\) 时,\(\hat{\mathbf{a}}\) 可以任意取值,这是指数映射的一个奇异点。
关于指数映射的一些性质
\[\begin{align}
\hat{x}y = x\times y &= -y\times x = -\hat{y}x \tag{8}\\
-\frac{1}{2} \mathrm{tr}\left[\hat{x}\hat{y}\right] &= x^\top y \tag{9}\\
\mathrm{tr}\left[\hat{x}A\right] = \mathrm{tr}\left[A\hat{x}\right] &= \frac{1}{2}\mathrm{tr}\left[\hat{x}\left(A-A^\top\right)\right]=-x^\top\left(A-A^\top\right)^{\vee}\tag{10}\\
\hat{x}A+A^\top \hat{x} &= \left[(\mathrm{tr}\left[A\right]I_{3\times3}-A)x\right]^{\wedge}\tag{11}\\
R\hat{x}R^\top &= (Rx)^\wedge\tag{12}
\end{align}\]
上式中,\(x,y\in \mathbb{R}^{3},A\in \mathbb{R}^{3\times3},R \in \mathbf{SO}(3)\)。我们来证明一下。
首先,(8) 式从几何上看是显然的,就不在代数上做证明了。
(9) 式:
\[\begin{aligned}
-\frac{1}{2} \mathrm{tr}\left[\hat{x}\hat{y}\right] &= -\frac{1}{2}\mathrm{tr}\begin{bmatrix}0 & -x_3 & x_2\\ x_3 & 0 & -x_1\\ -x_2 & x_1 & 0\end{bmatrix}\begin{bmatrix}0 & -y_3 & y_2\\ y_3 & 0 & -y_1\\ -y_2 & y_1 & 0\end{bmatrix}\\
&= -\frac{1}{2}(-x_3y_3-x_2y_2-x_3y_3-x_1y_1-x_2y_2-x_1y_1)\\
&= x_1y_1+x_2y_2+x_3y_3\\
&= x^\top y\\
\end{aligned}\]
(10) 式:第一个等号是矩阵相乘的迹的性质,不在此处进行证明;第二个等号用到反对称矩阵的性质;第三个等号利用 (9) 式结论证明。
\[\begin{aligned}
\frac{1}{2}\mathrm{tr}\left[\hat{x}\left(A-A^\top\right)\right]
&= \frac{1}{2}\mathrm{tr}\left[\hat{x}A\right]-\frac{1}{2}\mathrm{tr}\left[\hat{x}A^\top\right]\\
&= \frac{1}{2}\mathrm{tr}\left[\hat{x}A\right]-\frac{1}{2}\mathrm{tr}\left[\left(\hat{x}A^\top\right)^\top\right]\\
&= \frac{1}{2}\mathrm{tr}\left[\hat{x}A\right]+\frac{1}{2}\mathrm{tr}\left[A\hat{x}\right] \\
&= \mathrm{tr}\left[\hat{x}A\right]\\
\frac{1}{2}\mathrm{tr}\left[\hat{x}\left(A-A^\top\right)\right] &= -\left[-\frac{1}{2}\mathrm{tr}\left[\hat{x}\left(\left(A-A^\top\right)^{\vee}\right)^{\wedge}\right]\right]\\
&= -x^\top\left(A-A^\top\right)^{\vee}
\end{aligned}\]
(11) 式:注意到一个方阵减该方阵的转置,结果是一个反对称矩阵;再经过一些计算即可
\[\begin{aligned}
\hat{\mathbf{x}}A+A^\top \hat{\mathbf{x}} &= \hat{\mathbf{x}}A - (\hat{\mathbf{x}}A)^\top\\
&= \begin{bmatrix}-x_2a_{12}+x_1a_{22}-x_3a_{13}+x_1a_{33}\\
-x_3a_{23}+x_2a_{33}+x_2a_{11}-x_1a_{21}\\
x_3a_{11}-x_1a_{31}+x_3a_{22}-x_2a_{32}\end{bmatrix}^{\wedge}\\
&= \left(\begin{bmatrix}a_{22}+a_{33} & -a_{12} & -a_{13}\\
-a_{21} & a_{11}+a_{33} & -a_{23}\\
-a_{31} & -a_{32} & a_{11}+a_{22}\end{bmatrix}\mathbf{x}\right)^{\wedge}\\
&= \left(\left(\mathrm{tr}\left[A\right]I_{3\times 3} - A\right)\mathbf{x}\right)^{\wedge}
\end{aligned}\]
(11) 式:我们利用以下定理加以证明。\(\exist A,B\in \mathbb{R}^{3\times 3}, \ \forall y \in \mathbb{R}^{3}, Ay=By,\ \mathrm{iff}\ A=B\)。这个定理可以通过构造一个满秩的三维矩阵加以证明。
\[\begin{aligned}R\hat{x}R^\top y
&= R\left(x \times \left(R^\top y\right)\right)\\
&= (Rx) \times \left(RR^\top y\right)\\
&= (Rx) \times y\\
(Rx)^{\wedge}y &= (Rx)\times y
\end{aligned}\]
3.2 对数映射(李群到李代数)
我们同样可以定义从 \(\mathrm{SO}(3)\) 到 \(\mathfrak{so}(3)\) 的映射,这是指数映射的逆运算,被称为对数映射。
\[\phi = \ln(\mathbf{R})^{\vee} = \left(\sum_{n=0}^{\infty} \frac{(-1)^{n}}{n+1}(\mathbf{R} - \mathbf{I})^{n+1} \right)^{\vee}\tag{13} \]
当然我们不会真的用 (13) 式计算 \(\phi\),这是个无穷级数,我们无法求解。我们可以利用 (7) 式对其进行求解。
首先,我们对 (7) 式左右两边求迹,得到
\[\begin{aligned}
\text{tr}(\mathbf{R}) &= \text{tr}(\mathbf{I}) + (1-\cos\theta)\text{tr}\left(\hat{\mathbf{a}}^2\right) + \text{tr}(\hat{\mathbf{a}} )\sin\theta\\
&= 3 + (1-\cos\theta)(-\omega_2^2-\omega_3^2-\omega_1^2-\omega_3^2-\omega_1^2-\omega_2^2)\\
&= 1+2\cos\theta
\end{aligned}\]
所以
\[\theta = \arccos\dfrac{\text{tr}(\mathbf{R})-1}{2} \tag{14}\]
接下来,我们需要求解旋转矩阵对应的的等轴角表示时的转轴,我们给出两种方法。
第一种方法:可以注意到,转轴是旋转过程中的一个不变量,因此有
\[\mathbf{R}\mathbf{a} = \mathbf{a} \tag{15}\]
怎么理解上面这个式子?
\(\mathbf{a}\) 是 \(\mathbf{R}\) 的特征值 1 所对应的特征向量!
第二种方法:仍然利用 (7) 式,对 (7) 式左右两边取转置,我们得到
\[\begin{aligned}
\mathbf{R}^\top &= \mathbf{I} + \hat{\mathbf{a}}^\top \sin\theta + \left(\hat{\mathbf{a}}^\top\right)^2(1-\cos\theta) \\
&= \mathbf{I} - \hat{\mathbf{a}}\sin\theta + \hat{\mathbf{a}}^2(1-\cos\theta)
\end{aligned}\tag{16}\]
用 (7) 式减去 (16) 式,我们得到
\[\begin{aligned}
\mathbf{R} - \mathbf{R}^\top &= 2\hat{\mathbf{a}}\sin\theta\\
\hat{\mathbf{a}} &= \frac{\mathbf{R}-\mathbf{R}^\top}{2\sin\theta}
\end{aligned} \tag{17}\]
综上,\(\Phi = \dfrac{\theta}{2\sin\theta}(\mathbf{R} - \mathbf{R}^\top)\),\(\theta = \arccos\dfrac{\text{tr}(\mathbf{R})-1}{2}\),\(\phi = \check{\Phi}\) 。
\[(\mathbf{R}-\mathbf{R}^\top)^{\vee} = \begin{bmatrix}r_{32}-r_{23} & r_{13}-r_{31} & r_{21}-r_{12}\end{bmatrix}^\top \]
4 伴随表示
我们考虑一般的矩阵李群 \(G\),它对应的李代数是 \(\mathfrak{g}\),我们可以定义一个伴随表示
\[\forall g \in G, \forall X \in \mathfrak{g}, \ \ \ Ad_g(X) = gXg^{-1}\in \mathfrak{g}\]
我们考虑李群 \(\mathrm{SO}(3)\),它的李代数用矩阵形式表示是
\[\mathfrak{so}(3) = \left\{\Phi = \phi^{\wedge}\in\mathbb{R}^{3\times3}\right\}\]