李群和李代数

1. 群的定义

群(Group)是一种集合加上一种运算的代数结构,以A表示集合,“·”表示运算,则群一般写作 G(A, ·)。群要求满足以下四个条件:
在这里插入图片描述
举个例子,旋转矩阵和乘法可以构成旋转矩阵群,因为其满足:

1). 旋转矩阵相乘后仍是旋转矩阵;
2). 矩阵乘法满足结合律;
3). 幺元为单位矩阵,也属旋转矩阵;
4). 旋转矩阵的逆也为旋转矩阵,且相乘为单位矩阵。

常见的群有:
在这里插入图片描述

2. 李群

李群是指拥有(连续)光滑性质的群,比如上面提到的旋转矩阵群,因其能在空间中连续旋转,变换矩阵群也是李群(就是在旋转过程中加上平移)。

3. 李代数的引入

直观的导出

在视觉SLAM中,我们需要做的就是不断计算相机的位姿和构建地图(其中的相机位姿表现在其变换矩阵T),但由于干扰的存在,我们无法准确获得所需要的信息,所以我们转而求其最小误差。
现假设我们有N个三维点p和对应的观测值z,那么我们的目标就是寻找一个最佳的位姿T,使得整体误差最小化,也就是求:
在这里插入图片描述
要求解上面的方程,即是要求目标函数J对T的导数,但由于T所在的变换矩阵群(下面用SO(3)空间表示)对加法不封闭,无法直接求取,所以我们需要引入一个新的量,通过对该量的计算间接获得对变换矩阵T的求导,这个引入的量就是李代数。

数学层面的导出

(之后的部分《视觉SLAM 十四讲》里写得已经很精炼很清楚了,这里大概重述一遍以加深印象,也方便以后的查询)

先给一个结论:李代数对应李群的正切空间,描述了李群的局部导数。

这里用旋转矩阵群SO(3)为例:
我们知道旋转矩阵满足以下关系: R R T = I RR^{T}=I RRT=I
然后引入时间变量 t t t变为时间的函数 R ( t ) R(t) R(t),即是有: R ( t ) R ( t ) T = I R(t)R(t)^{T}=I R(t)R(t)T=I
对两边求导得到: R ˙ ( t ) R ( t ) T + R ˙ ( t ) T R ( t ) = 0 \dot{R}(t)R(t)^{T}+\dot{R}(t)^{T}R(t)=0 R˙(t)R(t)T+R˙(t)TR(t)=0
整理得: R ˙ ( t ) R ( t ) T = − ( R ˙ ( t ) R ( t ) T ) T \dot{R}(t)R(t)^{T}=-(\dot{R}(t)R(t)^{T})^{T} R˙(t)R(t)T=(R˙(t)R(t)T)T
可见, R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^{T} R˙(t)R(t)T是一个反对称矩阵。用符号 ∧ ^{\land} 表示反对称矩阵,设: a = [ a 1 a 2 a 3 ] a=\begin{bmatrix} a_{1} \\ a_{2} \\ a_{3} \end{bmatrix} a=a1a2a3
a ∧ a^{\land} a为: a ∧ = A = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] a^{\land}=A=\begin{bmatrix} 0 & -a_{3} & a_{2} \\ a_{3} & 0 & -a_{1} \\ -a_{2} & a_{1} & 0 \end{bmatrix} a=A=0a3a2a30a1a2a10
同理: A ∨ = a A^{\vee}=a A=a
我们设一个三维向量 ϕ ( t ) ∈ ℜ 3 \phi(t)\in\Re^{3} ϕ(t)3与反对称矩阵 R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^{T} R˙(t)R(t)T对应,即: R ˙ ( t ) R ( t ) T = ϕ ( t ) ∧ \dot{R}(t)R(t)^{T}=\phi(t)^{\land} R˙(t)R(t)T=ϕ(t)
等式两边右乘 R ( t ) R(t) R(t),由于 R R R为正交阵,得: R ˙ ( t ) = ϕ ( t ) ∧ R ( t ) = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] R ( t ) \dot{R}(t)=\phi(t)^{\land}R(t)=\begin{bmatrix}0 & -\phi_{3} & \phi_{2}\\\phi_{3}&0&-\phi_{1}\\-\phi_{2}&\phi_{1}&0\end{bmatrix}R(t) R˙(t)=ϕ(t)R(t)=0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10R(t)
由此可见,每对 R R R求一次导数,只需左乘一个 ϕ ∧ ( t ) \phi^{\land}(t) ϕ(t)即可。
t = 0 t=0 t=0时,设此时 R ( 0 ) = I R(0)=I R(0)=I,把 R ( t ) R(t) R(t) t = 0 t=0 t=0附近进行一阶泰勒展开得: R ( t ) ≈ R ( t 0 ) + R ˙ ( t 0 ) ( t − t 0 ) = I + ϕ ( t 0 ) ∧ ( t ) R(t)\approx R(t_{0})+\dot{R}(t_{0})(t-t_{0})=I+\phi(t_{0})^{\land}(t) R(t)R(t0)+R˙(t0)(tt0)=I+ϕ(t0)(t)
可见, ϕ \phi ϕ反映了 R R R的导数性质,所以称它为SO(3)原点附近的正切空间。同时在 t 0 t_{0} t0附近设 ϕ \phi ϕ保持为常数 ϕ ( t 0 ) = ϕ 0 \phi(t_{0})=\phi_{0} ϕ(t0)=ϕ0,故有: R ˙ ( t ) = ϕ ( t 0 ) ∧ R ( t ) = ϕ 0 ∧ R ( t ) \dot{R}(t)=\phi(t_{0})^{\land}R(t)=\phi_{0}^{\land}R(t) R˙(t)=ϕ(t0)R(t)=ϕ0R(t)
这是一个关于 R R R的微分方程,且初始值 R ( 0 ) = I R(0)=I R(0)=I,解得: R ( t ) = e x p ( ϕ 0 ∧ t ) R(t)=exp(\phi_{0}^{\land}t) R(t)=exp(ϕ0t)
表明,旋转矩阵可由 e x p ( ϕ 0 ∧ t ) exp(\phi_{0}^{\land}t) exp(ϕ0t)计算出来,给定某时刻的 R R R我们就能求得一个 ϕ \phi ϕ,它描述 R R R在局部的导数关系,这个 ϕ \phi ϕ正是对应到SO(3)上的李代数so(3)

