近年来,SLAM技术取得了惊人的发展。领先一步的激光SLAM已经成熟应用于各种场景。虽然视觉SLAM在落地应用上不如激光SLAM,但它仍然是一个研究的大热点,今天我们就来详细聊一聊视觉SLAM的那些事。什么是视觉SLAM?视觉SLAM主要是基于摄像头来完成对环境的感知。相对而言,摄像头成本相对较低,易于放置在商品硬件上,图像信息丰富,因此视觉SLAM也备受关注。目前,视觉SLAM可分为单目、双目(多眼)、RGBD三种类型。也有鱼眼、全景等专用相机,但在研究和产品上还是少数。此外,结合惯性测量装置(InertialMeasurementUnit,IMU)的视觉SLAM也是当前的研究热点之一。这三类方法在实现难度上大致排序为:单目视觉>双目视觉>RGBD。单目相机SLAM简称MonoSLAM,只用一个相机就可以完成SLAM。最大的优点是传感器简单,成本低,但同时也存在一个很大的问题,就是无法准确获取深度。一方面,由于绝对深度未知,单目SLAM无法获得机器人运动轨迹和地图的真实尺寸。如果轨迹和房间同时放大两倍,单目视图看起来是一样的。因此,单目SLAM只能估计一个相对深度。另一方面,单目相机不能依靠一个图像来获得图像中物体与自身的相对距离。为了估计这个相对深度,单目SLAM依靠运动中的三角测量来解决相机运动并估计像素的空间位置。也就是说,它的轨迹和地图只有在相机移动后才能收敛。如果相机不移动,则无法知道像素的位置。同时,相机运动不能是纯粹的旋转,这给单目SLAM的应用带来了一定的困扰。双目摄像头与单目摄像头的区别在于,立体视觉不仅可以在运动时估计深度,静止时也可以估计深度,免去了单目视觉的诸多麻烦。但双目或多眼相机的配置和标定较为复杂,深度范围也受到双目基线和分辨率的限制。通过双目图像计算像素距离是一项计算量非常大的任务,现在主要用FPGA来完成。RGBD相机是2010年左右开始兴起的一种相机,它最大的特点是可以通过红外结构光或TOF原理,直接测量图像中每个像素与相机的距离。因此,它可以提供比传统相机更多的信息,而且不必像单目或双目那样计算深度费时费力。视觉SLAM框架解读1.视觉SLAM中的传感器数据主要是对相机图像信息的读取和预处理。如果是在机器人里面,可能还会有码盘、惯性传感器等信息的读取和同步。2.视觉里程计视觉里程计的主要任务是估计相邻图像之间的相机运动和局部地图的外观。最简单的是两个图像之间的运动关系。计算机如何根据图像确定相机的运动。在图像上,我们只能看到单个像素,知道它们是某些空间点在相机成像平面上的投影结果。因此,首先要了解相机与空间点的几何关系。Vo(也称为前端)能够根据相邻帧之间的图像估计相机运动并恢复场景的空间结构,称之为里程计。之所以称为里程计,是因为它只计算相邻时刻的运动,与更早的过去信息没有关联。相邻力矩的运动串联起来形成机器人的运动轨迹,从而解决了定位问题。另一方面,根据每个时刻的相机位置,计算每个像素对应的空间点的位置,得到一张地图。3.后端优化后端优化主要是处理slam过程中的噪音问题。任何传感器都有噪声,所以除了处理“如何从图像中估计相机运动”之外,还需要关心估计的噪声有多大。前端向后端提供需要优化的数据和这些数据的初始值,而后端负责整个优化过程。它往往只面向数据,而不管数据来自哪里。在视觉SLAM中,前端更多与计算和视觉研究相关,比如图像特征提取和匹配,而后端主要是滤波和非线性优化算法。4.环回检测环回检测也可以称为闭环检测,指的是机器人对所到达场景的识别能力。如果检测成功,则可以显着减少累积误差。回环检测本质上是一种检测观察数据相似性的算法。对于视觉SLAM,大部分系统使用比较成熟的词袋模型(Bag-of-Words,BoW)。词袋模型将图像中的视觉特征(SIFT、SURF等)进行聚类,然后构建字典,进而找出每张图像中包含了哪些“词”(words)。一些研究人员还使用传统的模式识别方法将回环检测构造为分类问题,并训练分类器进行分类。5.MappingMapping主要是根据估计的轨迹建立对应任务需求的地图。在机器人学中,地图表示主要包括网格图、直接表示法、拓扑图和特征点图。特征点图利用相关的几何特征(如点、线、面)来表示环境,常用于视觉SLAM技术。这种地图一般是由GPS、UWB、相机等vSLAM算法以稀疏方式生成的。优点是数据存储量和计算量相对较小,在最早的SLAM算法中比较常见。视觉SLAM的工作原理大多数视觉SLAM系统的工作原理是通过连续的相机帧跟踪关键点,对它们的3D位置进行三角测量,并使用此信息来近似相机自身的姿态。简而言之,这些系统的目标是绘制与其位置相关的环境图。机器人系统可以使用该地图在环境中导航。与其他形式的SLAM技术不同,这只需一个3D视觉相机即可完成。通过跟踪摄像机视频帧中足够数量的关键点,可以快速了解传感器的方向和周围物理环境的结构。所有视觉SLAM系统都在不断努力,以最大限度地减少重投影误差,或投影点与实际点之间的差异,通常通过一种称为BundleAdjustment(BA)的算法解决方案。vSLAM系统需要实时运算,涉及大量的计算,所以位置数据和建图数据往往是分开进行BundleAdjustment,但同时也便于在最终合并前加快处理速度。视觉SLAM和激光SLAM有什么区别?在业界,视觉SLAM和激光SLAM谁更好,谁将成为未来的主流趋势,成为大家关注的热点。不同的人也有不同的看法和看法。下面将从成本、应用场景、地图精度、易用性几个方面进行阐述。1、成本在成本方面,激光雷达普遍较贵,但目前国内已有低成本的激光雷达方案,VSLAM主要通过摄像头采集数据信息。与激光雷达相比,摄像头的成本显然要低很多。而激光雷达可以更高精度地测量障碍点的角度和距离,便于定位和导航。2、应用场景在应用场景方面,VSLAM的应用场景要丰富得多。VSLAM在室内和室外环境下都可以工作,但是它对光线的依赖性很强,无法在黑暗的地方或一些无纹理的区域工作。激光SLAM目前主要用于室内地图构建和导航。3.地图精度LaserSLAM在构建地图时具有很高的精度。士兰科技RPLIDAR系列地图精度可达2cm左右;距离范围在3-12m之间),建图精度在3cm左右;因此,激光SLAM的建图精度普遍高于VSLAM,可直接用于定位导航。视觉SLAM建图4.易用性激光SLAM和基于深度相机的视觉SLAM都是直接获取环境中的点云数据,根据生成的点云数据计算出哪里有障碍物以及障碍物的距离。然而,基于单目、双目、鱼眼相机的视觉SLAM方案不能直接获取环境中的点云,而是形成灰度或彩色图像。它需要不断移动自己的位置,提取和匹配特征点,并使用三角测距的方法计算障碍物的距离。总的来说,激光SLAM相对比较成熟,是目前最可靠的定位导航解决方案,而视觉SLAM仍然是未来的主流研究方向,但未来两者的融合是必然趋势。
