视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义、指数和对数映射

基础:

在SLAM中的旋转,除了表示之外,我们还要对它们进行估计和优化。因为在SLAM中位姿是未知的,而我们需要解决什么样的相机位姿最符合当前观测数据这样的问题。一种典型的方式是把它构建成一个优化问题,求解最优的R, t,使得误差最小化。旋转矩阵自身是带有约束的(正交且行列式为1)。它们作为优化变量时,会引入额外的约束,使优化变得困难。通过李群——李代数间的转换关系,我们希望把位姿估计变成无约束的优化问题,简化求解方式。

三维旋转矩阵构成了特殊正交群 SO(3),而变换矩阵构成了特殊欧氏群 SE(3)。

旋转矩阵和变换矩阵对加法是不封闭的。换句话说,对于任意两个旋转矩阵 R1, R2,按照矩阵加法的定义,它们的和不再是一个旋转矩阵,对于变换矩阵亦是如此。

这两种矩阵并没有良好定义的加法,相对的,它们只有一种较好的运算:乘法。SO(3) 和SE(3)关于乘法是封闭的: R1R2 ∈ SO(3), T1T2 ∈ SE(3).

乘法对应着旋转或变换的复合——两个旋转矩阵相乘表示做了两次旋转。这种只有一个运算的集合叫做群。

群(Group)是一种集合加上一种运算的代数结构。我们把集合记作A,运算记作 · ,

那么群可以记作 G = (A, ·)。群要求这个运算满足以下几个条件:

1. 封闭性: ∀a1, a2 ∈ A, a1 · a2 ∈ A.

2. 结合律: ∀a1, a2, a3 ∈ A, (a1 · a2) · a3 = a1 · (a2 · a3).

3. 幺元: ∃a0 ∈ A, s.t. ∀a ∈ A, a0 · a = a · a0 = a.

4. 逆: ∀a ∈ A, ∃a−1 ∈ A, s.t. a · a−1 = a0.

可以记作“封结幺逆”,谐音凤姐咬你。

旋转矩阵集合和矩阵乘法构成群,同样变换矩阵和矩阵乘法也构成群。其他常见的群包括整数的加法 (Z, +),去掉0后的有理数的乘法(幺元为 1)(Q\0, ·) 等等。矩阵中常见的群有:

一般线性群 GL(n) 指 n × n 的可逆矩阵,它们对矩阵乘法成群。

特殊正交群 SO(n) 也就是所谓的旋转矩阵群,其中 SO(2) 和 SO(3) 最为常见。

特殊欧氏群 SE(n) 也就是前面提到的 n 维欧氏变换,如 SE(2) 和 SE(3)。

群结构保证了在群上的运算具有良好的性质,而群论则是研究群的各种结构和性质的理论,可以参考任意一本近世代数教材。

李群是指具有连续(光滑)性质的群。像整数群Z那样离散的群没有连续性质,所以不是李群。而SO(n)和SE(n),它们在实数空间上是连续的。直观地想象一个刚体能够连续地在空间中运动,所以它们都是李群。SO(3)和SE(3)对于相机姿态估计尤其重要。

李代数

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

假设R是某个相机的旋转,它会随时间连续地变化,即为时间的函数:R(t)。有:

等式两边对时间求导,得到:

整理得:

可以看出:

是一个反对称矩阵。

而叉积引入了∧符号,将一个向量变成了反对称矩阵。同理,对于任意反对称矩阵,我们亦能找到一个与之对应的向量。把这个运算用符号∨表示。如下:

由于

是一个反对称矩阵,我们可以找到一个三维向量 ϕ(t) ∈ R3 与之对应:

等式两边右乘 R(t),由于R为正交阵,有:

每对旋转矩阵求一次导数,只需左乘一个 ϕ(t)∧矩阵(反对称矩阵)即可。

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

ϕ反映了R的导数性质,故称它在SO(3)原点附近的正切空间(Tangent Space)上。

同时在 t0 附近,设ϕ(t0) = ϕ0,有

求解关于R的微分方程,有初始值 R(0) = I,得:

说明在 t = 0 附近,旋转矩阵可以由 exp (ϕ0∧t)计算出来,即旋转矩阵 R 与另一个反对称矩阵 ϕ0∧t 通过指数关系发生了联系。

有两个问题:

1. 给定某时刻的R,我们就能求得一个ϕ,它描述了R在局部的导数关系。ϕ正是对应到 SO(3) 上的李代数so(3);

