SLAM(Simultaneous Localization and Mapping),中文译作同时定位与地图创建。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。(源自:视觉SLAM十四讲)我想这官话听起来拗口,让人感觉云里雾里的,所以我找了一个形象的例子来帮助大家理解。相信不少朋友家都有扫地机器人吧,要知道市面上的大部分扫地机器人只具有简单的避障功能,在室内随机游走,遇到障碍物就转弯,这样会导致有很多地方会漏掉,扫地效率非常低。要想实现真正的智能清扫需要具体哪些条件呢?扫地机器人至少需要知道以下几件事情:
定位和建图是两个相辅相成的过程,地图可以提供更好的定位,而定位也可以进一步扩建地图。
事实上,SLAM的实现方式与难度和传感器密切相关,用于SLAM的传感器主要分为两大类:激光雷达、视觉传感器。
激光雷达可以提供机器人与周围环境的距离信息。常见的激光雷达有SICK、Velodyne、Rplidar等。
激光雷达的技术方案有如下几个特点:
1、精度很高,比较稳定。
2、速度快,计算量也不大,容易做成实时SLAM。
3、理论研究成熟。激光雷达用于SLAM的技术方案(EKF-SLAM)因为研究较早,现在已经非常成熟。当然人们也对EKF-SLAM的缺点也有较清楚的认识。
4、笨重。激光雷达比普通的摄像头在空间体积上大了不少。
5、价格昂贵。激光雷达成本很高,因此激光的研究主要集中于如何降低传感器的成本上。
视觉SLAM是最近几年SLAM研究热点之一。它有如下几个特点:
1、价格便宜。
2、体积小,重量轻。
3、可以获取丰富且直观的信息。
4、计算量大。往往信息量和计算量是成正比的,视觉SLAM中的特征点检测、匹配等过程非常耗时。不过随着CPU、GPU处理器速度的飞速发展,很多以前被认为无法实时化的视觉算法,得以近乎实时化地运行。
5、需要一定的假设条件。比如视觉算法无法在无纹理区域进行。
视觉SLAM传感器主要分为三大类:单目、双目(或多目)、深度相机(RGB-D)。
就实现难度而言,这三类方法难易程度从难到易依次为:单目相机、双目相机、RGB-D。
只使用一个摄像头进行SLAM的做法称为单目SLAM(Monocular SLAM),其优势是传感器特别的简单、成本特别的低,所以单目SLAM非常受研究者关注。最常见的单目相机数据是:照片。照片,本质上是拍照时的场景在相机的成像平面上留下的一个投影。也就是以二维的形式来反应三维的世界。显然,这个过程丢失了一个维度,这个维度便是深度,也就是我们拍摄的物体离摄像机的距离。失掉距离这一维度会导致我们无法判断物体的远近以及大小。
单目相机有如下几个特点:
1、单目SLAM只能估计一个相对深度。由于绝对深度未知,单目SLAM没法得到机器人运动轨迹以及地图的真实大小。直观地说,如果把轨迹和地图同时放大两倍,单目看到的像是一样的。
2、单目相机必须通过运动才能获取深度。它无法仅根据一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,单目SLAM要靠运动中的三角测量,来求解相机运动并估计像素的空间位置。也就是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。
3、相机必须进行旋转和平移。相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦,好在日常使用SLAM时,相机都会发生旋转和平移。
4、既可以用于室内,又可以用于室外。
双目相机由两个单目相机组成,这两个相机之间的距离称为基线,基线是已知的。双目相机需要大量的计算才能估计每一个像素点的深度,并且双目相机的测量到的深度为范围会受基线大小的影响。双目或多目相机配置与标定均较为复杂,其深度量程也受双目的基线与分辨率限制,而且视差的计算非常消耗计算资源。
RGB-D相机是一种可以获得彩色图并测量深度的相机。目前常用的RGBD相机包括Kinect一代、Kinect 二代、Xtion、Realsense等。RGB-D相机有如下特点:
1、一般通过结构光或Time-of-Flight原理,直接测出物体离摄像头的距离。相对于双目立体视觉,它的速度非常快,可以用于实时应用。
2、它比单目或双目相机能够提供更丰富的信息。
3、现在多数RGBD相机还存在视场角小、分辨率低等诸多问题。主要用于室内SLAM。