2020年4月

如果您看到这篇文章,表示您的 blog 已经安装成功.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.

#include <stdio.h>
int main(void)
{
    return 0;
}

inline latex test $f(x)=\int_{-\infty}^\infty\widehat f\xi\,e^{2\pi i\xi x}\,d\xi$

latex test:

$$f(x)=\int_{-\infty}^\infty\widehat f\xi\,e^{2\pi i\xi x}\,d\xi$$

Test Article from lovecatc.com

李群与李代数

我们说,之前介绍的三维旋转矩阵变换矩阵分别构成了特殊正交群$SO(3)$和特殊欧氏群$SE(3)$

可以用下式表示

$$ SO(3)=\{R{\in}R^{3\times3}|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 \} $$

事实上,它们对加法是不封闭的,而只对乘法封闭

下面我们定义群(Group)。它是一种集合加上一种运算的代数结构。例如,我们记集合为$A$,运算为$\cdot$,那么群可以记作$G=(A,\cdot)$。

群要求集合和运算满足以下条件:

  1. 封闭性

    $$\forall a,b\in A,a \cdot b \in A$$

  2. 结合律

    $$\forall a, b, c \in A, (a \cdot b) \cdot c = a \cdot (b \cdot c)$$

  3. 幺元

    $$\exists a_0 \in A, s.t. \forall a\ \in A, a_0 \cdot a = a \cdot a_0 = a$$

  4. $$\forall a \in A, \exists a^{-1} \in A, s.t. a \cdot a^{-1} = a_0$$

容易证明,旋转矩阵和变换矩阵及它们各自的矩阵乘法分别构成群。矩阵中常见的群包括

  • 一般线性群$GL(n)$,由$n \times n$的可逆矩阵和矩阵乘法构成
  • 特殊正交群$SO(n)$
  • 特殊欧氏群$SE(n)$

其中,李群是指那些具有连续(光滑)性质的群。这一点可以直观地想象:一个刚体在三维空间中的旋转或变换当然都是连续的。为了研究李群,下面我们需要引出李代数


对于任意旋转矩阵$R$,有

$$ RR^T=I $$

如果现在令$R$为某个相机的旋转,它会随时间变化,即$R(t)$,那么它依然满足

$$ R(t)R(t)^T=I $$

等式两侧求导,得到

$$ \dot{R(t)}R(t)^T+R(t)\dot{R(t)^T}=0\\ \dot{R(t)}R(t)^T=-(\dot{R(t)}R(t)^T)^T $$

于是可以看出,$\dot{R(t)}R(t)^T$为一反对称矩阵。这里,我们定义向量对反对称矩阵以及它的反演

$$ \hat{a}=A= \begin{bmatrix} 0&-a_3&a_2\\ a_3&0&-a_1\\ -a_2&a_1&0 \end{bmatrix} \\ \\ \widehat{A}=a $$

由于$\dot{R(t)}R(t)^T$为一反对称矩阵,我们可以找到$\phi(t) \in R^3$,使得

$$ \dot{R(t)}R(t)^T=\hat{\phi(t)}\\ \dot{R(t)}R(t)^TR(t)=\dot{R(t)}=\hat{\phi(t)}R(t) $$

可以看出,对$R(t)$求导,就相当于左乘一个反对称矩阵。我们假设$t_0=0$时,旋转矩阵为$R(t_0)=I$,对$R(t)$在$t=0$附近进行泰勒展开:

$$ R(t)=R(t_0)+\dot{R(t_0)}(t-t_0)=I+\hat{\phi(t_0)}t $$

可以看到,$\phi(t)$事实上反映了$R$的导数性质,故称其在$SO(3)$原点附近的正切空间上。同时我们再次假设,在$t=t_0$附近,$\phi(t)$的变化很小,以至于可以认为其保持为一常数${\phi}(t_0)=\phi_0$,则根据上式,我们得到一微分方程

$$ \dot{R(t)}=\hat{\phi_0}R(t)\\ R(t)=exp(\hat\phi_0) $$

我们说,只要给定一个时刻的$R$,就能求得一个$\phi$,它描述了$R$在这一局部的导数关系。$\phi$就是对应到$SO(3)$上的李代数$so(3)$。

同时我们也产生了两个问题:如何计算$exp(\phi)$?给定$R$能否反演得到$\phi$?