2. 给定某个向量 ϕ 时,矩阵指数 exp(ϕ∧) 如何计算?反之,给定R时,有无相反的运算来计算 ϕ?这正是李群与李代数间的指数/对数映射,即李代数(ϕ)到李群(R)是指数关系,而李群(R)到李代数(ϕ)是对数关系。

定义

每个李群都有与之对应的李代数。李代数描述了李群的局部性质。李代数由一个集合V,一个数域 F 和一个二元运算 [, ] 组成,满足以下几条性质:

1.封闭性

2.双线性

3.自反性(指自己与自己的运算为零)

4.雅可比等价

其中二元运算被称为李括号。相比于群中的较为简单的二元运算,李括号表达了两个元素的差异。它不要求结合律,而要求元素和自己做李括号之后为零的性质。三维向量R3上定义的叉积×是一种李括号,因此 g=(R3, R, ×) 构成了一个李代数。

李代数so(3)

ϕ是一种李代数。SO(3)对应的李代数是定义在R3上的向量,我们记作ϕ。每个ϕ都可以生成一个反对称矩阵:

在此定义下,两个向量 ϕ1, ϕ2 的李括号为: [ϕ1, ϕ2] = (Φ1Φ2 − Φ2Φ1) ∨

向量ϕ与反对称矩阵是一一对应的,所以就说so(3) 的元素是三维向量或者三维反对称矩阵,不加区别。

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

李代数se(3)

与so(3)相似,se(3)位于R6空间中。

把每个se(3)元素记作ξ,它是一个六维向量。前三维为平移,记作ρ;后三维为旋转,记作ϕ,实质上是so(3)元素。同时拓展了∧符号的含义,在se(3)中,同样使用∧符号,将一个六维向量转换成四维矩阵,但这里不再表示反对称。

即仍使用∧和∨符号来指代“从向量到矩阵”和“从矩阵到向量”的关系,以保持和so(3)的一致性。可以简单地把se(3)理解成“由一个平移加上一个so(3)元素构成的向量”。

指数与对数映射

SO(3)上的指数映射

exp(ϕ∧)如何计算?它是一个矩阵的指数,在李群和李代数中,称为指数映射(Exponential Map)。

任意矩阵的指数映射可以写成一个泰勒展开,但是只有在收敛的情况下才会有结果,其结果仍是一个矩阵。

同样地,对so(3)中任意一元素ϕ,也定义它的指数映射:

由于ϕ是三维向量,我定义它的模长和它的方向,分别记作θ和a,于是有 ϕ = θa。这里a是一个长度为1的方向向量。首先,对于a∧,有以下两条性质:

这提供了处理 a∧高阶项的方法。利用这两个性质,可以得到一个式子:

这和罗德里格斯公式如出一辄。

这表明,so(3)实际上就是由旋转向量组成的空间,而指数映射即罗德里格斯公式。通过这,我们把so(3)中任意一个向量对应到了一个位于SO(3)中的旋转矩阵。反之,如果定义对数映射,我们也能把SO(3)中的元素对应到so(3)中。但没必要泰勒展开去计算对数映射,可以根据旋转矩阵计算对应的李代数,利用迹的性质分别求解转角和转轴(分别对应模长θ和方向a)。

指数映射是一个满射,并不是单射。这意味着每个SO(3)中的元素,都可以找到一个so(3)元素与之对应;但是可能存在多个so(3)中的元素,对应到同一个SO(3)。即旋转矩阵可以找到一个旋转向量对应,而多个旋转向量(旋转角有周期性)可以对应同一个旋转矩阵。比如对于旋转角θ,多转360度和没有转是一样的。如果我们把旋转角度固定在±π之间,那么李群和李代数元素是一一对应的。

SO(3)与so(3)的结论和前面讲的旋转向量与旋转矩阵很相似,而指数映射即是罗德里格斯公式。旋转矩阵的导数可以由旋转向量指定,指导着如何在旋转矩阵中进行微积分运算。

SE(3)上的指数映射

se(3) 上的指数映射形式如下:

照着so(3)上的做法推导,把exp进行泰勒展开推导此式,得

该式与罗德里格斯有些相似。平移部分经过指数映射之后,发生了一次以J为系数矩阵的线性变换。

李群、李代数的定义与相互的转换关系,总结如图所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值