Apollo学习笔记(27)李群、李代数

最近在学高翔大神的SLAM,工作之余才能有空拜读,本文内的东西大都是摘录自大神的《视觉SLAM十四讲》,本文仅仅是作为学习笔记,增加记忆。

群、李群

首先上一下的定义,(Group)是一种集合加上一种运算的代数结构,将其中的集合称作A AA,运算为⋅ \cdot,所以群就可以记做G = ( A , ⋅ ) G=(A,\cdot)G=(A,)。群的相关运算需要满足以下性质:

  • 封闭性:∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A \forall a_{1},a_{2}\in A,\hspace*{1em} a_{1}\cdot a_{2} \in Aa1,a2A,a1a2A
  • 结合律:∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 2 ) \forall a_{1},a_{2},a_{3}\in A,\hspace*{1em} (a_{1}\cdot a_{2}) \cdot a_{3}=a_{1}\cdot (a_{2} \cdot a_{2})a1,a2,a3A,(a1a2)a3=a1(a2a2)
  • 幺元:∃ a 0 ∈ A , s . t . ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a \exist a_{0} \in A,\hspace*{1em}s.t. \enspace \forall a \in A, \enspace a_{0} \cdot a=a \cdot a_{0}=aa0A,s.t.aA,a0a=aa0=a
  • 逆:∀ a ∈ A , ∃ a − 1 ∈ A , s . t . a ⋅ a − 1 = a 0 \forall a \in A, \enspace \exist a^{-1} \in A, \hspace*{1em}s.t. \enspace a \cdot a^{-1}=a_{0}aA,a1A,s.t.aa1=a0

从上面几个群的相关性质,不难发现,旋转矩阵和矩阵的乘法可以构成群,同样的,变换矩阵和矩阵乘法也可以构成群。另外,常见的群有,整数和加法构成的群,去掉0后的有理数和乘法(0不存在幺元)构成的群等。

上面的八股文还是要理解一下的,下面结合之前看过的四元素以及坐标变换,理解一下群是什么东西。

接下来说点非八股文的东西,坐标转换时,会从一个坐标系O A O_{A}OA转换到另一个坐标系O B O_{B}OB,需要经常用到连续的旋转矩阵相乘,或者变换矩阵的连续相乘,经过变换后,旋转矩阵仍然是旋转矩阵,变换矩阵也仍然是变换矩阵。旋转矩阵相乘和转移矩阵相乘完全符合群的定义以及各个条件,故,三维旋转矩阵构成了特殊正交群S O ( 3 ) SO(3)SO(3),变换矩阵构成了特殊欧式群S E ( 3 ) SE(3)SE(3)
S O ( 3 ) = { R ∈ R 3 × 3 ∣ R R T = I , d e t R = 1 } (1) SO(3)=\begin{Bmatrix} R \in \Bbb{R}^{3 \times 3} | RR^{T}=I,det{R}=1 \end{Bmatrix} \tag{1}SO(3)={RR3×3RRT=I,detR=1}(1)

S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } (2) SE(3)=\begin{Bmatrix} T = \begin{bmatrix} R & t \\ 0^{T} & 1 \end{bmatrix} \in \Bbb{R}^{4 \times 4} | R \in SO(3),t \in \Bbb{R}^{3} \end{Bmatrix} \tag{2}SE(3)={T=[R0Tt1]R4×4RSO(3),tR3}(2)

旋转矩阵S O ( 3 ) SO(3)SO(3)和转移矩阵S E ( 3 ) SE(3)SE(3)对于加法是不封闭的,只关于乘法封闭,
R 1 R 2 ∈ S O ( 3 ) , T 1 T 2 ∈ S E ( 3 ) (3) R_{1}R_{2}\in SO(3),\enspace T_{1}T_{2}\in SE(3) \tag{3}R1R2SO(3),T1T2SE(3)(3)

好,对于旋转矩阵和转移矩阵这种相乘仍然是旋转矩阵和转移矩阵,这种只有一种运算的集合,就是

矩阵中常见的有:

  • 一般线性群GL(n) 指n × n n \times nn×n的可逆矩阵,对矩阵乘法成群
  • 特殊正交群SO(n) 旋转矩阵群,例如S O ( 2 ) , S O ( 3 ) SO(2),SO(3)SO(2),SO(3)
  • 特殊欧式群SE(n) 转移矩阵群,例如S E ( 2 ) , S E ( 3 ) SE(2),SE(3)SE(2),SE(3)

