Skip to content

4 李群和李代数 ​

在SLAM中,除了表示外,还需要对其进行估计和优化。因为在SLAM中位姿是未知的,需要解决什么样的相机位姿最符合当前观测数据这样的问题。一种典型的方式是构建成一个优化问题,求解最优的R,T,使得误差最小化。

旋转矩阵自身带有约束(正交且行列式为1),作为优化变量时会引入额外的约束,使优化变得困难。通过李群-李代数间的转换关系,希望把位姿估计变成无约束的优化问题,简化求解方式。

4.1 李群和李代数基础 ​

特殊正交群:

SO(n)={R∈Rn×n|RR⊤=I,det(R)=1}

特殊欧氏群:

SE(3)={T=[RT0⊤1]∈R4×4|R∈SO(3),T∈R3}

旋转矩阵和变换矩阵对于加法不封闭,但是对于乘法封闭。乘法对应着旋转或变换的复合。

4.1.1 群 ​

群是一种集合加上一种运算的代数结构,满足:

  • 封闭性
  • 结合律
  • 幺元
  • 逆

旋转矩阵集合和矩阵乘法构成群,变换矩阵和矩阵乘法也构成群。

矩阵中常见的群:

  • 一般线性群 GL(n) n×n的可逆矩阵
  • 特殊正交群
  • 特殊欧氏群

李群是指具有连续(光滑)性质的群,像整数群那样离散的群没有连续性质,不是李群。特殊正交群和特殊欧氏群在实数空间上是连续的,都是李群。能够直观想象一个刚体连续在空间中运动。

4.1.2 李代数的引出 ​

考虑任意旋转矩阵 R 满足:

RR⊤=I

R 是某个相机的旋转,随时间连续变化,即为时间的函数 R(t):

R(t)R(t)⊤=I

两边对时间求导,得到:

R˙(t)R(t)⊤+R(t)R˙(t)⊤=0R˙(t)R(t)⊤=−[R˙(t)R(t)⊤]⊤

可以看出, R˙(t)R(t)⊤ 是一个反对称矩阵。同理,对于任意反对称矩阵,也可以找到与之对应的向量,用 ∨ 表示:

R˙(t)R(t)⊤=ϕ(t)∧R˙(t)=ϕ(t)∧R(t)

设 t0=0 ,并设此时旋转矩阵为 R(0)=I 。按照导数定义,可以把 R(t) 在0附近进行一阶泰勒展开:

R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)∧t

ϕ 反映了 R 的导数性质,称它在 SO(3) 原点附近的正切空间。同时在 t0 附近,设 ϕ 保持为常数 ϕ(t0)=ϕ0 ,有:

R˙(t)=ϕ(t0)∧R(t)=ϕ0∧R(t)

上式是一个关于 R 的微分方程,且知道初始值 R(0)=I ,解得:

R(t)=exp⁡(ϕ0∧t)

不过,由于做了一定的假设,故只在 t=0 附近有效。旋转矩阵通过指数关系与另一个反对称矩阵发生了联系。

4.1.3 李代数的定义 ​

每个李群都有与之对应的李代数。李代数描述了李群的局部性质。通用的李代数的定义如下:

李代数由一个集合 V ,一个数域 F 和一个二元运算(李括号) [,] 。若满足:

  • 封闭性:∀X,Y∈V,[X,Y]∈V

  • 双线性:∀X,Y,Z∈V,a,b∈F,

    [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]
  • 自反性:∀X∈V,[X,X]=0

  • Jacobi等价:∀X,Y,Z∈V,

    [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0

李括号表达了两个元素的差异。它不要求结合律,而要求元素和自己做李括号之后为零的性质。

三维空间中定义的叉积是一种李括号, g=(R3,R,×) 构成一个李代数。

4.1.4 李代数 so(3) ​

之前提到的 ϕ ,事实上是一种李代数。SO(3) 对应的李代数是定义在 R3 上的向量,记作 ϕ 。每个 ϕ 都可以生成一个反对称矩阵 Φ 。

在此定义下,两个向量 ϕ1,ϕ2 的李括号为:

[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨

so(3)的元素是3维向量或者3维反对称矩阵:

so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}

so(3)是一个由三维向量组成的集合,每个向量对应到一个反对称矩阵,可以表达旋转矩阵的导数。它与 SO(3)的关系由指数映射给定:

R=exp⁡(ϕ∧)

4.1.5 李代数 se(3) ​

对于 SE(3) ,也有相应的李代数 se(3) ,是一个6维向量:前3维为平移,后3维为旋转。

se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧ρ0⊤0]∈R4×4}

