小言_互联网的博客

视觉SLAM笔记(15) 李群与李代数

397人阅读  评论(0)


1. 前言

之前介绍了三维世界中刚体运动的描述方式,包括旋转矩阵、旋转向量、欧拉角、四元数等若干种方式

重点介绍了旋转的表示,但是在 SLAM 中,除了表示之外,还要对它们进行估计和优化
因为在 SLAM 中位姿是未知的,而需要解决 什么样的相机位姿最符合当前观测数据 这样的问题

一种典型的方式是把它构建成一个优化问题,求解最优的 R,t,使得误差最小化
如前所言,旋转矩阵自身是带有约束的(正交且行列式为 1)
它们作为优化变量时,会引入额外的约束,使优化变得困难

通过 李群——李代数 间的转换关系,希望把位姿估计变成无约束的优化问题,简化求解方式


2. 基础

视觉SLAM笔记(7) 欧氏变换 介绍了 旋转矩阵的定义
视觉SLAM笔记(8) 齐次坐标 介绍了 变换矩阵的定义

当时,三维旋转矩阵构成了特殊正交群 S O ( 3 ) SO(3)


而变换矩阵构成了特殊欧氏群 S E ( 3 ) SE(3)

不过,当时并未详细解释群的含义
细心一些可能会注意到,旋转矩阵也好,变换矩阵也好, 它们对加法是不封闭的

换句话说,对于任意两个旋转矩阵 R1,R2,它们按照矩阵加法的定义,和不再是一个旋转矩阵:

对于变换矩阵亦是如此

发现,这两种矩阵并没有良好定义的加法,相对的,它们只有一种较好的运算:乘法
S O ( 3 ) SO(3) S E ( 3 ) SE(3) 关于乘法是封闭的:

乘法对应着旋转或变换的复合——两个旋转矩阵相乘表示做了两次旋转


3. 群

群(Group)是 一种集合 加上 一种运算 的代数结构
把集合记作 A,运算记作 ·,那么群可以记作 G = (A, ·)

群要求这个运算满足以下几个条件:

∀ :全称量词,即存在任意的意思
∃: 存在量词,即存在的意思

可以记作“封结幺逆

可以验证,旋转矩阵集合和矩阵乘法构成群,同样变换矩阵和矩阵乘法也构成群
因此才能称它们为旋转矩阵群和变换矩阵群

其他常见的群包括整数的加法 (Z, +),去掉 0 后的有理数的乘法(幺元为 1) (Q, ·) 等等

矩阵中常见的群有:

  • 一般线性群 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) 对于相机姿态估计尤其重要,主要讨论这两个李群

下面,先从较简单的 SO(3) 开始讨论,将发现每个李群都有对应的李代数
首先引出 SO(3) 上面的李代数 so(3)


4. 李代数的引出

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

现在,R 是某个相机的旋转,它会随时间连续地变化,即为时间的函数: R(t)
由于它仍是旋转矩阵,有:

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

整理得:

可以看出 R ˙ \dot{R} (t) R R (t)T 是一个反对称矩阵

回忆之前,视觉SLAM笔记(6) 坐标系介绍外积时,引入了 ^ 符号,将一个向量变成了反对称矩阵

同理,对于任意反对称矩阵,亦能找到一个与之对应的向量
把这个运算用符号 ˇ 表示:

于是,由于 R ˙ \dot{R} (t) R R (t)T 是一个反对称矩阵,可以找到一个三维向量 ϕ ( t ) ϕ(t) ∈ R3 与之对应
于是有:

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

可以看到,每对旋转矩阵求一次导数,只需左乘一个 ϕ^(t) 矩阵即可

为方便讨论,设 t0 = 0,并设此时旋转矩阵为 R R (0) = I I

关于泰勒展开式:

按照导数定义,可以把 R R (t) 在 0 附近进行一阶泰勒展开:


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

同时在 t0 附近,设 ϕ ϕ 保持为常数 ϕ ϕ (t0) = ϕ ϕ 0

那么根据式:

则有:

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


exp:高等数学里以自然常数e为底的指数函数


5. 李代数的定义

每个李群都有与之对应的李代数
李代数描述了李群的局部性质

通用的李代数的定义如下:
李代数由一个集合 V,一个数域 F 和一个二元运算 [, ] 组成
如果它们满足以下几条性质,称 (V, F, [, ]) 为一个李代数,记作 g g

自反性是指自己与自己的运算为零

其中二元运算被称为李括号
从表面上来看,李代数所需要的性质还是挺多的
相比于群中的较为简单的二元运算,李括号表达了两个元素的差异
它不要求结合律,而要求元素和自己做李括号之后为零的性质

作为例子,三维向量 R3 上定义的叉积(外积) × 是一种李括号
因此 g g = (R3, R, ×) 构成了一个李代数


6. 李代数so(3)

之前提到的 ϕ ϕ ,事实上是一种李代数
SO(3) 对应的李代数是定义在 R3上的向量,记作 ϕ ϕ

根据前面的推导,每个 ϕ ϕ 都可以生成一个反对称矩阵:

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

由于 ϕ ϕ 与反对称矩阵关系很紧密,在不引起歧义的情况下
就说 so(3) 的元素是 3 维向量或者 3 维反对称矩阵,不加区别:

至此,已清楚了 so(3) 的内容
它们是一个由三维向量组成的集合,每个向量对应到一个反对称矩阵,可以表达旋转矩阵的导数

它与 SO(3) 的关系由指数映射给定:


7. 李代数se(3)

对于 SE(3),它也有对应的李代数 se(3)
与 so(3) 相似, se(3) 位于 R6 空间中:

把每个 se(3) 元素记作 ξ ξ ,它是一个六维向量
前三维为平移,记作 ρ ρ
后三维为旋转,记作 ϕ ϕ ,实质上是 so(3) 元素

同时,拓展了 ^ 符号的含义
在 se(3) 中,同样使用 ^ 符号,将一个六维向量转换成四维矩阵,但这里不再表示反对称:

仍使用 ^ 和 ˇ 符号来指代“从向量到矩阵”和“从矩阵到向量”的关系
以保持和 so(3) 上的一致性

可以简单地把 se(3) 理解成“由一个平移加上一个 so(3) 元素构成的向量”(尽管这里的 ρ 还不直接是平移)
同样,李代数 se(3) 亦有类似于 so(3) 的李括号:


参考:

《视觉SLAM十四讲》


相关推荐:

视觉SLAM笔记(14) Eigen几何模块
视觉SLAM笔记(13) 空间变换
视觉SLAM笔记(12) 四元数
视觉SLAM笔记(11) 欧拉角
视觉SLAM笔记(10) 旋转向量


谢谢!


转载:https://blog.csdn.net/qq_32618327/article/details/101599772
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场