李群则是指具有连续性质的群,刚体在空间中的运动都是连续的,所以S O ( 2 ) , S O ( 3 ) , S E ( 2 ) , S E ( 3 ) SO(2),SO(3),SE(2),SE(3)SO(2),SO(3),SE(2),SE(3)都是李群。每个李群都会有一个对应的李代数,下面来说一下李代数。

李代数

对于任意传感器的旋转矩阵R RR,会随着时间t连续的变化,有
R ( t ) R T ( t ) = I (4) R(t)R^{T}(t)=I \tag{4}R(t)RT(t)=I(4)
再对等式两边求导,则有
R ˙ ( t ) R ( t ) T + R ( t ) R ˙ ( t ) T = 0 (5) \dot{R}(t)R(t)^{T}+R(t)\dot{R}(t)^{T}=0 \tag{5}R˙(t)R(t)T+R(t)R˙(t)T=0(5)
整理后,有
R ˙ ( t ) R ( t ) T = − ( R ˙ ( t ) R ( t ) T ) T (6) \dot{R}(t)R(t)^{T}=-(\dot{R}(t)R(t)^{T})^{T} \tag{6}R˙(t)R(t)T=(R˙(t)R(t)T)T(6)

可以看得出,R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^{T}R˙(t)R(t)T是一个反对称矩阵

反对成矩阵可以转换成一个向量,任一反对称矩阵都可以找出一个与其对应的向量,由这个向量转到反对称矩阵用符号∧ \land表示,由反对称矩阵变换到其对应的向量用符号∨ \lor表示:
a ∧ = A = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] , A ∨ = a = { a 1 , a 2 , a 3 } T (7) a^{\land}=A=\begin{bmatrix} 0 & -a_{3} & a_{2} \\ a_{3} & 0 & -a_{1} \\ -a_{2} & a_{1} & 0 \\ \end{bmatrix},\enspace A^{\lor}=a=\begin{Bmatrix} a_{1},a_{2},a_{3} \end{Bmatrix}^{T} \tag{7}a=A=0a3a2a30a1a2a10,A=a={a1,a2,a3}T(7)

因此,反对称矩阵R ˙ ( t ) R ( t ) T \dot{R}(t)R(t)^{T}R˙(t)R(t)T也可以化为一个对应的三维向量ϕ ( t ) ∈ R \phi(t) \in Rϕ(t)R,如下
R ˙ ( t ) R ( t ) T = ϕ ( t ) ∧ (8) \dot{R}(t)R(t)^{T}=\phi(t)^{\land} \tag{8}R˙(t)R(t)T=ϕ(t)(8)

等式两边同时右乘R ( t ) R(t)R(t),由于R ( t ) R(t)R(t)为正交阵,有
R ˙ ( t ) = ϕ ( t ) ∧ R ( t ) = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] R ( t ) (9) \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) \tag{9}R˙(t)=ϕ(t)R(t)=0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10R(t)(9)

由上式,可以看出旋转矩阵R ( t ) R(t)R(t)求一次导数,就是只需要左乘一个ϕ ( t ) ∧ \phi(t)^{\land}ϕ(t)即可。

t 0 = 0 t_{0}=0t0=0,并且设此时旋转矩阵为R ( 0 ) = I R(0)=IR(0)=I,按照导数定义,将R ( t ) R(t)R(t)在0附近进行一阶泰勒展开,则有,
R ( t ) ≈ R ( t 0 ) + R ˙ ( t 0 ) ( t − t 0 ) = I + ϕ ( t 0 ) ∧ t (10) R(t) \approx R(t_{0})+\dot{R}(t_0)(t-t_{0})=I+\phi(t_{0})^{\land}t \tag{10}R(t)R(t0)+R˙(t0)(tt0)=I+ϕ(t0)t(10)

从上式可以看出,ϕ \phiϕ反映了R RR的导数性质,因此ϕ \phiϕ被称为S O ( 3 ) SO(3)SO(3)原点附近的正切空间上。