此处拓展了^的含义。

李代数 se(3) 也有类似的李括号:

[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨

4.2 指数与对数映射 ​

4.2.1 SO(3)上的指数映射 ​

计算exp⁡(ϕ∧)

通过泰勒展开写出,即:

exp⁡(ϕ∧)=∑n=0∞1n!(ϕ∧)n

令ϕ=θa,这里a为长度为1的方向向量。有以下两条性质:

  • a∧a∧=aa⊤−I
  • a∧a∧a∧=−a∧

推导得到:

exp⁡(ϕ∧)=cos⁡θI+(1−cos⁡θ)aa⊤+sin⁡θa∧

此公式和罗德里格斯公式如出一辙。这表明,so(3) 实际上就是由所谓的旋转向量组成的空间

定义对数映射,也可以把 SO(3) 中的元素对应到 so(3) 中

指数映射只是一个满射,可能存在多个 so(3) 中的元素对应到同一个 SO(3)。至少对于旋转角 θ,多转一圈和没有多转对于旋转矩阵是没有区别的。如果把旋转角度固定在 ±π,李群和李代数是一一对应的。

4.2.2 SE(3)上的指数映射 ​

exp⁡(ξ∧)=[∑n=0∞1n!(ϕ∧)n∑n=0∞1(n+1)!(ϕ∧)nρ0⊤1]=[RJρ0⊤1]=T

其中,

J=sin⁡θθI+(1−sin⁡θθ)aa⊤+1−cos⁡θθa∧

附:J→R

R=∑n=0∞1n!(ϕ∧)n=∑n=1∞1n!(ϕ∧)n+I=∑n=0∞1(n+1)!(ϕ∧)n+1+I=ϕ∧∑n=0∞1(n+1)!(ϕ∧)n+I=ϕ∧J+I=sin⁡θa∧+(1−cos⁡θ)a∧a∧

由于 ϕ∧ 不是满秩矩阵,所以反过来不行

Motion of rigid body
Figure 1: 李群和李代数的关系.

4.3 BCH公式与扰动模型 ​

4.3.1 BCH公式与近似形式 ​

BCH公式:

ln⁡(exp⁡(A)exp⁡(B))=A+B+12[A,B]+112[A,[A,B]]−112[B,[A,B]]+...

当处理2个矩阵指数之积时,产生一些由李括号组成的余项。当ϕ1或ϕ2为小量时,二次以上的项都可以被忽略掉。BCH有线性近似表达:

ln⁡(exp⁡(ϕ1∧)exp⁡(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2ϕ1≈0Jr(ϕ1)−1ϕ2+ϕ1ϕ2≈0

对一个旋转矩阵左乘一个微小旋转矩阵,可以近似看作在原有的李代数加上一项。注意左乘近似和右乘近似。

Jl=J=sin⁡θθI+(1−sin⁡θθ)aa⊤+1−cos⁡θθa∧Jl−1=θ2cot⁡θ2I+(1−θ2cot⁡θ2)aa⊤−θ2a∧Jr(ϕ)=Jl(−ϕ)

BCH近似的意义:

exp⁡(Δϕ∧)exp⁡(ϕ∧)=exp⁡((Jl−1(ϕ)Δϕ+ϕ)∧)exp⁡((ϕ+Δϕ)∧)=exp⁡((JlΔϕ)∧)exp⁡(ϕ∧)=exp⁡(ϕ∧)exp⁡((JrΔϕ)∧)

对于 SE(3),有类似的公式,其中近似雅可比不同。

J

4.3.2 SO(3)李代数上的求导 ​

对于李代数求导有很强的实际背景。不妨设小robot在某个时刻的位姿为 T,它观察到了一个世界坐标位于 p 的点,产生了一个观测数据 z。由坐标变换关系:

z=Tp+w

由于观测噪声 w 的存在,z 不可能精确满足 z=Tp 的关系。通常会计算立项的观测与实际数据的误差:

e=z−Tp

假设一共有 N 个这样的路标点和观测,就有 N 个上式。对小robot的位姿估计,相当于寻找一个最优的 T,使得整体误差最小化:

minTJ(T)=∑i=1N||zi−Tpi||2

求解此问题需要计算目标函数 J 关于变换矩阵 T 的导数。我们经常会构建并讨论与位姿有关的函数,以调整当前的估计值。

使用李代数解决求导问题的思路恩分为2种:

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

4.3.3 李代数求导 ​

考虑一个空间点 p,对其进行旋转

∂(exp⁡(ϕ∧)p)∂ϕ=limδϕ→0exp⁡((ϕ+δϕ)∧)p−exp⁡(ϕ∧)pδϕ=limδϕ→0exp⁡((Jlδϕ)∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pδϕ≈limδϕ→0(I+(Jlδϕ)∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pδϕ=limδϕ→0(Jlδϕ)∧exp⁡(ϕ∧)pδϕ=limδϕ→0−(exp⁡(ϕ∧)p)∧Jlδϕ∧δϕ=−(Rp)∧Jl

其中第2行 BCH 线性近似,第3行泰勒展开舍去高阶项后的近似,第4-第5行将反对称符号看作叉积,交换之后变号。

4.3.4 扰动模型 ​

另一种求导方式是对 R 进行一次扰动 ΔR,可左乘也可以右乘。以左扰动为例,设左扰动 ΔR 对应的李代数为 φ。对 φ 求导:

∂Rp∂φ=limφ→0exp⁡(φ∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pφ≈limφ→0(I+φ∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pφ=limφ→0φ∧Rpφ=limφ→0−(Rp)∧φφ=−(Rp)∧

设右扰动 ΔR 对应的李代数为 φ:

∂Rp∂φ=limφ→0exp⁡(ϕ∧)exp⁡(φ∧)p−exp⁡(ϕ∧)pφ≈limφ→0exp⁡(ϕ∧)(I+φ∧)p−exp⁡(ϕ∧)pφ=limφ→0Rφ∧pφ=limφ→0−Rp∧φφ=−Rp∧

4.3.5 SE(3) 上的李代数求导 ​

假设某空间点 p 经过一次变换 T (对应李代数为 ξ),得到 Tp (空间点是齐次坐标的形式)。现在给 T 一个左乘扰动,ΔT=exp⁡(δξ∧) ,设扰动项的李代数为 δξ=[δρ,δϕ]⊤ ,则:

∂Tp∂δξ=limδξ→0exp⁡(δξ∧)exp⁡(ξ∧)p−exp⁡(ξ∧)pδξ=limδξ→0(I+δξ∧)exp⁡(ξ∧)p−exp⁡(ξ∧)pδξ=limδξ→0δξ∧exp⁡(ξ∧)pδξ=limδξ→0[δϕ∧δρ0T0][Rp+T1]δξ=limδξ→0[δϕ∧(Rp+T)+δρ0T][δρ,δϕ]T=[I−(Rp+T)∧0T0T]=def(Tp)⊙.

将最后的结果定义成算符 ⊙:将一个齐次的空间坐标点变换成一个 4x6 的矩阵,需要解释下矩阵求导的规则:

d[ab]d[xy]=(d[a,b]Td[xy])T=[dadxdbdxdadydbdy]T

右扰动如下:

∂Tp∂δξ=limδξ→0exp⁡(ξ∧)exp⁡(δξ∧)p−exp⁡(ξ∧)pδξ=limδξ→0exp⁡(ξ∧)(I+δξ∧)p−exp⁡(ξ∧)pδξ=limδξ→0exp⁡(ξ∧)δξ∧pδξ=limδξ→0[RT0T1][δϕ∧δρ0T0]pδξ=limδξ→0[Rδϕ∧p(0:3)+Rδρ0T][δρ,δϕ]T=[R−Rp(0:3)∧0T0T].

4.4.2 评估轨迹的误差 ​

实际工程中经常需要评估一个算法的估计轨迹与真实轨迹的差异来评价算法的精度。真实轨迹往往通过某些更高精度的系统获得,而估计的轨迹则是由待评价的算法计算得到的。

误差指标可以有很多种,常见的有绝对轨迹误差 ATE:

ATEall=1N∑i=1N||log⁡(Tgt,i−1Testi,i)∨||22

这实际上是每个位姿李代数的均方根误差 RMSE 。这种误差可以刻画两条轨迹的旋转和平移误差。

也有文献仅考虑平移误差,因为从整条轨迹上看,旋转出现误差后,随后的轨迹在平移上也会出现误差。定义绝对平移误差:

ATEtrans=1N∑i=1N||trans(Tgt,i−1Testi,i)||22

除此,也可以定义相对的误差。例如,考虑 i 时刻到 i+Δt 时刻的运动,那相对位姿误差 RPE 可定义为:

RPEall=1N−Δt∑i=1N−Δt||log⁡((Tgt,i−1Tgt,i+Δt)−1(Testi,i−1Testi,i+Δt))∨||22

同样的,也可以只取平移部分。

RPEtrans=1N−Δt∑i=1N−Δt||trans((Tgt,i−1Tgt,i+Δt)−1(Testi,i−1Testi,i+Δt))||22

4.5* 相似变换群与李代数 ​

在单目视觉中使用相似变换群 Sim(3),以及对应的李代数 sim(3) 。如果你只对双目 SLAM 或 RGBD-SLAM 感兴趣,可以跳过本节。

单目具有尺度不确定性,如果在单目 SLAM 中使用 SE(3) 表示位姿,那 么由于尺度不确定性与尺度漂移,整个 SLAM 过程中的尺度会发生变化,这在 SE(3) 中未能体现出来。因此,在单目情况下我们一般会显式地把尺度因子表达出来。用数学语言来说,对于位于空间的点 p ,在相机坐标系下要经过一个相似变换,而非欧氏变换:

p′=[sRT0⊤1]p=sRp+T

在相似变换中,我们把尺度 s 表达了出来。它同时作用在 p 的三个坐标之上,对 p 进行了一次缩放。与 SO(3) 、SE(3) 相似,相似变换亦对矩阵乘法构成群,称为相似变换群 Sim(3) :

Sim(3)={S=[sRT0⊤1]∈R4×4}

同样地, Sim(3) 也有对应的李代数、指数映射、对数映射等等。李代数 sim(3) 元素是一个七维向量 ζ 。它的前六维与 se(3) 相同,最后多了一项 σ。

sim(3)={ζ|ζ=[ρϕσ]∈R7,ζ∧=[σI+ϕ∧ρ0⊤0]∈R4×4}

它比 se(3) 多了一项 σ 。关联 Sim(3) 和 sim(3) 的仍是指数映射和对数映射。指数映射为:

exp⁡(ζ∧)=[eσexp⁡(ϕ∧)Jsρ0⊤1]Js=eσ−1σI+σeσsin⁡θ+(1−eσcos⁡θ)θσ2+θ2a∧+((eσcos⁡θ−1)σ+(eσsin⁡θ)θσ2+θ2)a∧a∧

通过指数映射,我们能够找到李代数与李群的关系。对于李代数元素 ζ ,它与李群的对应关系为:

s=eσ,R=exp⁡(ϕ∧),T=Jsρ

旋转部分和 SO(3) 是一致的。平移部分,在 se(3) 中需要乘一个雅可比,而相似变换的雅可比更复杂一些。对于尺度因子,可以看到李群中的 s 即为李代数中 σ 的指数函数。

Sim(3) 的 BCH 近似与 SE(3) 是类似的。我们可以讨论一个点 p 经过相似变换 Sp 后,相对于 S 的导数。同样的,存在微分模型和扰动模型两种方式,而扰动模型较为简单。我们省略推导过程,直接给出扰动模型的结果。设给予 Sp 左侧一个小扰动 exp⁡(ζ∧) ,并求 Sp 对于扰动的导数。因为 Sp 四维的齐次坐标, ζ 是七维向量,该导数应该是 4×7 的雅可比。为了方便起见,记 Sp 的前三维组成向量 q ,那么:

∂Sp∂ζ=[I−q∧q0⊤0⊤0]

4.6 习题 ​

  1. 证明
Rp∧R⊤=(Rp)∧

pf:

Rp∧R⊤=(Rp)∧⟺Rp∧=(Rp)∧R⟺∀u∈R3,Rp∧u=(Rp)∧Ru⟺∀u∈R3,R(p×u)=(Rp)×(Ru)

根据向量叉乘的旋转变换不变性,可知上式成立。

⼏何角度来理解:两个向量 v,u,其叉乘得到⼀个与 v,u 两者垂直的三维向量 (v×u),将这三个向量都经过同⼀个旋转,它们的相对位姿和模长都不会改变。

  1. 证明
Rexp⁡(p∧)R⊤=exp⁡[(Rp)∧]

该式称为 SO(3) 上的伴随性质。

pf:Rexp⁡(p∧)R⊤=R(I+δp∧+12!(δp∧)2+...)R⊤=I+Rδp∧R⊤+12!R(δp∧)2R⊤+...=I+(Rδp)∧+12![R(δp∧)R⊤](R(δp∧)R⊤)+...=exp⁡[(Rp)∧]

因此,有如下公式,在预积分中大放异彩(流形的交换律):

exp⁡(ϕ→)R=Rexp⁡(R⊤ϕ→)

Released under the MIT License.