最近在学高翔大神的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 A∀a1,a2∈A,a1⋅a2∈A
- 结合律:∀ 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,a3∈A,(a1⋅a2)⋅a3=a1⋅(a2⋅a2)
- 幺元:∃ 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}=a∃a0∈A,s.t.∀a∈A,a0⋅a=a⋅a0=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}∀a∈A,∃a−1∈A,s.t.a⋅a−1=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)={R∈R3×3∣RRT=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×4∣R∈SO(3),t∈R3}(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}R1R2∈SO(3),T1T2∈SE(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=⎣⎡0a3−a2−a30a1a2−a10⎦⎤,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−ϕ10⎦⎤R(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)(t−t0)=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)=ϕ0∧R(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(ϕ0∧t)(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=0∑∞k!1Aktk(13)
下面就介绍下李代数的概念,
每个李群都有一个对应的李代数,李代数的定义:李代数由一个集合V \Bbb{V}V,一个数域F \Bbb{F}F和一个二元运算[ , ] [,][,]组成,另外,还必须满足以下几条性质:
- 封闭性 ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y \in \Bbb{V},[X,Y] \in \Bbb{V}∀X,Y∈V,[X,Y]∈V
- 双线性 ∀ X , Y , Z ∈ V , a , b ∈ F \forall X,Y,Z \in \Bbb{V}, \enspace a,b \in \Bbb{F}∀X,Y,Z∈V,a,b∈F,有[ 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]
- 自反性 ∀ X ∈ V \forall X \in \Bbb{V}∀X∈V,有[ X , X ] = 0 [X,X]=0[X,X]=0
- 雅克比等价 ∀ 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]]=0∀X,Y,Z∈V,[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−ϕ10⎦⎤∈R3×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=0∑∞k!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=0∑∞k!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}a∧a∧=aaT−Ia∧a∧a∧=−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=0∑∞k!1(θa∧)k=I+θa∧+2!1θ2a∧a∧+3!1θ3a∧a∧a∧+4!1θ4(a∧)4+…=aaT−a∧a∧+θa∧+2!1θ2a∧a∧−3!1θ3a∧−4!1θ4(a∧)2+…=aaT+(θ−3!1θ3+5!1θ5−…)a∧−(1−2!1θ2+4!1θ4−…)a∧a∧=a∧a∧+I+sinθa∧−cosθa∧a∧=(1−cosθ)a∧a∧+I+sinθa∧=cosθI+(1−cosθ)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+(1−cosθ)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+(1−cosθ)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=0∑∞n+1(−1)n(R−I)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=0∑∞n!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+θ1−cosθ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)
好了,到此为止,可知
- 李群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);
- 李群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当ϕ1为小量时Jr(ϕ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+θ1−cosθ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}Jl−1=2θcot2θI+(1−2θ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ΔR⋅R,在李代数上,根据BCH近似有J l − 1 ( ϕ ) Δ ϕ + ϕ J_{l}^{-1}(\phi)\Delta \phi + \phiJl−1(ϕ)Δϕ+ϕ,写成公式则为,
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((ϕ+Jl−1(ϕ)Δϕ)∧)(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}Jl和J r \mathcal{J}_{r}Jr为一个6 × 6 6\times 66×6矩阵,这里就不详细描述了。