视觉SLAM十四讲(1)——初识SLAM
初识SLAM
SLAM(simultaneous localization and mapping),中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下(不需要在环境中安装传感器),于运动过程中建立环境的模型,同时估计自己的运动。
如果这里的传感器主要为相机,以一定的速率拍摄周围的环境,形成一个连续的视频流,那么就称为“视觉SLAM”。
SLAM的目的是解决“定位”与“地图构建”这两个问题。也就是说,一边要估计传感器自身的位置,一边要建立周围环境的模型。
- 在什么地方?——定位(自身的状态)
- 周围环境是什么样?——建图(外在的环境)
单目相机——照片(三维空间的二维投影):无法通过单张照片来计算场景中物体与我们之间的距离,因此必须移动相机改变其视角才能估计它的运动。当相机移动时,相片中的物体在图像上的运动就形成了视差。通过视差就能知道物体的远近,但这只是一个相对值,无法确定真实尺度,称为“尺度不确定性”。
双目相机——通过两个相机之间的距离(基线)来估计每个像素的空间位置。通过左右眼的差异,判断场景中物体与相机的距离。缺点是计算量大,消耗计算资源,与基线关系大(基线距离越大,能够测量到的就越远)。优点是既可以用在室内,亦可应用与室外。
深度相机——通过主动向物体发射光并接收返回的光,测出物体与相机之间的距离。优点是通过物理测量手段可节省大量的计算。缺点是主要用于室内,室外较难应用。
经典视觉SLAM框架
完整的SLAM系统分成“视觉里程计”、“后端优化”、“建图”以及“回环检测”。
1、传感器信息读取:相机图像信息的读取和预处理
2、视觉里程计:估算相邻图像间相机的运动,恢复场景的空间结构,以及局部地图的样子。会出现累计漂移问题(Drift),所以需要后端优化和回环检测来校正整个轨迹。(图像的特征提取与匹配等)
3、后端优化:后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化(消除噪声),得到全局一致的轨迹和地图。(滤波与非线性优化算法)
4、回环检测:解决位置估计随时间漂移的问题。判断相机是否到达过先前的位置。如果检测到回环,会把信息提供给后端进行处理。(计算图像数据相似性)
5、建图:根据估计的轨迹,建立与任务要求对应的地图。
SLAM过程可以总结为两个基本方程:
运动方程:
x k = f ( x k − 1 , u k , w k ) x_k=f(x_{k-1},u_k,w_k) xk=f(xk