同时在t 0 t_0t0附近,设ϕ \phiϕ保持为常数ϕ ( t 0 ) = ϕ 0 \phi(t_{0})=\phi_{0}ϕ(t0)=ϕ0,那么根据式(9),有
R ˙ ( t ) = ϕ ( t 0 ) ∧ R ( t ) = ϕ 0 ∧ R ( t ) (11) \dot{R}(t)=\phi(t_{0})^{\land}R(t)=\phi_{0}^{\land}R(t) \tag{11}R˙(t)=ϕ(t0)R(t)=ϕ0R(t)(11)
求解上述微分方程,并且因为初始值R ( 0 ) = I R(0)=IR(0)=I,求解后,有
R ( t ) = e x p ( ϕ 0 ∧ t ) (12) R(t)=exp(\phi_{0}^{\land}t) \tag{12}R(t)=exp(ϕ0t)(12)

到此可以看出,旋转矩阵R RR与另一个反对称矩阵ϕ 0 ∧ \phi_{0}^{\land}ϕ0的指数运算有了联系。

书中上述的这一番推导十分精彩,有空可以细细琢磨一下。

下面,自己做一些补充,其实ϕ \phiϕ就是旋转矩阵R RR对应的李群S O ( 3 ) SO(3)SO(3)上的李代数s o ( 3 ) \frak{so}(3)so(3)

另外矩阵的指数计算,如下,
e x p ( A t ) = I + A t + 1 2 ! A 2 t 2 + … = ∑ k = 0 ∞ 1 k ! A k t k (13) exp(At)=I+At+\frac{1}{2!}A^{2}t^{2}+\ldots=\displaystyle\sum_{k=0}^{\infty}\frac{1}{k!}A^{k}t^{k} \tag{13}exp(At)=I+At+2!1A2t2+=k=0k!1Aktk(13)

下面就介绍下李代数的概念,
每个李群都有一个对应的李代数,李代数的定义:李代数由一个集合V \Bbb{V}V,一个数域F \Bbb{F}F和一个二元运算[ , ] [,][,]组成,另外,还必须满足以下几条性质:

  1. 封闭性 ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y \in \Bbb{V},[X,Y] \in \Bbb{V}X,YV,[X,Y]V
  2. 双线性 ∀ X , Y , Z ∈ V , a , b ∈ F \forall X,Y,Z \in \Bbb{V}, \enspace a,b \in \Bbb{F}X,Y,ZV,a,bF,有[ a X + b Y , Z ] = a [ X , Z ] + b [ Y , Z ] , [ Z , a X + b Y ] = a [ Z , X ] + b [ Z , Y ] [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y][aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]
  3. 自反性 ∀ X ∈ V \forall X \in \Bbb{V}XV,有[ X , X ] = 0 [X,X]=0[X,X]=0
  4. 雅克比等价 ∀ X , Y , Z ∈ V , [ X , [ Y , Z ] ] + [ Z , [ X , Y ] ] + [ Y , [ Z , X ] ] = 0 \forall X,Y,Z \in \Bbb{V}, \enspace [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0X,Y,ZV,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0

则称[ V , F , [ , ] ] [\Bbb{V},\Bbb{F},[,]][V,F,[,]]为一个李代数,记为g \frak{g}g。举个例子,三维向量R 3 \Bbb{R}^{3}R3上定义的叉积× \times×是一种李括号,因此,g = ( R 3 , R , × ) \frak{g}=(\Bbb{R}^{3},\Bbb{R},\times)g=(R3,R,×)构成了一个李代数。

结合之前的推导,每个ϕ \phiϕ可以生成一个反对称矩阵
Φ = ϕ ∧ = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ] ∈ R 3 × 3 (14) \Phi=\phi^{\land}=\begin{bmatrix} 0 & -\phi_{3} & \phi_{2} \\ \phi_{3} & 0 & -\phi_{1} \\ -\phi_{2} & \phi_{1} & 0 \\ \end{bmatrix} \in \Bbb{R}^{3\times 3} \tag{14}Φ=ϕ=0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10R3×3(14)

在此定义下,两个向量ϕ 1 , ϕ 2 \phi_{1},\phi_{2}ϕ1,ϕ2 的李括号为
[ ϕ 1 , ϕ 2 ] = ( Φ 1 Φ 2 − Φ 2 Φ 1 ) ∨ (15) [\phi_{1},\phi_{2}]=(\Phi_{1}\Phi_{2}-\Phi_{2}\Phi_{1})^{\lor} \tag{15}[ϕ1,ϕ2]=(Φ1Φ2Φ2Φ1)(15)

