第4讲 李群和李代数

什么是群?什么是李群?

群是一种集合加上一种运算的代数结构。这种运算必须满足“凤姐咬你”这四条性质。

常见的群有:特殊正交群S0(n),特殊欧式群SE(n),它们都对矩阵乘法构成群。

如果对上一讲的内容有印象的话,会回忆起来:

  1. 三维旋转矩阵构成了特殊正交群SO(3)=\left \{ R\epsilon \mathbb{R}^{3\times 3}|RR^T=1,det\left ( R \right )=1 \right \}
  2. 变换矩阵构成了特殊欧式群SE(3)= \left \{ T= \begin{bmatrix} R &t \\ 0^T&1 \end{bmatrix} \epsilon \mathbb{R}^{4\times 4} | R\epsilon \mathbb SO\left ( 3 \right ),t\epsilon \mathbb{R}^3 \right \}

SO(3)SE(3)对矩阵乘法都是封闭的,矩阵乘法对应着旋转或变换的复合,两个旋转矩阵相乘表示做了两次旋转、两个变换矩阵相乘表示做了两次欧式变换。

那么,什么是李群呢?

李群,是指具有连续(光滑)性质的群。

什么是具有连续性质的群?看一下这个例子:显然整数和整数的加法构成了一个群(\mathbb{Z},+),但是这是一个离散的群,因为中间有很多的数都取不到。

SO(n)SE(n)在实数空间上是连续的,所以它们是李群。

我们也可以直接直观的想象出来,SO(n)SE(n)都是描述刚体在空间中的运动的,而刚体在空间中的运动肯定是连续的,所以它们是李群。

什么是李代数?

每个李群都有对应的李代数。李代数描述了李群的局部性质。

李代数的定义如下:李代数由一个集合V,一个数域F和一个二元 [,] 运算组成,如果它们满足以下性质,则成(V,F,[,])为一个李代数,记作g

  1. 封闭性:\forall X,Y\epsilon V,[X,Y]\epsilon V
  2. 双线性:\dpi{100} \small \forall X,Y,Z\epsilon V,[aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]
  3. 自反性:\small \forall X\epsilon V,[X,X]=0
  4. 雅可比等价:\small \forall X,Y,Z\epsilon V,[X,[Y,Z]]=[Z,[X,Y]]=[Y,[Z,X]]=0

其中李代数中的二元运算称为李括号。

李群和李代数的关系

考虑任意一个旋转矩阵\small R,它满足:\small RR^{T}=I

因为\small R表达的是相机的旋转,它会随时间连续的变化,即为时间的函数:\small R(t)

但是\small R(t)仍然是旋转矩阵,则有:\small R(t)R(t)^{T}=I

等式的两边同时对时间\small t进行求导,得到:\small {\color{Red} \dot{R(t)}R(t)^{T}+R(t)\dot{R(t)^{T}}=0}

整理得到:\small \dot{R(t)}R(t)^{T}=-[\dot{R(t)}R(t)^{T}]^{T}

由反对称的定义可知:\small \dot{R(t)}R(t)^{T}是一个反对称矩阵。


先回忆一下之前的知识:

       在介绍向量的叉积,引入了\small \Lambda符号,将一个向量映射成一个反对称矩阵。

       同理,对于任意一个反对称矩阵,我们也可以找到一个向量,与之对应,我们把这个运算用\vee表示。

用数学公式就可以表达为:

\vec{a}^{\Lambda }=A=\begin{bmatrix} 0 & -a_{3} & a_{2} \\ a_{3} & 0 & -a_{1} \\ -a_{2} & a_{1} &0 \end{bmatrix},

A^{\vee }=\vec{a}


于是,由于\dot{R(t)}R(t)^{T}是一个反对称矩阵,于是可以找到一个三维向量\phi (t)\epsilon \mathbb{R}^{3}与之对应,即:\dot{R(t)}R(t)^{T}=\phi (t)^{\Lambda }

等式两边同时右乘R(t),由于R(t)正交,于是有:\dot{R(t)}=\phi (t)^{\Lambda }R(t)

可以看到,每对旋转矩阵{\color{Red} R(t)}求一次导数,就相当于对它左乘一个{\color{Red} \phi(t)^{\Lambda }}

为方便讨论,我们设t_{0}=0,并设此时对应的旋转矩阵为R(t)=I

现在,我们将R(t)t=0处进行泰勒展开,得到:

R(t)\approx R(t_{0})+\dot{R(t_{0})}(t-t_{0})=I+\phi (t_{0})R(t_0)(t)=I+\phi (t_{0})(t)

可以看到,{\color{Red} \phi}反映了{\color{Red} R}的导数性质,所以我们称它为SO(3)原点附近的正切空间上。

(下面是书上的推导公式,其实我个人认为这样的推导不是很合理,也有可能是我没有完全理解)

同时在t_{0}附近,设\phi保持为常数\phi (t_0)=\phi _0,于是根据\dot{R(t)}=\phi (t)^{\Lambda }R(t)得到:

R(t)=\phi (t_0)^{\Lambda }R(t)=\phi _0^{\Lambda }R(t)

就是这一步不是很理解,因为\phi仅仅是在t_{0}的附近保持不变,而不是在整个t的范围内保持不变,所以这里只将t=t_0代入\phi中,我感觉上面的等式是不成立的。如果有人理解了这一步的话,希望能够给我讲解一下,万分感谢!

接着讲,上面是一个关于R的微分方程,而且知道了R的初始值为R(0)=I,解微分方程可以得到:

R(t)=exp(\phi _{0}^{\Lambda }t)

(不会解的可以回去看一下高数的一阶线性微分方程的解法)。

总结:

我们看到,旋转矩阵R与另一个反对称矩阵\phi _0通过指数关系发生了联系,也就是说,当我们知道某个时刻的R时,存在一个向量\phi,它们满足这个矩阵指数关系。有下面两个问题要提现说明一下:

(1)与R对应的\phi有什么含义呢?后面可以看到,\phi就是对应到SO(3)上的李代数。

(2)矩阵指数exp(\phi ^{\Lambda })如何计算?这也就是后面要学习的李群和李代数之间的指数/对数映射。

这一节的知识很不好理解,迷迷糊糊的。所以就先到这里了。下一篇开始学习SO(3),SE(3)对应的李代数。 

你可能感兴趣的:(视觉SLAM)