SLAM是Simultaneous Localization and Mapping的缩写,意为“同时定位与建图”。是机器人在位置环境中的一个未知位置开始移动,并在移动过程中根据传感器的信息,一边计算自身位置,一边构建环境地图,从而实现机器人的自主定位和导航。
目前,SLAM的应用领域主要有机器人、虚拟现实和增强现实。其用途包括传感器自身的定位,以及后续的路径规划、场景理解。
随着传感器种类和安装方式的不同,SLAM的实现方式和难度会有很大差异。按传感器来分,SLAM主要分为激光、视觉两大类。其中,激光SLAM研究较早,理论和工程均比较成熟。视觉方案目前大部分还处于实验室研究阶段,实际产品应用相对较少。
激光雷达
激光雷达是研究最多、使用最成熟的深度传感器,可以直接获得相对于环境的直接距离信息,从而实现直接相对定位,很多常见的扫地机器人都有装配。
激光雷达的优点是精度高,响应快,数据量小;缺点是成本高。
摄像头
SLAM所用到的摄像头分为三种:
一种是单目摄像头,就是用一个摄像头完成SLAM。这种方案的传感器相对简单,适用性强,但单目摄像头无法再静止状态测量距离,只有在动态状态下才能根据三角测量等原理感知距离。
另一种是双目摄像头,与单目摄像头相比,双目摄像头可以感知距离信息,但是标定相对复杂,大量的图像数据会导致运算量过大。
还有一种是RGB-D摄像头是一种新兴起的新型传感器,它不仅可以获取环境的RGB信息,也可以通过红外结构光、Time-of-Flight等原理获取每一个像素点的深度信息。由于多了一组深度信息的数据,使得RGB-D摄像头不仅可以用于SLAM,还可以用于图像处理、物体识别等多个方面。
一、SLAM分类
SLAM主要分为两大类,一类是动态环境,另一类是静态环境。
在动态环境又分为高动态环境和低动态环境;如果机器人在构建地图时,在视野范围内有正在移动的物体,这种情况定义为高动态环境;如果机器人在构建地图时,在视野范围外有移动的物体,这种情况定义为低动态环境。
在静态环境中,根据输出地图的类型可以分为三种:尺度地图、拓扑地图、混合地图。
二、常见SLAM框架
对于SLAM来说,可获取的传感器信息一般有里程计、激光雷达数据以及IMU数据,对于里程计数据,最常见的有两轮差速运动模型和三轮全向底盘运动模型;而激光雷达数据则会由于传感器的移动而导致的采集回的数据产生畸变,需要通过估计或者里程计辅助等方法对畸变进行矫正。
在实现前端配准需要考虑特征点,根据输入激光数据提取特征,之后再对两帧数据的特征点位置进行匹配。当然我们仅仅凭借两帧的估计往往是不够的,我们会把特征点缓存成一个小地图,计算当前帧与地图之间的位置关系。这样才能算的上是一个完整的前端配准方法。
在后端优化上,我们通常需要考虑更长一段时间或者所有时间上的状态估计问题,不仅仅使用过去的信息更新自己的状态,也会用未来的信息来更新自己。在SLAM的过程中由于可以用运动方程和观测方程描述,那么我们可以列出运动观测方程:
如果只像前端配准那样考虑相邻时间上的关联,那么之前产生的误差将不可避免地累积到下一个时刻,使得整个SLAM出现累积误差,无法长期估计。而在后端虽然能估计最大后验误差,但只有相邻关键数据时,我们能做的事情并不是很多,无法消除累积误差。回环检测对SALM系统的意义重大,他关系到我们估计的轨迹和地图在长时间下的正确性,当然也提供了当前数据与所有历史数据的关联,在跟踪算法求职后,我们还可以利用会还检测进行重定位。因此,回环检测对整个SLAM系统精度与稳健性的提升是非常明显的。
在SLAM模型中,我们的地图就是所有路标点的集合,一旦确定了各个路标点的位置,那么就可以说我们完成了建图。但即使是地图,也会有许多不同的需求,可大致分为:定位、导航、避障、重现、交互这五个方面。