s o ( 3 ) \frak{so}(3)so(3)是一个三维向量,或者一个三维反对称矩阵
s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ ∧ R 3 × 3 } (16) \frak{so}(3)=\begin{Bmatrix} \phi \in \Bbb{R}^{3},\enspace \Phi=\phi^{\land}\Bbb{R}^{3\times3} \tag{16} \end{Bmatrix}so(3)={ϕR3,Φ=ϕR3×3}(16)
李代数s o ( 3 ) \frak{so}(3)so(3)与李群S O ( 3 ) SO(3)SO(3)的关系,可以由指数映射给定,参考式(12)。

而李群S E ( 3 ) SE(3)SE(3)也有对应的李代数s e ( 3 ) \frak{se}(3)se(3)
s e ( 3 ) = { ξ = [ ρ ϕ ] ∈ R 6 , ρ ∈ R 3 , ϕ ∈ s o ( 3 ) , ξ ∧ = [ ϕ ∧ ρ 0 T 0 ] ∈ R 4 × 4 } (17) \frak{se}(3)=\begin{Bmatrix} \xi=\begin{bmatrix} \rho \\ \phi \\ \end{bmatrix}\in \Bbb{R}^{6},\enspace \rho \in \Bbb{R}^{3}, \enspace \phi \in \frak{so}(3), \enspace \xi^{\land}=\begin{bmatrix} \phi^{\land} & \rho \\ \bold{0}^{T} & 0 \\ \end{bmatrix} \in \Bbb{R}^{4\times4} \end{Bmatrix} \tag{17}se(3)={ξ=[ρϕ]R6,ρR3,ϕso(3),ξ=[ϕ0Tρ0]R4×4}(17)
每个李代数s e ( 3 ) \frak{se}(3)se(3)元素记做ξ \xiξ,是一个六维向量,上面的三维为平移向量,记做ρ \rhoρ,注意与变换矩阵T TT中的平移向量t tt不同,不是同一个东西;下面三维为李群s o ( 3 ) \frak{so}(3)so(3)。注意,这里的∧ {\land}与之前的不同,在这同样使用∧ \land,将一个六维向量转换为一个四维矩阵,但是在此处不再表示反对称。

同样,李代数s e ( 3 ) \frak{se}(3)se(3)也有相应的李括号
[ ξ 1 , ξ 2 ] = ( ξ 1 ∧ ξ 2 ∧ − ξ 2 ∧ ξ 1 ∧ ) ∨ (18) [\xi_{1},\xi_{2}]=(\xi_{1}^{\land}\xi_{2}^{\land}-\xi_{2}^{\land}\xi_{1}^{\land})^{\lor} \tag{18}[ξ1,ξ2]=(ξ1ξ2ξ2ξ1)(18)

指数和对数映射

S O ( 3 ) SO(3)SO(3)上的指数映射

上面说过矩阵指数的求解,在李群和李代数中,称为指数映射。

矩阵的指数映射可以写成一个泰勒展开,但是只有在收敛的情况下会有结果,类似式(13)
e x p ( A ) = I + A + 1 2 ! A 2 + … = ∑ k = 0 ∞ 1 k ! A k (19) exp(A)=I+A+\frac{1}{2!}A^{2}+\ldots=\displaystyle\sum_{k=0}^{\infty}\frac{1}{k!}A^{k} \tag{19}exp(A)=I+A+2!1A2+=k=0k!1Ak(19)

s o ( 3 ) \frak{so}(3)so(3)中的任意元素ϕ \phiϕ,它的指数映射同样为
e x p ( ϕ ∧ ) = ∑ k = 0 ∞ 1 k ! A k (20) exp(\phi^{\land})=\displaystyle\sum_{k=0}^{\infty}\frac{1}{k!}A^{k} \tag{20}exp(ϕ)=k=0k!1Ak(20)

