视觉SLAM十四讲(1)

蹲街弑〆低调 提交于 2019-12-02 05:57:04

视觉SLAM十四讲(1)——初识SLAM

初识SLAM

SLAM(simultaneous localization and mapping),中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下(不需要在环境中安装传感器),于运动过程中建立环境的模型,同时估计自己的运动。

如果这里的传感器主要为相机,以一定的速率拍摄周围的环境,形成一个连续的视频流,那么就称为“视觉SLAM”。

SLAM的目的是解决“定位”与“地图构建”这两个问题。也就是说,一边要估计传感器自身的位置,一边要建立周围环境的模型。

  • 在什么地方?——定位(自身的状态)
  • 周围环境是什么样?——建图(外在的环境)

单目相机——照片(三维空间的二维投影):无法通过单张照片来计算场景中物体与我们之间的距离,因此必须移动相机改变其视角才能估计它的运动。当相机移动时,相片中的物体在图像上的运动就形成了视差。通过视差就能知道物体的远近,但这只是一个相对值,无法确定真实尺度,称为“尺度不确定性”。

双目相机——通过两个相机之间的距离(基线)来估计每个像素的空间位置。通过左右眼的差异,判断场景中物体与相机的距离。缺点是计算量大,消耗计算资源,与基线关系大(基线距离越大,能够测量到的就越远)。优点是既可以用在室内,亦可应用与室外。

深度相机——通过主动向物体发射光并接收返回的光,测出物体与相机之间的距离。优点是通过物理测量手段可节省大量的计算。缺点是主要用于室内,室外较难应用。

经典视觉SLAM框架

完整的SLAM系统分成“视觉里程计”、“后端优化”、“建图”以及“回环检测”。
SLAm流程图

1、传感器信息读取:相机图像信息的读取和预处理

2、视觉里程计:估算相邻图像间相机的运动,恢复场景的空间结构,以及局部地图的样子。会出现累计漂移问题(Drift),所以需要后端优化和回环检测来校正整个轨迹。(图像的特征提取与匹配等)

3、后端优化:后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化(消除噪声),得到全局一致的轨迹和地图。(滤波与非线性优化算法)

4、回环检测:解决位置估计随时间漂移的问题。判断相机是否到达过先前的位置。如果检测到回环,会把信息提供给后端进行处理。(计算图像数据相似性)

5、建图:根据估计的轨迹,建立与任务要求对应的地图。

SLAM过程可以总结为两个基本方程:

运动方程:
xk=f(xk1,uk,wk)x_k=f(x_{k-1},u_k,w_k)

观测方程:
zk,j=h(yj,xk,vk,j) z_{k,j}=h(y_j,x_k,v{k,j})
各个时刻的位置记为x1,...,xkx_1,...,x_k,它们构成了运动的轨迹。假设地图是由许多个路标组成的,每个时刻,传感器会测量到一部分路标点,得到它们的观测数据。设路标点一共有N个,用y1,...,yNy_1,...,y_N表示。

运动方程是k-1时刻到k时刻位置的变化,观测方程是在K时刻于处探测到某一个路标yjy_j。其中uku_k是运动传感器的读数,yjy_j是路标点,zk,jz_{k,j}是运动传感器的观测数据,wkw_kvk,jv_{k,j}为噪声。

SLAM问题就是当知道运动测量的读数u,以及传感器的读数z时,如何求解定位问题(估计x)和建图问题(估计y)?这是一个状态估计问题。其求解与两个方程的具体形式,以及噪声服从那种分布有关。按照方程是否为线性,噪声是否服从高斯分布进行分类,分为线性/非线性和高斯/非高斯系统。

线性高斯系统(LG系统)的无偏估计可以由卡尔曼滤波器(KF)给出。

非线性非高斯系统(NLNG系统)会使用扩展卡尔曼滤波器(EKF)和非线性优化两大类方法求解。

为了克服EKF的缺点(线性化误差和噪声高斯分布假设),人们开始使用粒子滤波器等其他滤波器。时至今日,主流视觉SLAM使用以图优化为代表的优化技术进行状态估计。优化技术已经明显优于滤波器技术,只要计算资源允许,通常都偏向于使用优化方法。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!