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


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

    群、李群

    首先上一下的定义,(Group)是一种集合加上一种运算的代数结构,将其中的集合称作 A A A,运算为 ⋅ \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,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}=a a0A,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)=

    {RR3×3|RRT=I,detR=1}
    \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)=

    {T=[Rt0T1]R4×4|RSO(3),tR3}
    \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 n n×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 R R,会随着时间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=

    [0a3a2a30a1a2a10]
    ,\enspace A^{\lor}=a=
    {a1,a2,a3}
    ^{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)=

    [0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10]
    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}=0 t0=0,并且设此时旋转矩阵为 R ( 0 ) = I R(0)=I R(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 R R的导数性质,因此 ϕ \phi ϕ被称为 S O ( 3 ) SO(3) SO(3)原点附近的正切空间上。

    同时在 t 0 t_0 t0附近,设 ϕ \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)=I R(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 R R与另一个反对称矩阵 ϕ 0 ∧ \phi_{0}^{\land} ϕ0的指数运算有了联系。

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

    下面,自己做一些补充,其实 ϕ \phi ϕ就是旋转矩阵 R R R对应的李群 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]]=0 X,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}=

    [0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10]
    \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)=

    (16){ϕR3,Φ=ϕR3×3}
    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)=

    {ξ=[ρϕ]R6,ρR3,ϕso(3),ξ=[ϕρ\bold0T0]R4×4}
    \tag{17} se(3)={ξ=[ρϕ]R6,ρR3,ϕso(3),ξ=[ϕ0Tρ0]R4×4}(17)
    每个李代数 s e ( 3 ) \frak{se}(3) se(3)元素记做 ξ \xi ξ,是一个六维向量,上面的三维为平移向量,记做 ρ \rho ρ,注意与变换矩阵 T T T中的平移向量 t t t不同,不是同一个东西;下面三维为李群 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 ∧

    exp(ϕ)=exp(θ\bolda)=k=01k!(θ\bolda)k=I+θ\bolda+12!θ2\bolda\bolda+13!θ3\bolda\bolda\bolda+14!θ4(\bolda)4+=\bolda\boldaT\bolda\bolda+θ\bolda+12!θ2\bolda\bolda13!θ3\bolda14!θ4(\bolda)2+=\bolda\boldaT+(θ13!θ3+15!θ5)\bolda(112!θ2+14!θ4)\bolda\bolda=\bolda\bolda+I+sinθ\boldacosθ\bolda\bolda=(1cosθ)\bolda\bolda+I+sinθ\bolda=cosθI+(1cosθ)\bolda\boldaT+sinθ\bolda
    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)

    {θ=arccostr(R)12Rn=n
    \tag{23} {θ=arccos2tr(R)1Rn=n(23)
    式中, t r ( R ) tr(R) tr(R)为旋转矩阵 R R R的迹,
    n n n为旋转矩阵 R R R特征值为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})=

    [n=01n!(ϕ)nn=01(n+1)!(ϕ)nρ\bold0T1]
    =
    [\boldR\boldJρ\bold0T1]
    =\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 R R就是 S O ( 3 ) SO(3) SO(3)中的元素,与 s e ( 3 ) \frak{se}(3) se(3)当中旋转部分 ϕ \phi ϕ对应;
    右上角的 J J J可以整理为
    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 T T中的平移向量 t t t不同, ρ \rho ρ t t t之间的关系为
    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

    {Jl(ϕ2)1(ϕ1)+ϕ2ϕ1Jr(ϕ1)1(ϕ2)+ϕ1ϕ2
    \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 R R(对应李代数为 ϕ \phi ϕ),然后再加上一个微小旋转 Δ R \Delta R ΔR(对应的李代数为 Δ ϕ \Delta \phi Δϕ)。在李群上得到的 Δ R ⋅ R \Delta R \cdot R ΔRR,在李代数上,根据BCH近似有 J l − 1 ( ϕ ) Δ ϕ + ϕ J_{l}^{-1}(\phi)\Delta \phi + \phi Jl1(ϕ)Δϕ+ϕ,写成公式则为,
    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} Jl J r \mathcal{J}_{r} Jr为一个 6 × 6 6\times 6 6×6矩阵,这里就不详细描述了。

  • 相关阅读:
    linux 性能分析 --chatGPT
    每日一题——“水仙花数”
    您有偏离的分支,需要指定如何调和它们。您可以在执行下一次pull 操作之前执行下面一条命令来抑制本消息:
    聊聊C#中的composite模式
    2023最新版Android逆向教程——第3天:ADB原理及其常用命令
    【BSP开发学习1】通用字符设备开发
    解决 SSLError: HTTPSConnectionPool(host=‘huggingface.co‘, port=443)
    Baumer工业相机堡盟工业相如何使用BGAPISDK通过两种不同的方法进行图像回调函数的使用(C#)
    Docker搭建一个Wordpress博客
    市场情绪:新高新低指标(NHNL)
  • 原文地址:https://blog.csdn.net/qq_24649627/article/details/125218749