由于ϕ \phiϕ是一个三维向量,定义它的模长为θ \thetaθ,方向为向量a \bold{a}a,于是有ϕ = θ a \phi=\theta \bold{a}ϕ=θa,这里的方向向量a \bold{a}a为长度为1的单位向量。然后,对于a ∧ \bold{a}^{\land}a,有以下两条性质,
a ∧ a ∧ = a a T − I a ∧ a ∧ a ∧ = − a ∧ (21) \bold{a}^{\land} \bold{a}^{\land}=\bold{a} \bold{a}^{T}-I \\ \bold{a}^{\land} \bold{a}^{\land} \bold{a}^{\land} = -\bold{a}^{\land} \tag{21}aa=aaTIaaa=a(21)
再结合式(20),有
e x p ( ϕ ∧ ) = e x p ( θ a ∧ ) = ∑ k = 0 ∞ 1 k ! ( θ a ∧ ) k = I + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ + 1 3 ! θ 3 a ∧ a ∧ a ∧ + 1 4 ! θ 4 ( a ∧ ) 4 + … = a a T − a ∧ a ∧ + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ − 1 3 ! θ 3 a ∧ − 1 4 ! θ 4 ( a ∧ ) 2 + … = a a T + ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − … ) a ∧ − ( 1 − 1 2 ! θ 2 + 1 4 ! θ 4 − … ) a ∧ a ∧ = a ∧ a ∧ + I + sin ⁡ θ a ∧ − cos ⁡ θ a ∧ a ∧ = ( 1 − cos ⁡ θ ) a ∧ a ∧ + I + sin ⁡ θ a ∧ = cos ⁡ θ I + ( 1 − cos ⁡ θ ) a a T + sin ⁡ θ a ∧ \begin{aligned} exp(\phi^{\land})&=exp(\theta \bold{a}^{\land}) =\displaystyle\sum_{k=0}^{\infty}\frac{1}{k!}(\theta \bold{a}^{\land})^{k} \\ &=I + \theta \bold{a}^{\land} + \frac{1}{2!} \theta^{2} \bold{a}^{\land} \bold{a}^{\land} + \frac{1}{3!} \theta^{3} \bold{a}^{\land} \bold{a}^{\land} \bold{a}^{\land} + \frac{1}{4!} \theta^{4} (\bold{a}^{\land} )^{4} + \ldots \\ &=\bold{a} \bold{a}^{T} - \bold{a}^{\land} \bold{a}^{\land} + \theta \bold{a}^{\land} + \frac{1}{2!} \theta^{2} \bold{a}^{\land} \bold{a}^{\land} - \frac{1}{3!} \theta^{3} \bold{a}^{\land} - \frac{1}{4!} \theta^{4} (\bold{a}^{\land} )^{2} + \ldots \\ &= \bold{a} \bold{a}^{T} + (\theta - \frac{1}{3!} \theta^{3} + \frac{1}{5!} \theta^{5} - \ldots) \bold{a}^{\land} - (1 - \frac{1}{2!} \theta^{2} + \frac{1}{4!} \theta^{4} - \ldots) \bold{a}^{\land} \bold{a}^{\land} \\ &= \bold{a}^{\land} \bold{a}^{\land} + I + \sin \theta\bold{a}^{\land} - \cos \theta \bold{a}^{\land}\bold{a}^{\land} \\ &= (1-\cos\theta)\bold{a}^{\land}\bold{a}^{\land}+I+\sin\theta \bold{a}^{\land} \\ &=\cos \theta I + (1-\cos \theta)\bold{a}\bold{a}^{T}+\sin \theta \bold{a}^{\land} \end{aligned}exp(ϕ)=exp(θa)=k=0k!1(θa)k=I+θa+2!1θ2aa+3!1θ3aaa+4!1θ4(a)4+=aaTaa+θa+2!1θ2aa3!1θ3a4!1θ4(a)2+=aaT+(θ3!1θ3+5!1θ5)a(12!1θ2+4!1θ4)aa=aa+I+sinθacosθaa=(1cosθ)aa+I+sinθa=cosθI+(1cosθ)aaT+sinθa

最终,得到下面这个公式
e x p ( ϕ ∧ ) = e x p ( θ a ∧ ) = cos ⁡ θ I + ( 1 − cos ⁡ θ ) a a T + sin ⁡ θ a ∧ (22) exp(\phi^{\land})=exp(\theta \bold{a}^{\land})=\cos \theta I + (1-\cos \theta)\bold{a}\bold{a}^{T}+\sin \theta \bold{a}^{\land} \tag{22}exp(ϕ)=exp(θa)=cosθI+(1cosθ)aaT+sinθa(22)