4. 李代数的定义

每个李群都有其对应的李代数,一般李代数的定义如下:
在这里插入图片描述
二元运算[,]称为李括号,表达两元素的差异。举个例子,三维向量 ℜ 3 \Re^{3} 3的叉积就是一种李括号,因此 g = ( ℜ 3 , ℜ , × ) g=(\Re^{3},\Re,\times) g=(3,,×)构成了一个李代数。

5. 李代数so(3)

由上面的结果可得,三维向量 ϕ \phi ϕ为李群SO(3)所对应的,定义在 ℜ 3 \Re^{3} 3上的李代数,每个 ϕ \phi ϕ对应一个反对称矩阵: Φ = ϕ ( t ) ∧ R ( t ) = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] ∈ ℜ 3 × 3 \Phi=\phi(t)^{\land}R(t)=\begin{bmatrix}0 & -\phi_{3} & \phi_{2}\\\phi_{3}&0&-\phi_{1}\\-\phi_{2}&\phi_{1}&0\end{bmatrix}\in \Re^{3\times3} Φ=ϕ(t)R(t)=0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ103×3
两个向量 ϕ 1 , ϕ 2 \phi_{1},\phi_{2} ϕ1,ϕ2的李括号为: [ ϕ 1 , ϕ 2 ] = ( Φ 1 Φ 2 − Φ 2 Φ 1 ) ∨ [\phi_{1},\phi_{2}]=(\Phi_{1}\Phi_{2}-\Phi_{2}\Phi_{1})^{\vee} [ϕ1,ϕ2]=(Φ1Φ2Φ2Φ1)
它与SO(3)的关系由指数映射指定: R = e x p ( ϕ ∧ ) R=exp(\phi^{\land}) R=exp(ϕ)

6. 李代数se(3)

SE(3)对应的李代数se(3)与so(3)类似,但其定义在 ℜ 6 \Re^{6} 6空间中,如下:
在这里插入图片描述
我们把每个se(3)的元素记作 ξ \xi ξ,表示一个六维向量,前三维表平移,但不同于变换矩阵的平移,记作 ρ \rho ρ,后三维表旋转,记作 ϕ \phi ϕ,其实就是上面提到的so(3)元素。se(3)表示如下(注:这里的 ∧ \land 不再表示反对称矩阵,而是表示六维向量向四维矩阵的转换):
ξ ∧ = [ ϕ ∧ ρ 0 T 0 ] \xi^{\land}=\begin{bmatrix}\phi^{\land}&\rho\\0^{T}&0\end{bmatrix} ξ=[ϕ0Tρ0]
(注: ∧ \land ∨ \vee 这里表示“从向量到矩阵”和“从矩阵到向量”,se(3)可理解成:由平移加上一个so(3)元素构成的向量)
其李括号为: [ ξ 1 , ξ 2 ] = ( ξ 1 ∧ ξ 2 ∧ − ξ 2 ∧ ξ 1 ∧ ) ∨ [\xi_{1},\xi_{2}]=(\xi^{\land}_{1}\xi^{\land}_{2}-\xi^{\land}_{2}\xi^{\land}_{1})^{\vee} [ξ1,ξ2]=(ξ1ξ2ξ2ξ1)

