视觉SLAM(一)预备课程与基础知识
高翔博士谈SLAM学习
谈写书的出发点:
首先我希望通过这个从这个作者的角度来说,来谈一谈我,我对自己写这个书已经开这个课的一些想法啊,然后这个课书呢,是我在博士期间,我是读在读期间完成的,然后当时要写这个书的一个主要原因是因为我当时自己在入什拉门的时候,感觉非常的困难啊,因为当时没什么特别好的那个书记和那个材料,然后呢,我就花了差不多一年一年多一点时间去把这个材料给整理出来,把书里面的所有的那个内容啊代码呀,文本啊,插图啊都完成了,然后这份东西是差不多在一五年到一六年的时候。
从学员的角度学习:
那么我们也是希望通过这次这个视频课程,能够给大家带来更好的自学体验,当然这些事情本质上都是建立在你能够以一种比较自律的方式,每周的定期的去看这个视频以及完成作业啊,然后课程的内容方面,刚才嘉兴也介绍过一遍了,那么我们简单再回顾一下,因为我这边也做了一些简单的介绍。
课程内容与预备知识
视觉SLAM用到的设备主要是相机,处理的是由图像序列组成的视频。
SLAM是什么
SLAM处理视频的时候涉及到:物体识别、物体跟踪、物体检测、语义分割等领域
任务主要是估计相机运动.采用的方法大致有三类:1. 特征点法:ORBSLAM;2.直接法:DSO; 3. RGBD相机。
SLAM的应用场景广泛:主要有:1. 手持设备定位;2. 自动驾驶定位;3. AR(增强现实)等三种场景。
课程内容与预备知识
课程教材:视觉SLAM十四讲:从理论到实践;
其它参考书:多视图几何;状态估计;
课程特点
- 基础、必要的理论知识
- 大量的编程内容
- 重视工程实践
- 必要的习题
必须要坚持的观念:只有亲自动手实现了算法,才能谈得上理解
课程安排:周日讲课,一周习题时间。每周抽出10个小时完成作业。
课程内容提纲
- 概述与预备知识(教材第1,2讲)
- 三维空间的刚体运动(教材第3讲)
- 李群与李代数(教材第4讲)
- 相机模型与非线性优化(教材第5,6讲)
- 特征点法视觉里程计(教材第7讲)
- 直接法视党里程计(教材第8讲)
- 后端优化(教材第10,11讲)
- 回环检测(教材第13讲)
习题
每节课结束后会布置习题;习题花费时间大约在课内时间的3倍以上;需要至少达到8/10分才能通过;习题包括编程题、简述题;会提供详细的操作指导。
预备知识与课程使用的环境
数学:高等数学、线性代数(矩阵论)、概率论
编程:语言(C++)、环境(Linux),了解语法和基本命令即可
英语:文献、文档阅读能力
环境:Ubuntu16.04(不提供windows环境下的方案)
SLAM是什么?
自主运动的两大基本问题
- 我在什么地方?——定位
- 周围环境是什么子?——建图
- 定位与建图=内外兼修 定位侧重对自身的了解,建图侧重对外在的了解
- 相互关联
准确的定位需要精确的地图
精确的地图来自准确的定位
传感器
SLAM用到的传感器是机器人感知外界环境的手段。大致可以分为内质和外质两类。
其中,内质传感器是用来感受机器人本体信息,比如:加速度计、陀螺仪、编码器等
外质传感器是用来感受测量外界的信息。比如:相机、激光、导轨、磁条等
环境限制了一些传感器的形式。比如 GPS:需要能接收到卫星信号的环境;Marker、导轨:需要环境允许安装 相比之下,激光、相机等携带式传感器更加自由。
相机
概念:以一定速率采集图像、形成视频(24hz/30hz)
分类:相机的主要分类有:1. 单目相机 Monocular;2. 双目相机(立体相机) Stereo;3. 深度相机RGB-D ;4.其他全景相机、 Event Camera。
特点
相机以二维投影形式记录了三维世界的信息。该过程丢掉了一个维度:距离
各类相机的区别
- 单目:无深度深度需要其他手段估计
- 双目:通过视差计算深度
- RGB-D:通过物理方法测量深度
当相机运动时,可通过视差确定深度,深度即第三维信息,对SLAM来说至关重要。
视觉SLAM框架
视觉SLAM主要包含以下部分
- 前端:Visual Odometry
- 后端:Optimization
- 回环:Loop Closing
- 建图:Mapping
其中,视觉里程计用来估计邻近时刻的相机运动。最简化的形式就是:估计两个图像的相对运动。采用的方法有特征点法和直接法两部分;
后端则用来从带有噪声的数据中估计最优轨迹与地图,涉及到的最大后验概率估计部分可以分为滤波器和图优化两类。
回环检测是用来检测相机是否到达过之前位置,主要通过计算图像间相似性来判断与之前位置的差异,需要用到词袋模型。
建图涉及到导航、规划、通讯、交互、可视化等内容,最后需要构建度量地图、拓扑地图、稀疏地图、稠密地图等。度量地图强调精确地表示地图中物体的位置关系,通常用稀疏(Sparse)与稠密(Dense)对其分类。稀疏地图进行了一定程度的抽象,并不需要表达所有的物体。相对地,稠密地图着重于建模所有看到的东西。相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。拓扑地图是一个图(Graph),由节点和边组成,只考虑节点间的连通性。
数学描述
视觉SLAM可以通过以下两个方程进行数学描述:
运动方程:\(x_{k+1}= f(x_k, u_k,w_k)\)
观测方程:\(z_{k,j} = h(x_k, y_j,w_{k,j})\)
为了解决这个问题,需要解决一下三个问题:
- 位置是三维的,如何表述?一一第2、3次课
- 观测模型如何表述?一一第4次课
- 已知u,z时,如何推断x,y?一第5次课以后