当我们谈论SLAM时,最先问到的就是传感器。SLAM的实现方式与难度和传感器的形式与安装方式密切相关。传感器分为激光和视觉两大类,视觉下面又分三小方向。下面就带你认识这个庞大家族中每个成员的特性。
1. 传感器之激光雷达
激光雷达是最古老,研究也最多的SLAM传感器。它们提供机器人本体与周围环境障碍物间的距离信息。常见的激光雷达,例如SICK、Velodyne还有我们国产的rplidar等,都可以拿来做SLAM。激光雷达能以很高精度测出机器人周围障碍点的角度和距离,从而很方便地实现SLAM、避障等功能。
主流的2D激光传感器扫描一个平面内的障碍物,适用于平面运动的机器人(如扫地机等)进行定位,并建立2D的栅格地图。这种地图在机器人导航中很实用,因为多数机器人还不能在空中飞行或走上台阶,仍限于地面。在SLAM研究史上,早期SLAM研究几乎全使用激光传感器进行建图,且多数使用滤波器方法,例如卡尔曼滤波器与粒子滤波器等。
激光的优点是精度很高,速度快,计算量也不大,容易做成实时SLAM。缺点是价格昂贵,一台激光动辄上万元,会大幅提高一个机器人的成本。因此激光的研究主要集中于如何降低传感器的成本上。对应于激光的EKF-SLAM理论方面,因为研究较早,现在已经非常成熟。与此同时,人们也对EKF-SLAM的缺点也有较清楚的认识,例如不易表示回环、线性化误差严重、必须维护路标点的协方差矩阵,导致一定的空间与时间的开销,等等。
2.、传感器之视觉SLAM
视觉SLAM是21世纪SLAM研究热点之一,一方面是因为视觉十分直观,不免令人觉得:为何人能通过眼睛认路,机器人就不行呢?另一方面,由于CPU、GPU处理速度的增长,使得许多以前被认为无法实时化的视觉算法,得以在10 Hz以上的速度运行。硬件的提高也促进了视觉SLAM的发展。
以传感器而论,视觉SLAM研究主要分为三大类:单目、双目(或多目)、RGBD。其余还有鱼眼、全景等特殊相机,但是在研究和产品中都属于少数。此外,结合惯性测量器件(Inertial Measurement Unit,IMU)的视觉SLAM也是现在研究热点之一。就实现难度而言,我们可以大致将这三类方法排序为:单目视觉>双目视觉>RGBD。
单目相机SLAM简称MonoSLAM,即只用一支摄像头就可以完成SLAM。这样做的好处是传感器特别的简单、成本特别的低,所以单目SLAM非常受研究者关注。相比别的视觉传感器,单目有个最大的问题,就是没法确切地得到深度。这是一把双刃剑。
一方面,由于绝对深度未知,单目SLAM没法得到机器人运动轨迹以及地图的真实大小。直观地说,如果把轨迹和房间同时放大两倍,单目看到的像是一样的。因此,单目SLAM只能估计一个相对深度,在相似变换空间Sim(3)中求解,而非传统的欧氏空间SE(3)。如果我们必须要在SE(3)中求解,则需要用一些外部的手段,例如GPS、IMU等传感器,确定轨迹与地图的尺度(Scale)。
另一方面,单目相机无法依靠一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,单目SLAM要靠运动中的三角测量,来求解相机运动并估计像素的空间位置。即是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。同时,相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦,好在日常使用SLAM时,相机都会发生旋转和平移。不过,无法确定深度同时也有一个好处:它使得单目SLAM不受环境大小的影响,因此既可以用于室内,又可以用于室外。
相比于单目,双目相机通过多个相机之间的基线,估计空间点的位置。与单目不同的是,立体视觉既可以在运动时估计深度,亦可在静止时估计,消除了单目视觉的许多麻烦。不过,双目或多目相机配置与标定均较为复杂,其深度量程也随双目的基线与分辨率限制。通过双目图像计算像素距离,是一件非常消耗计算量的事情,现在多用FPGA来完成。