7. 指数与对数映射

矩阵的指数如 e x p ( ϕ ∧ ) exp(\phi^{\land}) exp(ϕ)在李群李代数中称为指数映射。

关于so(3)的映射

那么如何计算 e x p ( ϕ ∧ ) exp(\phi^{\land}) exp(ϕ)呢?首先,任何矩阵 A A A的指数都可以表示成一个泰勒展开,但只有收敛的情况下才会有结果,结果如下: e x p ( A ) = ∑ n = 0 ∞ 1 n ! A n exp(A)=\sum_{n=0}^{\infty}\frac{1}{n!}A^{n} exp(A)=n=0n!1An
即是对so(3)的元素有: e x p ( ϕ ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n exp(\phi^{\land})=\sum_{n=0}^{\infty}\frac{1}{n!}(\phi^{\land})^{n} exp(ϕ)=n=0n!1(ϕ)n
但要计算这个太复杂,因为有无穷次幂。所以一般情况下我们用下面的方法: ϕ \phi ϕ是一个三维向量,我们定义其模长和方向,分别记为 θ \theta θ a a a,写作 ϕ = θ a \phi=\theta a ϕ=θa,这里 a a a的模长为1.即: ∣ ∣ a ∣ ∣ = 1 ||a||=1 a=1:
a = [ a 1 , a 2 , a 3 ] T a = [a_{1}, a_{2}, a_{3}]^{T} a=[a1,a2,a3]T a 1 2 + a 2 2 + a 3 2 = 1 a^{2}_{1}+a^{2}_{2}+a^{2}_{3}=1 a12+a22+a32=1
对于 a ∧ a^{\land} a有以下性质:
在这里插入图片描述
图里的两个式子提供了处理高阶 a ∧ a^{\land} a的方法,所以其指数映射可写成一个神奇的形式:(最好自己写一遍
在这里插入图片描述
在这里插入图片描述
这个式子与罗德里格斯公式如出一辙。

这里简单回顾下罗德里格斯公式(旋转向量到旋转矩阵的转化):
R = c o s θ I + ( 1 − c o s θ ) n n T + s i n θ n ∧ R=cos\theta I+(1-cos\theta)nn^{T}+sin\theta n^{\land} R=cosθI+(1cosθ)nnT+sinθn 两边取迹(即是求矩阵对角线元素之和): t r ( R ) = c o s θ t r ( I ) + ( 1 − c o s θ ) t r ( n n T ) + s i n θ t r ( n ∧ ) = 3 c o s θ + ( 1 − c o s θ ) = 1 + 2 c o s θ tr(R)=cos\theta tr(I)+(1-cos\theta)tr(nn^{T})+sin\theta tr(n^{\land})\\=3cos\theta+(1-cos\theta)=1+2cos\theta tr(R)=cosθtr(I)+(1cosθ)tr(nnT)+sinθtr(n)=3cosθ+(1cosθ)=1+2cosθ
所以角度为:
θ = a r c c o s t r ( R ) − 1 2 \theta=arc cos\frac{tr(R)-1}{2} θ=arccos2tr(R)1
这表明,so(3)实际就是由旋转向量组成的空间,而指数映射即是罗德里格斯公式。
反之,通过对数映射也可以将SO(3)的元素对应到so(3)中:
在这里插入图片描述
对这个式子的求解也没必要用泰勒展开,而是可以通过迹的性质分别求解转角和转轴(上面回顾罗德里格斯公式的时候已经一起列出来了)。
最后需要提一下:每个SO(3)中的元素都可以找到一个so(3)元素与之对应,但一个so(3)元素却可能有多个SO(3)中的元素,直观一点理解的话:比如旋转360度会对应一个周期。

关于se(3)的映射(待补充。。。)

与so(3)的过程类似,所以这里主要给结论(这个过程没具体算,之后补上。)。
se(3)的指数映射形式如下:
在这里插入图片描述
同样令 ϕ = θ a \phi=\theta a ϕ=θa a a a为单位向量,则:
在这里插入图片描述
从结果来看, ξ \xi ξ的指数映射左上角的 R R R就是上面的SO(3),与se(3)中的旋转部分 ϕ \phi ϕ对应,而右上角的 J J J由上面图里的推导给出,即:
在这里插入图片描述

映射表*

这里给出SO(3), SE(3), so(3), se(3)的对应映射表
在这里插入图片描述

本文主要参考《视觉SLAM十四讲》

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值