查看原文
其他

SLAM初识

sixgod 计算机视觉life 2019-06-22

   欢迎关注计算机视觉life噢!


最近几年,随着以扫地机器人为代表智能机器人技术的普及,以及自动驾驶、AR等技术的爆发,作为核心技术之一的SLAM技术逐渐受到许多研究者的关注。



什么是SLAM?

SLAM(Simultaneous Localization and Mapping),中文译作同时定位与地图创建。


外行乍一听起来非常拗口,为了不在一开始就吓跑读者,我们先不对其进行专业的解释,用一个形象的例子来进行说明。我们知道现在有不少家用的扫地机器人(如下图所示),可以代替人对室内进行自动清扫。早期的扫地机器人并不智能,它只是具有简单的避障功能,在室内随机游走,遇到障碍物就转弯,这样会导致有很多地方会漏掉,扫地效率非常低。


扫地机器人


要想真正实现智能的清扫,扫地机器人至少需要知道以下几件事情:


1、我在哪里?也就是扫地机器人在工作过程中要知道自己在房间的具体位置。对应的术语叫:定位(Localization)。


2、我周围的环境是什么样子?也就是扫地机器人需要知道整个房间的地面结构信息。对应的术语叫:建图(Mapping)。


3、我怎样到达指定地点(充电器)?当扫地机器人电量不足时,如何以最短的路径到达充电器所在位置进行自动充电。对应的术语叫:路径规划(Route Planning)。


有了以上的几个能力,扫地机器人就立马变的智能了,不再像无头苍蝇一样在室内乱跑,而是可以从任意位置出发,一边清扫一边对周围的环境(房屋结构、障碍物)建立地图,同时根据地图定位自己当前在地图中的位置,并实时调整规划路线。随着使用时间的增长,扫地机器人建立的地图会越来越准确,规划的清扫路线越来越高效,变的越来越智能。这也不难理解断点续扫(一次扫不完,回到充电地点重合点,回到原位置继续清扫)的功能是如何实现的了。


扫地机器人断点续扫示意图


看明白了上面的例子,我们给出SLAM的定义。SLAM是指当某种移动设备(如机器人)从一个未知环境里的未知地点出发,在运动过程中通过传感器观测定位自身位置、姿态、运动轨迹,再根据自身位置进行增量式的地图构建,从而达到同时定位和地图构建的目的。定位和建图是两个相辅相成的过程,地图可以提供更好的定位,而定位也可以进一步扩建地图。SLAM非常强调未知环境,是自主移动机器人的核心技术。


SLAM 传感器

很多人注意到,同一个行业的SLAM应用,有人用相对传统的激光雷达作为传感器,有人用最近几年兴起的视觉摄像头作为传感器,当然,还有人将它们结合起来使用,它们的区别在哪里呢?事实上,SLAM的实现方式与难度和传感器的形式与安装方式密切相关。用于SLAM的传感器主要分为激光雷达和视觉两大类。


1

激光雷达

激光雷达是非常传统的SLAM传感器。它可以提供机器人本身与周围环境障碍物间的距离信息。常见的激光雷达有SICK、Velodyne、Rplidar等。


激光雷达


主流的2D激光传感器扫描一个平面内的障碍物,适用于平面运动的机器人(如扫地机等)进行定位,并建立2D的栅格地图。这种地图在机器人导航中很实用,因为多数机器人还不能在空中飞行或走上台阶,仍限于地面。在SLAM研究史上,早期SLAM研究几乎全使用激光传感器进行建图,且多数使用滤波器方法,例如卡尔曼滤波器与粒子滤波器等。


激光雷达的技术方案有如下几个特点:


1、精度很高,也比较稳定。


2、速度快,计算量也不大,容易做成实时SLAM。


3、理论研究成熟。激光雷达用于SLAM的技术方案(EKF-SLAM)因为研究较早,现在已经非常成熟。当然人们也对EKF-SLAM的缺点也有较清楚的认识,例如不易表示回环、线性化误差严重、必须维护路标点的协方差矩阵等。


4、笨重。从上图就可以看出,激光雷达比普通的摄像头在空间体积上大了不少。


5、价格昂贵。激光雷达成本很高,因此激光的研究主要集中于如何降低传感器的成本上,现在激光雷达也有平价的产品了,现在高级的扫地机器人中就已经在使用激光雷达了,但性能配置会低一些。



2

视觉传感器

视觉SLAM是最近几年SLAM研究热点之一。它有如下几个特点:


1、价格便宜。


2、体积小,重量轻。想想手机里动辄几千万像素的摄像头也就占指甲盖那么小的面积。


3、可以获取丰富且直观的信息。有研究表明,视觉信息占了人类获取信息的80%以上,所以通过摄像头可以获取的信息要远远超过通过激光雷达获得的信息。


4、计算量大。往往信息量和计算量是成正比的,视觉SLAM中的特征点检测、匹配等过程非常耗时。不过随着CPU、GPU处理器速度的飞速发展,很多以前被认为无法实时化的视觉算法,得以近乎实时化地运行。


5、需要一定的假设条件。比如视觉算法无法在无纹理区域进行。


视觉SLAM传感器主要分为三大类:单目、双目(或多目)、RGBD。此外还有鱼眼、全景等特殊相机,由于在研究和产品中都属于少数在此不做介绍。


就实现难度而言,这三类方法难易程度从难到易依次为:单目视觉、双目视觉、RGBD。下面来具体介绍。


单目相机


单目相机SLAM简称MonoSLAM,即只用一个摄像头实现SLAM。优势是传感器特别的简单、成本特别的低,所以单目SLAM非常受研究者关注。相比别的视觉传感器,单目有个最大的问题,就是没法确切地得到深度。单目相机有如下几个特点:


1、单目SLAM只能估计一个相对深度。由于绝对深度未知,单目SLAM没法得到机器人运动轨迹以及地图的真实大小。直观地说,如果把轨迹和房间同时放大两倍,单目看到的像是一样的。


2、单目相机必须通过运动才能获取深度。它无法仅根据一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,单目SLAM要靠运动中的三角测量,来求解相机运动并估计像素的空间位置。也就是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。


3、相机必须进行旋转和平移。相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦,好在日常使用SLAM时,相机都会发生旋转和平移。


4、既可以用于室内,又可以用于室外。


双目相机


与单目不同的是,双目立体视觉既可以在运动时估计深度,也可在静止时估计,消除了单目视觉的许多麻烦。不过,双目或多目相机配置与标定均较为复杂,其深度量程也受双目的基线与分辨率限制。此外,通过双目图像计算深度计算量也非常大。


RGBD相机


RGBD相机是一种可以获得彩色图并测量深度的相机。目前常用的RGBD相机包括Kinect一代、Kinect 二代、Xtion、Realsense等。RGBD相机有如下特点:


1、一般通过结构光或Time-of-Flight原理,直接测出物体离摄像头的距离。相对于双目立体视觉,它的速度非常快,可以用于实时应用。


2、它比单目或双目相机能够提供更丰富的信息。


3、现在多数RGBD相机还存在视场角小、分辨率低等诸多问题。主要用于室内SLAM。


总结


本文从一个形象的例子——扫地机器人谈起,介绍了SLAM的定义。然后介绍了用于SLAM的两大类传感器:激光雷达和视觉传感器,并介绍了其特点及应用。


更多的SLAM有关的技术请关注后续文章,谢谢。




打赏

如本文对你有用,欢迎打赏、转发、分享


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存