第三期:一起来学SLAM
1
SLAM常用传感器
激光扫描仪
激光雷达:通过测量激光信号的时间差、相位差确定距离,通过水平旋转扫描或相控扫描测角度,并根据这两个数据建立二维的极坐标系;再通过获取不同俯仰角度的信号获得第三维的高度信息。
深度相机
深度相机:目前的深度相机根据其工作原理可以分为三种:TOF、RGB双目、结构光。
激光SLAM和视觉SLAM
基于这两种传感器有激光SLAM和视觉SLAM。
其中激光SLAM经典开源方案:
Gmapping
Cartographer
视觉SLAM常见开源方案有:
稀疏法(特征点):
ORB-SLAM(单目,双目,RGBD)
PTAM(单目)
MonoSLAM(单目)
2. 半稠密法:
LSD-SLAM(单目,双目,RGBD)
DSO(单目)
SVO(单目, 仅VO)
3. 稠密法:
DTAM(RGBD)
Elastic Fusion(RGBD)
Kintinous(RGBD)
DVO
RGBD-SLAM-V2
RTAB-MAP
2
一起学SLAM学习会要求
应群友的要求,利用平台开展第三期活动“一起学SLAM”,这里需要大佬制定学习计划,需要每位参与者都积极参与。只要不是三分钟热度,就可以加入我们,我们需要你对SLAM有所了解,有一定的基础知识,我们希望在这个平台的活动中,从中低层次的SLAM研究者到对SLAM有更深入的理解和细节上的学习。
所以我们不是辅导机构,不是教育机构,不是为了广告,而是群主为了让更多的人参与学习,一起分享,相信人多力量大。才花费如此心血,来组织这样的一次学习活动。活动从ORB-SLAM2的学习开始。
任务要求:
1,每个模块的最终形成文档是为了让其他模块的人,一看就懂,如果有不懂得可以在github组群中提问。相关负责人需要解答,当然懂的人都可以解答。
2,考虑到每个人都有自己主营业务,该学习小组是一个兴趣,一次提升自己的机会,所有我们将所有的理论模块定位一个月的时间,能够形成文档,在github中。再用一个月的时间各自熟悉,或者提问别人的模块。有兴趣的可以做网络直播讲解。
3,贵在坚持。分工明确,三到五个人负责一个小模块。你们可以交流形成一个文档,当然如果没人主,可以各自形成自己的文档。虽然有重复,但是你们的理解肯定是不一样的。
3
为什么选择ORB-SLAM2
视觉SLAM中最为系统且完整的开源框架非ORB-SLAM莫属,在搜索页面搜索ORB-SLAM2也是一大堆的资料。从安装教程,理论细节,流程解析,代码注释,都有十分丰富的资料。
甚至我们可以直接阅读ORB-SLAM的经典入门教程高翔博士的《视觉SLAM 14讲》,就可以迅速上手并入门。但是就算你读完了这本书,看完了代码,还是有一些细节上的问题,难以理解,可能是一些公式难以推导,代码与理论不一致等等问题。
所以这也是我们要学习SLAM的目的,最终要在这个平台上形成一套或者一本最完整的从理论到实践,再到代码细节的教程笔记。不仅有理论支持,并且将代码与理论部分对应,知道代码为什么要这么写?
4
学习计划安排
目标:形成一套完整的ORB-SLAM2入门手册,以及详尽的代码注释。
三步走:
(1)ORB-SLAM2理论学习:我们将ORB-SLAM2分成多个模块,并且每个模块涉及到一种理论知识,或者是基础知识,然后对应任务的成员可以查阅书籍,查阅博客,通过各种方式,最终形成这部分的文档。
(2)代码注释部分,该部分群主将在github上建立组群,并专门对该工程进行注释。
(3)微信交流和github组群交流,由于每个人都负责不同的模块,所以大部分小伙伴是对自己负责的模块要尽可能的熟悉,而其他模块的小伙伴,对该模块有任何疑问或者不理解的地方,都可以提出来,而此模块的负责人,尽量给出解答。
5
加群须知
微信群主要是有组织者发布学习任务和交流,为了避免群主多次发布群规则,在此将群规则说明如下:
相信进来的小伙伴,都是热爱学习的,切记不要三分钟热度,既然要开始下决心学习SLAM,首先先从理论搞起来,然后我们一起注释代码,从理论到代码,我们一步一步来,如果有大佬,欢迎毛遂自荐,帮我们制定学习机会,模块划分,任务划分,以及给予相应的指点。希望可以认识一群积极且爱分享的小伙伴,一点点成长起来!
最终我们在理论搞得差不多得情况下,一起注释代码。
6
github组群及模块划分
模块划分
(1)相机模型
模块负责人可以查看网络资料,最终能够形成PPT。涉及到从世界坐标系到像素坐标系公式转换,以及相机标定的基本原理等、
(2)ORB-SLAM初始化模块
模块负责人主要是根据已有相机模型的基础上,对单应矩阵,基础矩阵,本质矩阵之间的关系进行理论推导,和求解方法的总结。更多的是细节上的知识带你,最终形成PPT。
(3)特征点提取模块
模块负责人要能够对ORB,SIFT,SURF三种特征点的理论有一个全面的汇总。有何区别等。并对OPENCV中这三个特征点的提取演示demo(可参考 14讲)。
(4)特征点匹配模块
对特征点匹配使用的方法以及去除误匹配的方法等相关原理有详细的介绍。
(5)ORB-SLAM关键帧处理模块
在该框架中对关键帧的提取,判定关键帧,去重复帧等,对关键帧的处理的流程等相关内容进行总结。
(6)局部优化地图的方法
在该框架中使用了BA的方法,那么BA的推导。以及与其他非线性优化的方法的对比。
(7)Covisibility graph essential graph
为什么要使用这个这两种图,在其中起到了什么作用,从理论到意义的解析
(8)李代数
该部分内容不仅要参考《14讲》并需要收集更多的资料。力求所有人看了你的资料能够恍然大悟的理解李代数
(9)回环检测模块(可以多分配几个人)
该模块主要是搞清楚回环检测的逻辑部分,以流程图的方式展现。以及词袋如何生成?
(10)PNP
生成稀疏地图点的PNP方法总结,理论推导等。
(11)优化工具介绍
主要是ceres和g2o基本介绍。从简单的优化公式如何写代码的教程
git学习小组组群已经建立,加入方式: