1.李群与李代数基础

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

其中特殊正交群SO(3)和特殊欧氏群SE(3),对加法不封闭,而对乘法封闭。则有:

群,是一种集合加上一种运算的代数结构,主要满足有:封闭性、结合律、幺元、逆等性质。而李群,则是指具有连续光滑性质的群。

对于李代数,考虑任意旋转矩阵 R,会随着时间变化而变化,即为时间的函数:R(t)。
则有:

通过对其时间的求导,可得到一个等式:

其中 为反对称矩阵,对于反对称矩阵而言,我们总能找到一个向量与之对应,对以上的反对称矩阵,我们记这个向量为 ,则有:

由于 R 为正交矩阵,则有

我们可以看到,每对旋转矩阵求一次导,只需左乘一个上述矩阵即可,设 to=0,且R(0)=I,通过一阶泰勒展开解上述微分方程,可以得到:

该方程说明了旋转矩阵R通过一个反对称矩阵通过指数关系发生了联系。

对于李代数而言,在不引起歧义的情况下,我们可以说李代数的元素是上述所提到的向量和反对称矩阵,而李代数so(3),(注意这里与SO(3)不同),则元素为三维向量和三维反对称矩阵,而se(3)的元素是六维向量和六维反对称矩阵,其表达方式为:

对于se(3)里面的p的三维向量,代表的是平移,但是含义与变换矩阵中的平移是不同的,这点需要特别注意,另外在se(3)李代数中,符号“ ^“仅仅表示向量到反对称矩阵,而是广泛的表达为从”向量到矩阵“。

2.指数与对数映射

上面我们提到了,它是一个矩阵的指数,在李群和李代数中,称为指数映射。通过一系列的泰勒展开计算,我们可以得到:

其中, 代表三维向量的模长,而a代表长度为1的方向向量。**通过上述公式可得,so(3)实际上就是所谓的旋转向量。通过这种指数映射,意味着SO(3)中的元素,都可以找到一个so(3)的元素与之对应,但是可能存在多个so(3)对应到同一个SO(3),毕竟so(3)在一定程度上就是由旋转向量组成的空间。**如果把旋转角度固定在 中,那么李群和李代数就是一一对应的了。

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

为什么要使用李代数呢?使用李代数的一大动机是用来进行优化,因为在从空间点到观测数据的转换时,总会有噪音的存在,优化机器人的位姿使得噪声最小。

对某个旋转矩阵R,对应的李代数为 ,当左乘一个微小的旋转 后,对应的李代数为 。那么在李群上我们得到的结果是 ,而在李代数上,根据BCH近似,我们得到的结果是 ,由此可以得到公式为:

而对于se(3)李代数而言,同样有类似的性质。

对于李代数求导问题,在SLAM中,我们要估计一个相机的位姿,该姿态是由李群上的SO(3)和SE(3)而来的。那么,假设某时刻摄像机的位姿为T,观察到了点 p,得到了观测数据z,那么有: z=Tp+w,其中w为观测误差。

为了使得实际值与观测值最大程度的接近,那么我们需要使噪声最小,而这个即是优化的过程,通过对转换矩阵 T 的求导,得到整体误差的最小化:

为了求解这个问题,我们经常会构建与位姿有关的函数,然后讨论该函数关于位姿的导数,以调整当前的估计值。因为变换矩阵只是单纯的李群,对加法不封闭,于是我们可以转换成李代数进行求导。因为李代数由向量组成,所以具有良好的加法运算。在求解李代数问题时,有俩种思路:

1.用李代数表示姿态,然后根据李代数加法来对李代数求导
2.对李群左乘或者右乘一个微小扰动,然后对该扰动求导,称为左扰动模型和右扰动模型。第一种对应到李代数的求导模型,第二种对应到扰动模型。

李代数求导模型

关于李代数求导,考虑到SO(3),假设对一个空间点 p 进行了旋转,得到了 Rp ,要计算旋转后点的坐标相对于旋转的导数,有:,但是对于李群而言对加法不封闭,所以该导数无法按照导数的定义进行计算。设 R 对应的李代数为 ,那么转而计算有:

于是,按照导数的定义,我们可以有:**=(雅克比矩阵)(其中推导省略),但是由于在这里我们需要计算雅克比矩阵,所以过程比较复杂,转而学习下面的扰动模型。

扰动模型(左乘)

在模型之前,有麦克劳林展开式有:

y = e x y=e^x y=ex运用麦克劳林展开式并舍弃余项: e x ≈ 1 + x + x 2 / 2 ! + x 3 / 3 ! + … … + x n / n ! e^x≈1+x+x^2/2!+x^3/3!+……+x^n/n! ex≈1+x+x2/2!+x3/3!+……+xn/n!

接着上述问题,另一种求导方式为,对R进行一次扰动 ,设左扰动对应的李代数为 ,对其进行求导有:

该式求导比上述简单:

最终得到结果省去了计算一个雅克比矩阵,这使扰动模型更加有用!!其中,第二步到第三步运用了麦克劳林展开式,舍去了高次项。从第四步到第五步,可以将反对称符号看做叉积,变换之后变号,从而求得结果!!

最后,这些模型的求解可以一个Sophus库进行协助求解!!!

SLAM学习——李群与李代数相关推荐

  1. Visual SLAM 笔记——李群和李代数详解

    李群和李代数 问题的引入 当我们估计出相机姿态[R,t][R, t][R,t]了以后,估计的结果和实际的相机姿态肯定会有一些不一致性,因而我们需要对估计出来的结果进行优化.优化方法一般都采用迭代优化的 ...

  2. 视觉SLAM基础——李群与李代数

    1. 定义 旋转矩阵构成了特殊正交群SO(3)SO(3)SO(3),齐次变换矩阵构成了特殊欧氏群SE(3)SE(3)SE(3),但是旋转矩阵和变换矩阵对于加法是不封闭的,也就是两个旋转矩阵的和不再是一 ...

  3. 从零开始一起学习SLAM | 为啥需要李群与李代数?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 很多刚刚接触SLAM的小伙伴在看到李群和李代数这部分的时候,都有点 ...

  4. 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机

    第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...

  5. 视觉slam十四讲 学习笔记-3(李群和李代数)

    第一次听没有怎么懂这一章节,后来又重新学习了一遍才弄懂了一点.我发现pdf教材一行一行抠细节全部看一遍还是能够理解的,很多推导和逻辑都比视频清晰很多. 目录 李群和李代数: 李群 : 李代数引出: 李 ...

  6. SLAM学习--------相机位姿表示-李群李代数

    slam 求解相机的位姿求解核心思想:将有约束的李群问题转换成无约束的李代数问题,然后使用高斯牛顿算法或者LM(列文伯格-马夸尔特法)求解. 人们找了很多以相机位姿为变量的误差函数,比如光度误差,重投 ...

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

    基础: 在SLAM中的旋转,除了表示之外,我们还要对它们进行估计和优化.因为在SLAM中位姿是未知的,而我们需要解决什么样的相机位姿最符合当前观测数据这样的问题.一种典型的方式是把它构建成一个优化问题 ...

  8. 视觉slam学习笔记以及课后习题《第三讲李群李代数》

    前言 这篇博客主要记录了我在深蓝学院视觉slam课程中的课后习题,因为是为了统计知识点来方便自己以后查阅,所以有部分知识可能不太严谨,如果给大家造成了困扰请见谅,大家发现了问题也可以私信或者评论给我及 ...

  9. 视觉SLAM十四讲学习笔记——第四讲--李群与李代数

    4.1李群与李代数基础 旋转矩阵和变换矩阵对加法是不封闭的.换句话说,对于任意两个旋转矩阵R1, R2,按照矩阵加法的定义,和不再是一个旋转矩阵. SO(3) 和 SE(3)对乘法是封闭的.两个旋转矩 ...

最新文章

  1. Linux实战案例(5)关闭Centos的防火墙
  2. 10分钟带你入门MATLAB
  3. 租赁mt4虚拟服务器,mt4服务器出租
  4. ubuntu安装portainer_Docker【二】:Docker管理工具Portainer
  5. 计算机专业中agp是什么意思,计算机中AGP是什么意思及其特性介绍
  6. java循环取出word table表格中所有的值
  7. 9-21 调试javaweb 数据库连接感想
  8. networkComms 通信框架之 消息处理器
  9. jenkins教程菜鸟_Jenkins插件编译
  10. demo2 Kafka+Spark Streaming+Redis实时计算整合实践 foreachRDD输出到redis
  11. burpsuite https 社区版_BurpSuit添加CA证书拦截HTTPS通信
  12. python3 解压7z文件
  13. Image 图像转化为 PDF 文件
  14. 干货 实例 | 数字化时代的传统行业转型升级
  15. 基于jsp servlet javabean的学生管理系统
  16. 2---MATLAB将十进制转换成二进制补码
  17. android表格可以编辑,手机wps中如何编辑表格
  18. 基于经度坐标校正鱼眼图像
  19. 【Linux】Ubuntu下搜狗拼音输入法
  20. ADODB 入门(推荐)

热门文章

  1. excel表格数据汇总计数如何完成?
  2. linux运维基础-rpm包校验-rpm包安全修复-rpm覆盖
  3. 《信息化项目文档模板十一——系统运维流程工作流程模板》
  4. 周易六十四卦——谦卦
  5. android简单记账源码,Android+个人记账程序源码.rar(入门级)
  6. 这5个免费音效素材网站,你一定要收藏好~
  7. C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。
  8. xmind文件不见了处理方法
  9. 阿里云免费SSL证书申请详细流程
  10. 在c语言中如何区别%s和%c