课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master

0. 内容

1. 什么是群

为什么要引入群?

因为求旋转矩阵或者变换矩阵的导数时,加法不再成立,所以求矩阵的导数需要引入其他的方法,于是就引入了群。

“群,环,域”都是是抽象代数中的东西


因为加法在整数上面呈交换群,所以2+3=3+2=5
例如:在加法上的运算,幺元为0,a+(-a)=0
在乘法上,幺元为1,a∗1a=1a* \dfrac{1}{a}=1a∗a1​=1


旋转矩阵可逆,是正交的矩阵,与矩阵乘法构成群。
如果不成群的话,基本上就没什么必要去讨论了。
一般的n×nn\times nn×n的可逆矩阵就是一般线性群GL(n)


基础知识补充:《抽象代数》,《微分几何》

2. 李群与李代数

具有连续(光滑)性质的群叫做李群(Lie Group)。
基础知识补充:《微分几何》


流形的定义(我的理解):流形是一个空间。流形是低维数据映射到高维形成的一个空间。高维空间中的数据会产生维度上的冗余,但实际上这些数据只需要使用较低的维度就能够唯一表示。而之前听到过的流形学习就是:假设数据是均匀采样于一个高维的欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维的流形结构,及找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。他是从观测到的现象中寻找事物的本质,已找到产生数据的内在规律。

下列图片来自参考博客