再看下罗德里格斯公式
R = cos ⁡ θ I + ( 1 − cos ⁡ θ ) n n T + sin ⁡ θ n ∧ R=\cos\theta I+(1-\cos\theta)\bold{n}\bold{n}^{T}+\sin \theta \bold{n}^{\land}R=cosθI+(1cosθ)nnT+sinθn
两者一致,由此可知,李代数s o ( 3 ) \frak{so}(3)so(3)就是由旋转向量组成的空间,而指数映射即罗德里格斯公式。通过此公式,可以把s o ( 3 ) \frak{so}(3)so(3)中的任一向量对应到S O ( 3 ) SO(3)SO(3)中的旋转矩阵。反之,也可以通过对数映射将S O ( 3 ) SO(3)SO(3)中的旋转矩阵对应到相应的s o ( 3 ) \frak{so}(3)so(3)中的一个向量
ϕ = ln ⁡ ( R ∨ ) = [ ∑ n = 0 ∞ ( − 1 ) n n + 1 ( R − I ) n + 1 ] ∨ \phi=\ln(R^{\lor})=[\displaystyle\sum_{n=0}^{\infty}\frac{(-1)^{n}}{n+1}(R-I)^{n+1}]^{\lor}ϕ=ln(R)=[n=0n+1(1)n(RI)n+1]

