视觉SLAM十四讲 第四讲 李代数和李群

1. 什么是群

群(group)是一种集合加上一种运算的代数结构。集合记作A,运算记作 · ,那么群可以记作 G = ( A , ⋅ ) G = (A, \cdot ) G=(A,)。群需要满足四个条件(封结幺逆凤姐要你

  1. 闭性: ∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A \forall a_1,a_2 \in A, a_1 \cdot a_2 \in A a1,a2A,a1a2A
  2. 合律: ∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) \forall a_1,a_2,a_3 \in A, (a_1 \cdot a_2) \cdot a_3 = a_1 \cdot (a_2 \cdot a_3) a1,a2,a3A,(a1a2)a3=a1(a2a3)
  3. 元: ∃ a 0 ∈ A , s . t . ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a \exists a_0 \in A, s.t. \forall a \in A, a_0 \cdot a = a \cdot a_0 = a a0A,s.t.aA,a0a=aa0=a
  4. ∀ a ∈ A , ∃ a − 1 ∈ A , s . t .    a ⋅ a − 1 = a 0 \forall a \in A, \exists a^{-1} \in A, s.t. \ \ a \cdot a^{-1} = a_0 aA,a1A,s.t.  aa1=a0

2. 什么是李群

李群是指具有连续(光滑)性质的群。像整数群 Z \mathbb{Z} Z那样离散的群没有连续性质,所以不是李群。而SO(n)和SE(n)在实数空间上是连续的。我们能够直观地想想一个刚体能够在空间中连续地运动,所以它们都是李群。

关键是连续的群。自己可以简单记住特殊正交群SO(3)、旋转矩阵是李群,旋转向量是李代数

3. 什么是李代数

每个李群都有预支对应的李代数。李代数描述了李群的局部性质,准确地说,是单位元附近的正切空间。一般的李代数定义如下:

李代数由一个集合 V \mathbb{V} V、一个数域 F \mathbb{F} F和一个二元运算 [ , ] [,] [,]组成,这个二元运算被称为李括号。 对于李代数 g = ( V , F , [ , ] ) g = (\mathbb{V},\mathbb{F},[,]) g=(V,F,[,]),需要满足四条性质(封双自雅风霜之牙

  1. 闭性: ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y \in \mathbb{V}, [X,Y] \in \mathbb{V} X,YV,[X,Y]V
  2. 线性: ∀ X , Y , Z ∈ V ,    a , b ∈ F \forall X,Y,Z \in \mathbb{V}, \ \ a,b \in \mathbb{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 ,    [ X , X ] = 0 \forall X \in \mathbb{V}, \ \ [X,X] = 0 XV,  [X,X]=0
  4. 克比等价: ∀ X , Y , Z ∈ V ,     [ X , [ Y , Z ] ] + [ Z , [ X , Y ] ] + [ Y , [ Z , X ] ] = 0 \forall X,Y,Z \in \mathbb{V}, \ \ \ [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]] = 0 X,Y,ZV,   [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0

对于李括号[,],由如下性质: [ ϕ 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)
可以用这个性质证明雅克比等价。

4. 指数映射和对数映射

4.1 SO(3)

李代数的指数映射为李群。比如对于旋转向量A属于SO(3),对应的李代数 ϕ \phi ϕ,有指数映射:
R = e x p ( ϕ ∧ ) (4.1) R = exp(\phi^{\wedge}) \tag{4.1} R=exp(ϕ)(4.1)

指数映射怎么求解?可以根据以下思路进行推导(注重思路,帮助手推):

  1. 任意矩阵的指数映射都可以写成一个泰勒展开
  2. 将矩阵写成so(3)中的 ϕ ∧ \phi^{\wedge} ϕ形式
  3. phi是一个三维向量,可以写成角度乘以单位向量的形式 θ a , ∣ ∣ a ∣ ∣ = 1 \theta a, ||a|| = 1 θa,a=1
  4. 根据反对称矩阵的性质,可以推断出两条性质 a ∧ a ∧ = a a ⊤ − I (4.2) a^{\wedge}a^{\wedge}=aa^{\top} - I \tag{4.2} aa=aaI(4.2) a ∧ a ∧ a ∧ = − a ∧ (4.3) a^{\wedge}a^{\wedge}a^{\wedge}=-a^{\wedge} \tag{4.3} aaa=a(4.3)
  5. 把指数映射泰勒展开,凑cosine和sine的泰勒展开形式,就能得到罗德里格斯公式(罗德里格斯公式就是指数映射): R = e x p ( ϕ ∧ ) = e x p ( θ a ∧ ) = c o s θ I + ( 1 − c o s θ ) a a ⊤ + s i n θ a ∧ (4.4) R = exp(\phi^{\wedge})=exp(\theta a^{\wedge}) = cos\theta I + (1-cos\theta)aa^{\top}+sin\theta a^{\wedge} \tag{4.4} R=exp(ϕ)=exp(θa)=cosθI+(1cosθ)aa+sinθa(4.4)

每一个李代数元素都指数映射到唯一的李群元素,但是一个李群元素可能对应好几个李代数元素,比如旋转角加360度的效果是一样的。

4.2 SE(3)

类似的,也能推导处SE(3)上的指数映射:
T = e x p ( ξ ∧ ) = [ ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n ρ 0 ⊤ 1 ] = [ R J ρ 0 ⊤ 1 ] (4.5) \begin{aligned} T = exp(\xi^{\wedge}) &= \begin{bmatrix} \sum^\infty_{n=0}\frac{1}{n!}(\phi^{\wedge})^n & \sum^\infty_{n=0}\frac{1}{(n+1)!}(\phi^{\wedge})^n \rho \\ 0^\top & 1\\ \end{bmatrix} \\ &= \begin{bmatrix} R & J\rho \\ 0^\top & 1\\ \end{bmatrix} \end{aligned} \tag{4.5} T=exp(ξ)=[n=0n!1(ϕ)n0n=0(n+1)!1(ϕ)nρ1]=[R0Jρ1](4.5)

其中J也是可以通过展开后,凑cosine和sine的泰勒展开形式,得到J的表达式。J的表达式和罗德里格斯公式推导过程)类似,但不完全一样。
J   = d e f   ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n = s i n θ θ I + ( 1 − s i n θ θ ) a a ⊤ + 1 − c o s θ θ a ∧ (4.6) \begin{aligned} J\ &\overset{def}{=} \ \sum^\infty_{n=0}\frac{1}{(n+1)!}(\phi^{\wedge})^n \\ &= \frac{sin\theta}{\theta}I + (1 - \frac{sin\theta}{\theta})aa^\top + \frac{1-cos\theta}{\theta}a^\wedge \end{aligned} \tag{4.6} J =def n=0(n+1)!1(ϕ)n=θsinθI+(1θsinθ)aa+θ1cosθa(4.6)

4.3 对数映射

对于对数映射,不太希望使用推导的方式,可以用等式两边求迹,然后求R的特征值为1的特征向量来求。

5. 李代数求导与扰动模型

使用李代数的一大动机是进行优化,而在优化过程中导数是非常必要的信息。我们现在知道了李代数so(3)和SO(3)之间是指数映射关系。那么李代数的加法是否等于李群的乘积呢, e x p ( a + b ) = e x p ( a ) e x p ( b ) exp(a+b)=exp(a)exp(b) exp(a+b)=exp(a)exp(b)

答案是否定的,两个李代数指数映射的乘积的完整形式,由Baker-Campbell-Hausdorff公式(BCH公式)给出。BCH公式告诉我们,当处理两个矩阵指数之积时,它们会产生一些由李括号组成的余项。如果两个李代数其中之一为小量,那么小量二次以上的项都可以被忽略(在连续的运动中,旋转矩阵对应的李代数就是小量),此时,BCH拥有线性近似表达:
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) ∨ ≈ { J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2 , 当 ϕ 1 为 小 量 J r ( ϕ 1 ) − 1 ϕ 2 + ϕ 1 , 当 ϕ 2 为 小 量 (5.1) \begin{aligned} ln(exp(\phi^\wedge_1)exp(\phi^\wedge_2))^\lor \approx \begin{cases} J_l(\phi_2)^{-1}\phi_1 + \phi_2 , 当\phi_1为小量\\ J_r(\phi_1)^{-1}\phi_2 + \phi_1 , 当\phi_2为小量 \end{cases} \end{aligned} \tag{5.1} ln(exp(ϕ1)exp(ϕ2)){ Jl(ϕ2)1ϕ1+ϕ2,ϕ1Jr(ϕ1)1ϕ2+ϕ1,ϕ2(5.1)
左乘BCH近似雅可比 J l J_l Jl事实上就是式(4.6)的内容:
J l = s i n θ θ I + ( 1 − s i n θ θ ) a a ⊤ + 1 − c o s θ θ a ∧ (5.2) \begin{aligned} J_l = \frac{sin\theta}{\theta}I + (1 - \frac{sin\theta}{\theta})aa^\top + \frac{1-cos\theta}{\theta}a^\wedge \end{aligned} \tag{5.2} Jl=θsinθI+(1θsinθ)aa+θ1cosθa(5.2)
它的逆为(看书)。而右乘雅可比仅需要对自变量取负号即可:
J r ( ϕ ) = J l ( − ϕ ) (5.3) J_r(\phi)=J_l(-\phi) \tag{5.3} Jr(ϕ)=Jl(ϕ)(5.3)

如果将小量表示为 Δ ϕ \Delta \phi Δϕ,则乘法 → \rightarrow 加法的BCH近似可以表示为:
e x p ( Δ ϕ ∧ ) e x p ( ϕ ∧ ) = e x p ( ( ϕ + J l − 1 ( ϕ ) Δ ϕ ) ∧ ) (5.4) exp(\Delta\phi^\wedge)exp(\phi^\wedge) = exp((\phi + J^{-1}_l(\phi)\Delta\phi)^\wedge) \tag{5.4} exp(Δϕ)exp(ϕ)=exp((ϕ+Jl1(ϕ)Δϕ))(5.4)
反过来,加法 → \rightarrow 乘法的BCH近似可以表示为(记住这里没有逆的符号):
e x p ( ( ϕ + Δ ϕ ) ∧ ) = e x p ( ( J l Δ ϕ ) ∧ ) e x p ( ϕ ∧ ) = e x p ( ϕ ∧ ) e x p ( ( J r Δ ϕ ) ∧ ) (5.5) exp((\phi + \Delta \phi)^\wedge) = exp((J_l\Delta\phi)^\wedge)exp(\phi^\wedge) = exp(\phi^\wedge)exp((J_r\Delta\phi)^\wedge) \tag{5.5} exp((ϕ+Δϕ))=exp((JlΔϕ))exp(ϕ)=exp(ϕ)exp((JrΔϕ))(5.5)

5.1 李代数求导

前面提到,使用李代数的一大动机是为了优化,导数就很重要。比如要求解 ∑ i = 1 N ∣ ∣ z i − T p i ∣ ∣ 2 2 \sum^N_{i=1}||z_i-Tp_i||^2_2 i=1NziTpi22,这个时候就需要计算SE(3)T的导数。重点是,我们经常会构建与位姿有关的函数,然后讨论该函数关于位姿的导数,以调整当前的估计值。然而,SO(3)SE(3)没有定义良好的加法,所以可以利用李代数(加法到乘法的指数映射)和扰动模型来求解这个问题:

  1. 用李代数表示姿态,根据李代数加法求李代数求导(求导模型)
  2. 对李群左乘或右乘微小扰动,然后对该扰动求导(扰动模型)

李代数求导请看书P84,其中运用到了泰勒展开,反对称矩阵性质。对于李代数求导的结果 ∂ ( R p ) ∂ ϕ = ( − R p ) ∧ J l \frac{\partial(Rp)}{\partial\phi} = (-Rp)^\wedge J_l ϕ(Rp)=(Rp)Jl,仍然有复杂的J,我们不想计算他,所以可以使用扰动模型来求解。扰动模型求解中也运用到了泰勒展开和反对称矩阵性质,结果是: ∂ ( R p ) ∂ ϕ = ( − R p ) ∧ \frac{\partial(Rp)}{\partial\phi} = (-Rp)^\wedge ϕ(Rp)=(Rp)

6. 什么是Sophus

Sophus是一个李代数库,支持SO(2)SE(2)及Sim(3)的内容(求导等),是直接在Eigen的基础上开发的。

7. 未完善

关于相似变换Sim(3)的求导和扰动没有深入理解。
课后习题

猜你喜欢

转载自blog.csdn.net/CSSDCC/article/details/121859904
今日推荐