我们首先给出李代数的一般定义。李代数由集合$V$,数域$F$和一个二元运算$[,]$组成。满足下列性质的组合$g=(V,F,[,])$称为一个李代数

  1. 封闭性

    $$\forall X, Y \in V, [X, Y] \in V$$

  2. 双线性

    $$\forall X,Y,Z \in V,a, b \in F, s.t. [aX+bY, Z] = a[X,Z]+b[Y,Z], [Z, aX+bY]=a[Z, X]+b[Z, Y]$$

  3. 自反性

    $$\forall X \in V, [X, X] = 0$$

  4. 雅可比等价

    $$\forall X, Y, Z \in V, [X,[Y, Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0$$

其中,二元运算也称李括号

作为一个例子,三维向量上定义的叉乘为一种李括号,换言之,$g=(R^3, R, \times)$构成一个李代数。


之前我们提到过的$\phi$就是一种李代数。它的李括号定义为

$$ [\phi_1, \phi_2]=\widehat{(\Phi_1\Phi_2-\Phi_2\Phi_1)} $$

注意,由于$\phi$与它的反对称矩阵$\Phi$是一一对应的关系,所以对于$so(3)$的元素,我们可以不加区别的使用向量$\phi$或其反对称矩阵$\Phi$。


对于$SE(3)$,其也有对应的李代数$se(3)$。它位于$R^6$空间

$$ se(3)= \{ {\xi}= [\rho, \phi]^T,\rho \in R^3, \phi \in so(3), \hat{\xi}= \begin{bmatrix} \hat{\phi}&\rho\\ 0^T&0 \end{bmatrix} \in R^{4 \times 4} \} $$

每个$se(3)$对象都是一个六维向量。前三维为平移,后三维为旋转。$se(3)$的李括号定义如下

$$ [\xi_1,\xi_2]=(\hat{\xi_1}\hat{\xi_2}-\hat{\xi_2}\hat{{\xi_1}})\widehat{} $$


下面我们来考虑如何计算$exp(\hat{\phi})$的问题。这种形式在李群和李代数中被称为指数映射(Exponential Map)。我们可以将任意矩阵的指数映射写作泰勒展开

$$ exp(A)=\sum_{n=0}^{\infty}\frac{(A)^n}{n!} $$

当然,我们不想计算诸如$(A)^n$这种式子。

这里我们假设$\phi$的模长为$\theta$,方向为$\vec{a}$,即$\phi=\theta\vec{a}$,同时使用以下两条性质

$$ a\hat{}a\hat{}=aa^T-I\\ a\hat{}a\hat{}a\hat{}=-a\hat{} $$

最终可以推导出

$$ exp({\theta}a\hat{})=cos{\theta}I+(1-cos{\theta})aa^T+sin{\theta}a\hat{} $$

这个式子表明,$so(3)$事实上就是由旋转向量组成的空间。

接下来我们不加证明地给出$se(3)$的指数映射

$$ exp(\xi \hat{})= \begin{bmatrix} R&J\rho\\ 0^T&1 \end{bmatrix}\\ J=\frac{sin \theta}{\theta}I + (1-\frac{sin \theta}{\theta})aa^T + \frac{1-cos\theta}{\theta}a\hat{} $$


接下来我们考虑,$SO(3)$中完成两个矩阵的乘法时,相应的$so(3)$发生了何种变化?或者更进一步,当我们在$so(3)$上做李代数的加法时,是否有

$$ exp((\phi_1+\phi_2)\hat{})=exp(\phi_1\hat{})+exp(\phi_2)\hat{}\\ s.t.\\ ln(exp(A)exp(B))=A+B $$

事实上上式并不严格成立。BCH公式指出,两个矩阵指数之积会产生一些由李括号组成的余项。

我们需要的是BCH近似。对于某个旋转$R$,假定其对应李代数$\phi$。对其左乘一微小旋转,记作$\Delta R$,对应李代数$\Delta \phi$。那么,在李群和李代数上,我们分别得到

$$ \Delta R \cdot R\\ J^{-1}(\phi)\Delta \phi + \phi\\ J^{-1}=\frac{\theta}{2}cot\frac{\theta}{2}I+(1-\frac{\theta}{2}cot\frac{\theta}{2})aa^T-\frac{\theta}{2}a\hat{} $$


在实际问题中,我们会遇到求解带有李代数的函数的导数的问题。例如,假设某时刻镜头位姿$T$,观测世界坐标位置$p$,观测数据$z$,存在$N$组这样的观测,那么实际位置和观测之间必然存在一个误差$e=z-Tp$,则我们需要寻找一个最优的$T$,使得整体误差最小化

$$ min_{T}J(T)=\sum_{i=1}^{N}|z_i-Tp_i|^2 $$

这里我们就需要计算$J$关于$T$的导数。然而$T$所对应的李群并没有良好定义的加法,所以我们不能直接对其进行运算。思路有两种,一是用李代数表示姿态,由于李代数是向量组成,故而有定义良好的加法运算,根据李代数加法可以对其求导;二是对李群左乘(也可右乘)一微小扰动,然后对该扰动求导。

这里只给出扰动模型的思路,假设左扰动$\Delta R$对应李代数$\varphi$

$$ \frac{\delta(R \rho)}{\delta \varphi}=\lim\limits_{\varphi \to 0} \frac{(\Delta RR-R) \rho}{\varphi}\\ \frac{\Delta R R-R}{\varphi}=\frac{exp(\varphi \hat{}) exp(\phi \hat{}){}-exp(\phi \hat{})}{\varphi} $$

由于$\varphi \hat{}$为一微小扰动量,故有

$$ exp(\varphi \hat{})=I+\varphi \hat{} $$

带回上式,则

$$ \frac{\delta (R \rho)}{\delta \varphi}=\frac{(\varphi \hat{}exp(\phi \hat{}))\rho}{\varphi}=\frac{\varphi \hat{} R \rho}{\varphi}=\frac{-(R \rho)\hat{} \varphi}{\varphi} = -(R \rho) \hat{} $$