SO(3)和SE(3)只有定义良好的乘法,没有加法,所以难以及逆行取极限,求导等操作。(前面不是说是为了求出旋转矩阵的导数才引入群的吗?这里怎么还不能求呢?


首先由SO(3)(旋转矩阵)来引入李代数。

首先对于旋转矩阵,是正交的,两侧对时间求导,整理之后得到一个反对称矩阵
R˙(t)R(t)T\dot{R}(t)R(t)^TR˙(t)R(t)T
a^表示由向量到反对称矩阵,而

表示由反对称矩阵表示向量。


可看作对R(t)求导之后,左侧多出一个ϕ(t)\phi(t)ϕ(t)^


对R(t)进行一阶泰勒展开,在t0t_0t0​附近ϕ\phiϕ不变,化为微分方程,带入初始条件解之得(有一些细节没有仔细讲)

任意给定一个向量ϕ\phiϕ,能够找到一个对应关系,
eϕ^0t=R(t)e^{\hat\phi_0 t}=R(t)eϕ^​0​t=R(t)
其中ϕ\phiϕ是李代数,对应关系是指数映射,RRR是李群。
下面是李代数的严格定义:

给出结构带进去验证就能看是否是李代数。

[,]是李括号运算。
SO(3)是矩阵,so(3)是向量(其实矩阵和向量一一对应,都可以,但是这样更自然),李括号是作用在向量上的运算。


SE(3)的李代数是6维向量,ρ\rhoρ表示平移,ϕ\phiϕ表示旋转,而上尖尖^不再表示对称矩阵,但仍然保留记法。只是把旋转部分的ϕ\phiϕ做反对称,而平移部分不变,由(6,1)->(4,4)

3. 指数映射和对数映射

泰勒展开


通过无穷级数展开(见高数18讲P244)
ex=∑n=0∞xnn!e^x=\sum_{n=0}^\infty \frac{x^n}{n!}ex=n=0∑∞​n!xn​
sin⁡x=∑n=0∞(−1)nx2n+1(2n+1)!\sin x=\sum_{n=0}^\infty (-1)^n\frac{x^{2n+1}}{(2n+1)!}sinx=n=0∑∞​(−1)n(2n+1)!x2n+1​
cos⁡x=∑n=0∞(−1)nx2n(2n)!\cos x=\sum_{n=0}^\infty (-1)^n\frac{x^{2n}}{(2n)!}cosx=n=0∑∞​(−1)n(2n)!x2n​
其中3个展开的收敛于均为−∞<x<+∞-\infty<x<+\infty−∞<x<+∞
加上下面的性质能够处理高次幂

即可推得罗德里格斯公式。

那么说明李代数so(3)的物理意义实际上就是旋转向量(罗德里格斯公式就是旋转向量转旋转矩阵,其左侧就是旋转矩阵RRR)。反之,给定旋转矩阵就能求得旋转向量,可以使用对数映射或者下面的转换关系:

对于SE(3)

其中平移向量ρ\rhoρ和变换矩阵中的平移量 ttt 差了一个系数矩阵,即为雅可比矩阵,跟角度有关,旋转部分正好是一个so(3)。

本部分小结


李群–>指数映射–>李代数
李代数–>对数映射–>李群

4. 求导与扰动模型


还是求导,由于李群无加法,所以要求导得从李代数角度出发,在李代数上加一个小的量δϕ\delta \phiδϕ然后用指数运算变换成李群,但是问题是李代数中的加法是否等价于李群的乘法。在标量时显然成立,a,b是标量时显然成立ea∗eb=ea+be^a*e^b=e^{a+b}ea∗eb=ea+b,但是当幂是矩阵时不成立。

引入BCH公式:

矩阵两个exp然后取ln展开是一个关于李括号的一个式子,相当复杂,进行一些近似之后:

当两个矩阵其中有一个为小量时,顾略高阶做以下近似:

当左乘一个小量时,系数就是左雅可比矩阵;当左右乘一个小量时,系数就是右雅可比矩阵,常用左雅可比。

所以李代数上进行小量加法时,相当于利群上左(右)乘一个带雅可比的量。

SE(3)比SO(3)复杂,右上角的QrQ_rQr​很复杂。


求导两种方法:

  1. 李代数上加一个小量,求变化率
  2. 利群上乘一个小量,求相对于李代数的变化率

导数模型:

逆用BCH公式,然后泰勒展开,二次项就为0了,所以泰勒展开就只保留前两项。

扰动模型,左(右)乘一个扰动对应的群

SE(3)的扰动模型:左乘扰动

5. Sophus实践

深蓝学院-视觉SLAM课程-第3讲笔记-李群和李代数相关推荐

  1. 深蓝学院-视觉SLAM课程-第1讲笔记

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 1. 基础知识 一些图像处理方面的工作需要借助ML方法来完成:物体识别,检测 ...

  2. 深蓝学院-视觉SLAM课程-第2讲笔记--三维空间刚体运动

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 C++没有矩阵的运算,用别人的库来进行矩阵运算,其中Eigen库 ...

  3. 深蓝学院-视觉SLAM课程-第7讲笔记

    课程Gitbug地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 这讲来讲后端 之前的最小二乘的方法属于批量方法,较为简单,另一种 ...

  4. 深蓝学院-视觉SLAM课程-第6讲笔记

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 仍然是前端的内容,估计位姿,不过不是特征点法,而是另外的方法. ...

  5. 深蓝学院-视觉SLAM课程-第2讲作业

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 1. 基础知识 需要复习现代和矩阵论的知识. 特征值,特征向量有啥用? 有了 ...

  6. 深蓝学院-视觉SLAM课程-第7讲作业:SLAM中g2o入门详解,直接法BA

    1. 引言 在SLAM中,BA是个重要的部分,前后端很多地方都用得到,而g2o是一个很重要的使用图优化求解优化问题的库,所以有必要熟练掌握,尽管有了些C++的底子,但是看g2o的代码还是比较吃力,所以 ...

  7. 深蓝学院-视觉SLAM课程-第6讲作业

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 第6讲作业 2. T2 2.1 光流文献综述 文献还没读完,这部分参考博客 ...

  8. 深蓝学院-视觉SLAM课程学习课后题

    一. 第一节课习题# 标题 1.熟悉linux (1)可以通过 sudo apt-get install <软件名>的方式安装软件 当自己下载了软件压缩包之后(tar.gz文件),可以解压 ...

  9. 深蓝视觉SLAM课程第四讲--相机模型,非线性优化(G2O)

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 对应于十四讲中的第5讲和第6讲 回顾十四讲P24-26 1. 针 ...

最新文章

  1. MSSQL 漏洞利用与提权
  2. 在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...
  3. 在CockroachDB上运行Flowable
  4. 【Elasticsearch】es Elasticsearch HQ 介绍
  5. react16-reactDom.render流程分析
  6. OpenCV探索之路(零):HighGUI——使用imwrite调整保存的图片质量
  7. Go语言程序的命令行参数
  8. 奇门遁甲鸣法 第五章 辅格
  9. vue中的传参的两种方式
  10. hive经典习题50题
  11. codeblocks怎么编程c语言,如何能使用Codeblocks进行C语言编程操作.doc
  12. 松下伺服电机uvw接线图_松下Panasonic伺服电机电源线选择与接线方法
  13. 大数据之oracle:next_day函数
  14. python做估值模型_通证估值模型-费雪模型与净现值模型详解
  15. 再看《西游记》——吴承恩眼中的现实社会是如何折射到《西游记》中的
  16. 反击爬虫,前端工程师的脑洞可以有多大?
  17. 程控交换机程序故障处理
  18. iOS【彻底清空APP缓存】
  19. 用互联网思维去做事之-(1)互联网思维
  20. Java基础学习系列--(五)【迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类】

热门文章

  1. Sass 和 SCSS
  2. 【循序渐进学Python】面向对象知多少——继承
  3. 编程可以教给你的6个生活习惯
  4. 基于JavaSwing开发讯友桌面通讯录管理软件 课程设计 大作业源码 毕业设计
  5. mediawiki和semantic mediawiki的一些东西
  6. Python处理数据匹配问题
  7. 大声读绘本英语“RR分级阅读”,到底有什么奇妙的地方
  8. 初始Java正则匹配式
  9. Java过滤特殊字符
  10. sTC8G1K08+通过串口显示内部电压_LED电子显示屏控制卡常见软、硬件问题