不过,按照泰勒展开去计算对数映射,计算量太大了,也很麻烦,一般都是用下面的方式进行计算
{ θ = arccos ⁡ t r ( R ) − 1 2 R n = n (23) \begin{cases} \theta=\arccos\frac{tr(R)-1}{2} \\ Rn=n \\ \end{cases} \tag{23}{θ=arccos2tr(R)1Rn=n(23)
式中,t r ( R ) tr(R)tr(R)为旋转矩阵R RR的迹,
n nn为旋转矩阵R RR特征值为1对应的特征向量,就是求解式(23)下面的公式,再归一化。

S E ( 3 ) SE(3)SE(3)上的指数映射

s e ( 3 ) \frak{se}(3)se(3)上的指数映射,形式如下,
e x p ( ξ ∧ ) = [ ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n ρ 0 T 1 ] = [ R J ρ 0 T 1 ] = T (24) exp(\xi^{\land})=\begin{bmatrix} \displaystyle\sum_{n=0}^{\infty}\frac{1}{n!}(\phi^{\land})^{n} & \displaystyle\sum_{n=0}^{\infty}\frac{1}{(n+1)!}(\phi^{\land})^{n} \rho \\ \bold{0}^{T} & 1 \end{bmatrix} = \begin{bmatrix} \bold{R} & \bold{J}\rho \\ \bold{0}^{T} & 1 \end{bmatrix}=\bold{T} \tag{24}exp(ξ)=n=0n!1(ϕ)n0Tn=0(n+1)!1(ϕ)nρ1=[R0TJρ1]=T(24)

从上式中可以看出,ξ = [ ρ , ϕ ] T \xi=[ \rho,\phi ] ^{T}ξ[ρ,ϕ]T的指数映射左上角的R RR就是S O ( 3 ) SO(3)SO(3)中的元素,与s e ( 3 ) \frak{se}(3)se(3)当中旋转部分ϕ \phiϕ对应;
右上角的J JJ可以整理为
J = sin ⁡ θ θ I + ( 1 − sin ⁡ θ θ ) a a T + 1 − cos ⁡ θ θ a ∧ (25) J=\frac{\sin\theta}{\theta}I+(1-\frac{\sin\theta}{\theta})\bold{a}\bold{a}^{T}+\frac{1-\cos\theta}{\theta}\bold{a}^{\land} \tag{25}J=θsinθI+(1θsinθ)aaT+θ1cosθa(25)
其中,ϕ = θ a \phi=\theta \bold{a}ϕ=θa
ρ \rhoρ是平移部分,这里再次提醒下,与变换矩阵T TT中的平移向量t tt不同,ρ \rhoρt tt之间的关系为
t = J ρ (26) t=J\rho \tag{26}t=Jρ(26)

好了,到此为止,可知

  1. 李群S O ( 3 ) SO(3)SO(3)通过对数映射得到李代数s o ( 3 ) \frak{so}(3)so(3),李代数s o ( 3 ) \frak{so}(3)so(3)通过指数映射得到李群S O ( 3 ) SO(3)SO(3)
  2. 李群S E ( 3 ) SE(3)SE(3)通过对数映射得到李代数s e ( 3 ) \frak{se}(3)se(3),李代数s e ( 3 ) \frak{se}(3)se(3)通过指数映射得到李群S E ( 3 ) SE(3)SE(3)

这里是我的理解,李群和李代数之间的互相转换,第一步就需要找到旋转轴和旋转角度,可以通过旋转矩阵得到,有了这两个量之后,在进行其他相关量的计算就可以了。

BCH公式与近似公式

引入李群李代数的主要目的就是为了进行优化,在进行优化过程中,不可避免的就要进行求导。

上文说了李群S O ( 3 ) SO(3)SO(3)的指数映射,和S E ( 3 ) SE(3)SE(3)的对数映射,如果在s o ( 3 ) \frak{so}(3)so(3)上做加法运算时,正好对应S O ( 3 ) SO(3)SO(3)上的两个矩阵的乘积,exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) = exp ⁡ ( ( ϕ 1 + ϕ 2 ) ∧ ) (27) \exp(\phi^{\land}_{1})\exp(\phi^{\land}_{2})=\exp((\phi_{1}+\phi_{2}) ^{\land}) \tag{27}exp(ϕ1)exp(ϕ2)=exp((ϕ1+ϕ2))(27)
不难发现,如果是标量,式(27)一定成立,但是现在计算的是矩阵,上式不应适用于矩阵的情形。

两个李代数指数映射乘积的完整形式,由Baker-Campbell-Hausdorff公式给出,简称BCH公式,由于其完成行驶很复杂,只给出其展开式的前几项,
ln ⁡ ( exp ⁡ ( A ) exp ⁡ ( B ) ) = A + B + 1 2 [ A , B ] + 1 12 [ A , [ A , B ] ] − 1 12 [ B , [ A , B ] ] + … (28) \ln (\exp(A)\exp(B))=A+B+\frac{1}{2}[A,B]+\frac{1}{12}[A,[A,B]]-\frac{1}{12}[B,[A,B]]+\ldots \tag{28}ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+(28)

其中,[ ] [][]为李括号。不难看出,当处理两个矩阵指数之积时,会产生一些由李括号组成的余项。

考虑S O ( 3 ) SO(3)SO(3)上的李代数ln ⁡ ( exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) ) ∨ \ln (\exp(\phi^{\land}_{1})\exp(\phi^{\land}_{2}))^{\lor}ln(exp(ϕ1)exp(ϕ2)),当ϕ 1 \phi_{1}ϕ1ϕ 2 \phi_{2}ϕ2为小量时,小量二次以上的项可以忽略掉,BCH线性近似可以表达为
ln ⁡ ( exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) ) ∨ ≈ { J l ( ϕ 2 ) − 1 ( ϕ 1 ) + ϕ 2 当 ϕ 1 为 小 量 时 J r ( ϕ 1 ) − 1 ( ϕ 2 ) + ϕ 1 当 ϕ 2 为 小 量 时 (29) \ln (\exp(\phi^{\land}_{1})\exp(\phi^{\land}_{2}))^{\lor} \approx \begin{cases} J_{l}(\phi_{2})^{-1}(\phi_{1})+\phi_{2} \enspace 当\phi_{1}为小量时 \\ J_{r}(\phi_{1})^{-1}(\phi_{2})+\phi_{1} \enspace 当\phi_{2}为小量时 \\ \end{cases} \tag{29}ln(exp(ϕ1)exp(ϕ2)){Jl(ϕ2)1(ϕ1)+ϕ2ϕ1Jr(ϕ1)1(ϕ2)+ϕ1ϕ2(29)

从上式(29)可以看出,当对一个旋转矩阵R 2 R_{2}R2(李代数为ϕ 2 \phi_{2}ϕ2)左乘一个微小的旋转矩阵R 1 R_{1}R1(李代数为ϕ 1 \phi_{1}ϕ1)时,可以近似等于,在原有李代数ϕ 2 \phi_{2}ϕ2的基础上加了一项J l ( ϕ 2 ) − 1 ( ϕ 1 ) J_{l}(\phi_{2})^{-1}(\phi_{1})Jl(ϕ2)1(ϕ1);同理,当对一个旋转矩阵R 1 R_{1}R1(李代数为ϕ 1 \phi_{1}ϕ1)右乘一个微小的旋转矩阵R 2 R_{2}R2(李代数为ϕ 2 \phi_{2}ϕ2)时,可以近似等于,在原有李代数ϕ 1 \phi_{1}ϕ1的基础上加了一项J l ( ϕ 1 ) − 1 ( ϕ 2 ) J_{l}(\phi_{1})^{-1}(\phi_{2})Jl(ϕ1)1(ϕ2)实际使用时,需要注意使用的是左乘模型还是右乘模型。

上式中,左乘BCH近似雅克比J l J_{l}Jl
J l = J = sin ⁡ θ θ I + ( 1 − sin ⁡ θ θ ) a a T + 1 − cos ⁡ θ θ a ∧ (30) J_{l}=J=\frac{\sin\theta}{\theta}I+(1-\frac{\sin\theta}{\theta})\bold{a}\bold{a}^{T}+\frac{1-\cos\theta}{\theta}\bold{a}^{\land} \tag{30}Jl=J=θsinθI+(1θsinθ)aaT+θ1cosθa(30)
其逆为
J l − 1 = θ 2 cot ⁡ θ 2 I + ( 1 − θ 2 cot ⁡ θ 2 ) − θ 2 a ∧ (31) J_{l}^{-1}=\frac{\theta}{2}\cot\frac{\theta}{2} I+(1-\frac{\theta}{2}\cot\frac{\theta}{2})-\frac{\theta}{2}\bold{a}^{\land} \tag{31}Jl1=2θcot2θI+(12θcot2θ)2θa(31)

而右乘雅克比仅需要对自变量取负号即可,
J r ( ϕ ) = J l ( − ϕ ) (32) J_{r}(\phi)=J_{l}(-\phi) \tag{32}Jr(ϕ)=Jl(ϕ)(32)

为了便于理解,这里总结一下,如果现有一个旋转矩阵R RR(对应李代数为ϕ \phiϕ),然后再加上一个微小旋转Δ R \Delta RΔR(对应的李代数为Δ ϕ \Delta \phiΔϕ)。在李群上得到的Δ R ⋅ R \Delta R \cdot RΔRR,在李代数上,根据BCH近似有J l − 1 ( ϕ ) Δ ϕ + ϕ J_{l}^{-1}(\phi)\Delta \phi + \phiJl1(ϕ)Δϕ+ϕ,写成公式则为,
exp ⁡ ( Δ ϕ ∧ ) exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ( ϕ + J l − 1 ( ϕ ) Δ ϕ ) ∧ ) (33) \exp(\Delta \phi ^{\land}) \exp(\phi ^{\land}) = \exp((\phi+J_{l}^{-1}(\phi)\Delta \phi)^{\land}) \tag{33}exp(Δϕ)exp(ϕ)=exp((ϕ+Jl1(ϕ)Δϕ))(33)

反之,在李代数上进行加法运算,让ϕ \phiϕ加上Δ ϕ \Delta \phiΔϕ,则可以近似为李群上带左右雅克比的乘法
exp ⁡ ( ( ϕ + Δ ϕ ) ∧ ) = exp ⁡ ( ( J l Δ ϕ ) ∧ ) exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ϕ ∧ ) exp ⁡ ( ( J r Δ ϕ ) ∧ ) (34) \exp((\phi+\Delta \phi)^{\land})=\exp((J_{l}\Delta \phi)^{\land})\exp(\phi^{\land})=\exp(\phi^{\land})\exp((J_{r}\Delta \phi)^{\land}) \tag{34}exp((ϕ+Δϕ))=exp((JlΔϕ))exp(ϕ)=exp(ϕ)exp((JrΔϕ))(34)

