视觉SLAM十四讲学习笔记:第一讲,第二讲
视觉SLAM十四讲学习笔记:第一讲,第二讲
1.SLAM是什么?
SLAM (Simultaneous Localization and mapping) ,中文译作”同时定位与地图构建“。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。
SLAM的目的是解决”定位“与”地图构建“两个问题。
2.SLAM相关的主要书籍
- 《概率机器人》
- 《计算机视觉中的多视图几何》
- 《机器人学中的状态估计》
3.学习SLAM十四讲需要的基础
- 高等数学,线性代数,概率论
- c++语言基础
- Linux基础
4.视觉SLAM
相机可以分为:单目相机(Monocular);双目相机(Stereo);深度相机(RGB-D)
- 单目相机
照片本质上是拍摄某个场景在相机的成像平面上留下的一个投影,它以二维的形式记录了三维世界。这个过程丢掉了场景的一个维度,也就是所谓的深度(或距离),无法通过单张图片计算场景中物体与相机之间的距离。由于图像只是投影,如果真想恢复三维结构,必须改变相机的视角,当相机移动时,物体在图像上的运动就形成了视差,通过视差就能定量的判断哪些物体离得远,哪些物体离得近。
单目SLAM估计的轨迹和地图将与真实轨迹的地图差一个尺度(Scale),单目SLAM无法仅凭图像确定这个真实尺度,所以又称为尺度不确定性。(Scale Ambiguity)
-
双目相机
双目相机由两个单目相机组成,两个相机之间的距离(称为基线 baseline)是已知的,可以通过这个基线来估计每个像素的空间位置。双目相机的缺点是配置与标定均较为复杂,其深度量程和精度受双目的基线与分辨率所限,且视差的计算非常消耗计算资源,需要使用GPU和FPGA设备加速,才能实时输出整张图像的距离信息。因此在现有的条件下,计算量是双目的主要问题之一。
-
深度相机
可以通过红外结构光或ToF原理,通过物理的测量手段来测量物体与相机之间的距离。
但现在多数RGB-D相机还存在测量范围窄,噪声大,视野小,易受日光干扰,无法测量透射材质等诸多问题,在SLAM方面主要应用于室内,室外则较难应用。
5.经典视觉SLAM框架
-
视觉里程计(Visual Odometry,VO)
VO关心相邻图像之间的相机运动。那么,一方面只要把相邻时刻的运动“串”起来,就构成了机器人的运动轨迹,从而解决了定位问题,另一方面,我们根据每个时刻的相机位置,计算出个像素对应的空间点位置,就得到了地图。
然而仅通过视觉里程计来估计轨迹,会不可避免的出现累计漂移(Accumulating Drift),为了解决漂移为题,还需要两种技术:后端优化和回环检测。
-
后端优化
笼统来说,后端优化主要是指处理SLAM过程中的噪声问题。
后端优化要考虑的问题就是如何从这些带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定性有多大。(这里的状态既包括机器人自身的轨迹,也包含地图)
-
回环检测
主要解决位置估计随时间漂移的问题
需要让机器人具有识别到过的场景的能力,可以判断图像间的相似性来完成回环检测。
-
建图
可以分为 度量地图 和 拓扑地图两种