最近系统的再学习了一下SLAM,主要的参考资料是《SLAM十四讲》,那么本博文对李群与李代数做一些学习的记录。本博文仅仅是本人的学习笔记,部分资料来源于网络。不作任何商业用途

首先给出高翔对于李群李代数的讲解视频

【高翔】视觉SLAM十四讲

目录

什么是李群与李代数?为啥需要它们?

李群与李代数的一些性质汇总

李群李代数之间的指数对数映射关系

李代数求导与扰动模型

参考资料


什么是李群与李代数?为啥需要它们?

李群李代数是为了解决SLAM中非常实际的问题的,如位姿估计等问题。对于SLAM问题,实际上就是不断的估计相机的位姿和建立地图。其中,相机位姿也就是变换矩阵T。

假设某个时刻相机的位姿是T,它观察到一个在世界坐标系中的一个空间点p,并在相机上产生了一个观测数据z,那么有:

z = T*p + noise

noise是观测噪声。那么观测误差就是

e = z - T*p

假设我们总共有N个这样的三维点p和观测值z,那么我们的目标就是寻找一个最佳的位姿T,使得整体误差最小化,也就是

求解此问题,就是求目标函数J对于变换矩阵T的导数。而对于变换矩阵T,其所在的SE(3)空间,对加法计算并不封闭,也就是说任意两个变换矩阵相加后并不是一个变换矩阵,这主要是因为旋转矩阵对加法是不封闭造成的,它是有约束的。什么意思呢?我们知道旋转矩阵R本身有一定的约束:

两个旋转矩阵R1+R2的结果就不能满足上述约束了,但是R1*R2满足。故此,旋转矩阵对加法不满足封闭性:

而李代数就是解决这个问题的。把大写SE(3)空间的T映射为一种叫做李代数的东西,映射后的李代数叫做se(3)。它是由向量组成的,而向量是对加法封闭的。这样我们就可以通过对李代数求导来间接的对变换矩阵求导了。

在进一步介绍李代数前,先说说什么是群。群(group)是一种集合加上一种运算的代数结构(or对于这种只有一个运算的集合,我们把它叫做群。)比如旋转矩阵和乘法就构成了旋转矩阵群,变换矩阵和乘法也构成了变换矩阵群。但旋转矩阵和加法不能构成群,因为他们不满足封闭性。

群的性质如下:(对于旋转矩阵其乘法满足封闭性,还满足结合律:R1*R2=R2*R1,还有幺元是单位矩阵I,也有逆矩阵满足R乘以R的逆等于幺元(单位阵)。)

李群是指具有连续(光滑)性质的群。其定义是指连续光滑的群,比如旋转矩阵群SO(3),拿个杯子就可以在空间中以某个支点连续的旋转它,所以SO(3)它就是李群。如果一边旋转一边移动它,也是连续的或者说光滑的运动,所以变换矩阵群SE(3)也是李群。

但是SO(3)与SE(3)只有定义良好的乘法,没用加法,故此很难进行取极限、求导等操作。

李代数对应李群的正切空间,它描述了李群局部的导数

重要结论1:旋转矩阵的微分是一个反对称矩阵左乘它本身

旋转矩阵的微分是一个反对称(也叫斜对称,skew symmetric matrix) 矩阵左乘它本身,对于某个时刻的R(t)(李群空间),存在一个三维向量φ=(φ1,φ2,φ3)(李代数空间),用来描述R在t时刻的局部的导数

关于反对称矩阵的定义:反对称矩阵其实是将三维向量和三维矩阵建立对应关系。它是这样定义的:如果一个3 X 3的矩阵A满足如下式子,那么A就是反对称矩阵。

根据它的性质,上式等式左边矩阵A转置后,对角线元素aii还在对角线上,而对于等式右边,所有元素取负号,那么对于对角线元素aii来说,足aii=-aii,所以aii=0。也就是说反对称矩阵对角线元素都为0。那么非对角线元素还有6个,它们能不能精简呢?等式左边第2行第1列位置的元素,是矩阵A元素a12转置后到了位置a21,等式右边原来a21变成了 -a21,所以其实对于矩阵A,元素a12 = -a21,所以用一个元素及其负数就可以表示矩阵中这两个元素,同理,其他4个元素也是这样。所以,其实矩阵A中非对角线元素只用3个元素就可以表示。也就是说反对称矩阵A只有3个自由度。这样我们就可以把一个三维向量和一个三维矩阵建立对应关系。举个例子,假设有一个反对称矩阵A的定义如下:

我们定义对应的一个三维向量:

然后我们用一个上三角符号来表示这个向量α和三维矩阵A的对应关系

通过这个符号,我们把向量和矩阵建立了对应关系。也即有:

重要结论2:指数映射(可以理解为通过此公式求解李群对应的李代数)

如下式所示。李代数so(3)是三维向量φ的集合,每个向量φi的反对称矩阵都可以表达李群(SO(3))上旋转矩阵R的导数,而R和φ是一个指数映射关系。也就是说,李群空间的任意一个旋转矩阵R都可以用李代数空间的一个向量的反对称矩阵指数来近似。

简单来说就是,用旋转矩阵表示的话就是李群空间,也是我们熟悉的表示方法。而用向量的反对称矩阵表示的话就是李代数空间,这两个空间建立了联系。

R在原点附近的一阶泰勒展开,我们看到这个向量φ=(φ1,φ2,φ3)反应了R的导数性质,故称它在SO(3)上的原点 φ0 附近的正切空间上。这个φ正是李群SO(3)对应的李代数so(3)。指数e的泰勒展开如下:

通过运用泰勒展开,以及反对称矩阵的性质,我们可以得到如下结果:

其中,三维向量 φ = θa,a是一个长度为1的方向向量。这公式就是罗德里格斯公式(德里格斯公式是表示从旋转向量到旋转矩阵的转换过程so(3)的李代数空间就是由旋转向量组成的的空间,其物体意义就是旋转向量。而结论2中的指数映射关系就是罗德里格斯公式,他们在数学上本质是一样。这样我们可以说旋转矩阵的导数可以由其对应的旋转向量指定,指导如何在旋转矩阵中进行微积分运算。

对于李群而言,SE(3)或者SO(3)都是有约束的,其优化是有约束的优化。而李代数(向量)则是无约束的,所以李群与李代数的转换就是把位姿优化问题从约束转到无约束下,进而使得优化问题更加的简单~~~

而李代数也有自己的定义如下:

so(3)与se(3)的定义如下:

李群与李代数的一些性质汇总

李群李代数之间的指数对数映射关系

so(3) 实际上就是由所谓的旋转向量组成的空间,而指数映射即罗德里格斯公式。通过它们,我们把so(3) 中任意一个向量对应到了一个位于SO(3) 中的旋转矩阵。反之,如果定义对数映射,我们也能把SO(3) 中的元素对应到so(3) 中:

根据上面的罗德里格斯公式,我们可以知道,所谓的so(3)其物理意义实际上就是旋转向量。是由旋转向量构成的空间。

对应的SE(3)的转换可参考SLAM十四讲上的推导。

李代数求导与扰动模型

李代数求导分两种:一种是用李代数表示位姿,然后根据李代数加法来对李代数求导。结果中有复杂的雅克比公式,不是很方便。一般都用第二种,就是对李群进行左乘或者右乘微小的扰动,然后对该扰动求导。

参考资料

https://mp.weixin.qq.com/s/7gmSyF13UUMDOnxpHVx9lg

《视觉SLAM十四讲》

学习笔记之——李群与李代数的理解相关推荐

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

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

  2. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅

    TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...

  3. 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模型

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  4. 对于李群和李代数的理解

    需要解决的问题: 假设某个时刻相机的位姿是T,它观察到一个在世界坐标系中的一个空间点p,并在相机上产生了一个观测数据z,那么 z = Tp + noise noise是观测噪声.那么观测误差就是 e ...

  5. 冰冰学习笔记:Linux下的权限理解

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  6. linux学习笔记yum源.repo文件的理解

    linux学习笔记 repo文件是yum 源( 软件仓库 )的 配置 文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容(记录了包的下载路径,相当于寻宝图,告诉yum去哪里寻找将要下载的软 ...

  7. 李群、李代数只求理解不求数学推导

    群:集合+运算(G,·) 在近世代数中多次出现的概念,定义为"一种集合加上一种运算的代数结构",运算需要满足封闭性,结合律,幺元,逆.群结构可以保证在群概念下的运算具有良好的性质. ...

  8. 数据结构学习笔记——栈(1)定义理解

    写在前面的话--努力不晚 博主是某985学校数字媒体技术专业的本科在读生,即将成为大四狗,今后打算国内读研. 因为数媒专业设置的缘故,前两年尝试了很多艺术和设计方面的东西:素描.设计原理.UI.视频剪 ...

  9. UDS学习笔记(三)——协议的理解

    在理解了CAN总线之后,我们就需要学习UDS协议了.百度一下UDS协议,出现很多的两个标准是ISO14229,ISO15765.ISO14229就是我们说的UDS诊断协议了,那还有一个ISO15765 ...

最新文章

  1. python统计excel出现次数_Python读取Excel一列并计算所有对象出现次数的方法
  2. IAR编译的工程无法正常仿真的问题
  3. jsoncpp去掉多余字符_如何处理JSON中的特殊字符
  4. aqs java 简书,Java并发之AQS原理
  5. 采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)
  6. 前端学习(2938):vue对象之间的实例属性ref
  7. python实现汉诺塔程序
  8. mysql 脏数据查询_MySQL数据库02
  9. Linux Shell脚本入门教程系列之(十四) Shell Select教程
  10. Online Judge汇总
  11. Shiro与Spring整合
  12. slk文件转换器安卓版_MP3提取转换器
  13. Mugeda(木疙瘩)H5案例课—足球小游戏-岑远科-专题视频课程
  14. OUTLOOK 下邮件如何以人,文件夹来分类inbox
  15. Cesium开发环境搭建的几种方法总结
  16. 树为什么能长这么高?
  17. Oracle DG主库失败Failover参考
  18. python能调用身份证读卡器吗_用Python在Linux下调用新中新DKQ-A16D读卡器,读二代证数据...
  19. 2022夏每日一题(三)
  20. STL — 迭代器设计思维(一)

热门文章

  1. Linux内存访问(Liunx驱动3)
  2. 山东大学计算机专业知名教授,胡思煌 山东大学主页平台管理系统--胡思煌
  3. 扑克牌(ArrayList)
  4. 苹果公司邮箱联系大全
  5. 读《春秋》有感之八:荀罃设计车轮战
  6. php代码纵向排列文字怎么写,css里怎么文字纵向排列?
  7. C语言中的%f和%lf的区别
  8. jQuery特效,网站模板,商城模板,网页特效各种前端源码免费下载
  9. SAP 成套销售按项目销售
  10. 微信视频号运营 1000 问