这是后面李代数做微积分的理论基础。

至于S E ( 3 ) SE(3)SE(3),也有类似的BCH近似公式:
exp ⁡ ( Δ ξ ∧ ) exp ⁡ ( ξ ∧ ) ≈ exp ⁡ ( ( J l ∧ Δ ξ + ξ ) ∧ ) exp ⁡ ( ξ ∧ ) exp ⁡ ( Δ ξ ∧ ) ≈ exp ⁡ ( ( J r ∧ Δ ξ + ξ ) ∧ ) (35) \exp(\Delta \xi ^{\land}) \exp(\xi ^{\land}) \approx \exp((\mathcal{J}_{l}^{\land}\Delta \xi+\xi)^{\land}) \\ \exp(\xi ^{\land}) \exp(\Delta \xi ^{\land}) \approx \exp((\mathcal{J}_{r}^{\land}\Delta \xi+\xi)^{\land}) \tag{35}exp(Δξ)exp(ξ)exp((JlΔξ+ξ))exp(ξ)exp(Δξ)exp((JrΔξ+ξ))(35)

这里的J l \mathcal{J}_{l}JlJ r \mathcal{J}_{r}Jr为一个6 × 6 6\times 66×6矩阵,这里就不详细描述了。


版权声明:本文为qq_24649627原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。