SLAM技术

JUMU实名认证 发表于 2019-02-13 21:35 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
当今科技发展速度飞快,想让用户在AR/VR、机器人、无人机、无人驾驶领域体验加强,还是需要更多前沿技术做支持,SLAM就是其中之一。实际上,有人就曾打比方,若是手机离开了WIFI和数据网络,就像无人车和机器人,离开了SLAM一样。

什么是SLAM

SLAM:Simultaneous Localization and Mapping,即时定位与地图构建技术。它指的是:机器人从未知环境的未知地点出发,在运动过程中通过重复观测到的环境特征定位自身位置和姿态,再根据自身位置构建周围环境的增量式地图,从而达到同时定位和地图构建的目的。

SLAM试图解决这样的问题:一个机器人在未知的环境中运动,如何通过对环境的观测确定自身的运动轨迹,同时构建出环境的地图。SLAM技术正是为了实现这个目标涉及到的诸多技术的总和。SLAM通常包括如下几个部分,特征提取,数据关联,状态估计,状态更新以及特征更新等。引用知乎上的一个解释把它翻译成大白话,就是:

当你来到一个陌生的环境时,为了迅速熟悉环境并完成自己的任务(比如找饭馆,找旅馆),你应当做以下事情:
a.用眼睛观察周围地标如建筑、大树、花坛等,并记住他们的特征(特征提取)
b.在自己的脑海中,根据双目获得的信息,把特征地标在三维地图中重建出来(三维重建)
c.当自己在行走时,不断获取新的特征地标,并且校正自己头脑中的地图模型(bundle adjustment or EKF)
d.根据自己前一段时间行走获得的特征地标,确定自己的位置(trajectory)
e.当无意中走了很长一段路的时候,和脑海中的以往地标进行匹配,看一看是否走回了原路(loop-closure detection)。实际这一步可有可无。
以上五步是同时进行的,因此是simultaneous localization and mapping.

SLAM技术发展

自从上世纪80年代SLAM概念的提出到现在,SLAM技术已经走过了30多年的历史。SLAM技术采用的硬件、算法也在“与时俱进”,SLAM技术框架逐渐丰富。在硬件方面,SLAM系统使用的传感器从早期的声呐,逐渐演变到后来的2D/3D激光雷达,再到单目、双目摄像机,RGBD、ToF等深度摄像机,以及与惯性测量单元(IMU)等传感器的融合。在软件算法方面,也从开始的基于滤波器的方法,如扩展卡尔曼滤波器(EKF)、粒子滤波器(PF)等,向基于优化的方法转变。

SLAM分析框架

SLAM系统一般分为五个模块,系统框架如图所示,包括:
jkDBOz988998bl89.jpg

传感器数据:主要用于采集实际环境中的各类型原始数据。包括激光扫描数据、视频图像数据、点云数据等。

视觉里程计:主要用于不同时刻间移动目标相对位置的估算。包括特征匹配、直接配准等算法的应用。

后端:主要用于优化视觉里程计带来的累计误差。包括滤波器、图优化等算法应用。

建图:用于三维地图构建。

回环检测:主要用于空间累积误差消除。

其工作流程大致为:
传感器读取数据后,视觉里程计估计两个时刻的相对运动(Ego-motion),后端处理视觉里程计估计结果的累积误差,建图则根据前端与后端得到的运动轨迹来建立三维地图,回环检测考虑了同一场景不同时刻的图像,提供了空间上约束来消除累积误差。
(一)依据传感器的特点不同,SLAM技术也分为激光和视觉两个技术路线

1、激光雷达传感器

激光雷达利用激光在同一空间参考系下获取物体表面每个采样点的空间坐标,可得到一系列表达目标空间分布和目标表面特性的海量点的集合。由于激光雷达距离测量比较准确,误差模型简单,在强光直射以外的环境中运行稳定,因此点云的处理也比较容易。同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。激光SLAM理论研究也相对成熟,落地产品更丰富。
激光雷达SLAM发展
基于激光雷达的SLAM(Lidar SLAM)采用2D或3D激光雷达(也叫单线或多线激光雷达)。在室内机器人(如扫地机器人)上,一般使用2D激光雷达,在无人驾驶领域,一般使用3D激光雷达。

现任Udacity创始人CEO、前Google副总裁、谷歌无人车领导者Sebastian Thrun在他2005年的经典著作《ProbabilisticRobotics》一书中详细阐述了利用2D激光雷达基于概率方法进行地图构建和定位的理论基础,并阐述了基于RBPF(Rao-blackwellizedparticle filter)粒子滤波器的FastSLAM方法,成为后来2D激光雷达建图的标准方法之一GMapping的基础,该算法也被集成到机器人操作系统(Robot Operation System,ROS)中。2013年,对ROS中的几种2DSLAM的算法HectorSLAM,KartoSLAM,CoreSLAM,LagoSLAM和GMapping做了比较评估。2016年,Google开源其激光雷达SLAM算法库Cartographer,它与GMapping相比,能够有效处理闭环,达到了较好的效果。

2、视觉传感器

早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。近年来,随着具有稀疏性的非线性优化理论(Bundle Adjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。


UPXOMa7O0ZTPfmcF.jpg
图 SLAM两大类传感器



yZ5HwEs999h5O9Oe.jpg
2、视觉SLAM发展
现在主流的视觉SLAM系统的特性主要体现在前端和后端,如图5所示。

前端对应视觉里程计,主要用于数据关联,研究帧与帧之间变换关系,完成实时的位姿跟踪,对输入的图像进行处理,计算姿态变化。由于与后端还存在反馈,因此也检测并处理闭环,当有惯性测量单元(IMU)信息时,还可以参与融合计算。

后端主要对前端的输出结果进行优化,利用滤波理论,如扩展卡尔曼滤波(EKF)、粒子滤波(PF)等优化理论进行树或图的优化,得到最优的位姿估计和地图。

tazdsm24chAH73Xs.jpg

图 典型SLAM的前端和后端

2007年,第一个成功基于单目摄像头的纯视觉SLAM 系统MonoSLAM[3]诞生。同年,Murray和Klein提出了实时SLAM系统PTAM(ParallelTracking and Mapping)[4], PTAM实现了架构创新,它将姿态跟踪(Tracking)和建图(Mapping)两个线程分开并行进行,这在当时是一个创举,第一次让大家觉得对地图的优化可以整合到实时计算中。这种设计为后来的实时SLAM(如ORB-SLAM)所效仿,成为了现代SLAM系统的标配。
dQu87Uu11OqO1uos.jpg


图 PTAM系统与EKF-SLAM系统产生结果对比

2015年,Mur-Artal 等提出了开源的单目ORB-SLAM[6],并于2016年拓展为支持双目和RGBD传感器的ORB-SLAM2[7],它是目前支持传感器最全且性能最好的视觉SLAM系统之一,也是所有在KITTI数据集上提交结果的开源系统中排名最靠前的一个。
如图7所示,ORB-SLAM主要分为三个线程进行,即跟踪(Tracking)、建图(LocalMapping)和闭环检测(LoopClosing)。跟踪部分是主要是从图像中提取ORB特征,根据上一帧进行姿态估计,或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧。建图部分主要完成局部地图构建。包括对关键帧的插入,验证最近生成的地图点并进行筛选,然后生成新的地图点,使用局部捆集调整(Local BA),最后再对插入的关键帧进行筛选,去除多余的关键帧。闭环检测部分主要分为两个过程,分别是闭环探测和闭环校正。闭环检测先使用二进制词典匹配检测(WOB)进行探测,然后通过Sim3算法计算相似变换。闭环校正,主要是闭环融合和Essential Graph的图优化。由于ORB-SLAM系统是基于特征点的SLAM系统,故其能够实时计算出相机的轨线,并生成场景的稀疏三维重建结果。
M3okwsKmR44ARP4A.jpg


图 ORB-SLAM2的三线程结构

2016年,TUM机器视觉组的Engel等人又提出了DSO系统[9],该系统是一种新的基于直接法和稀疏法的视觉里程计,它将最小化光度误差模型和模型参数联合优化方法相结合。为了满足实时性,不对图像进行光滑处理,而是对整个图像均匀采样(如图8)。该系统在TUM monoVO、EuRoC MAV和ICL-NUIM三个数据集上进行了测试,达到了很高的跟踪精度和鲁棒性。

Q98V1REvMww8E13N.jpg
图 DSO系统

2017年,香港科技大学的沈绍劼老师课题组提出了融合惯性测量单元(IMU)和视觉信息的VINS系统[10],同时开源手机和Linux两个版本的代码,这是首个直接开源手机平台代码的视觉IMU融合SLAM系统。这个系统可以运行在iOS设备上,为手机端的增强现实应用提供精确的定位功能,同时该系统也在应用在了无人机控制上,并取得了较好的效果。

SLAM前20年(1986-2004)可称之为“古典年代”。古典年代时期,引入了SLAM概率论推导方法,包括基于扩展卡尔曼滤波、粒子滤波和最大似然估计;这里的第一个挑战是效率和数据关联的鲁棒性问题。

接下来的年代,我们称之为“算法分析”年代(2004-2015),在算法分析的年代,有许多SLAM基本特性的研究,包括可观测性,收敛性和一致性。在这一时期,研究者们理解了稀疏特征在高效SLAM解决方案中的重要角色,开发了主要开源SLAM库。

现在我们正进入SLAM的第三个时代,从鲁棒性觉醒的时代,它具有以下特征:

1.鲁棒性能:这一时期SLAM系统在任意环境总运行的失效率较低;系统具有失效保护机制且具有自动调整的功能可以根据应用场景自动选择系统参数;

2.高层次的理解力:SLAM系统已经除了基本的几何重建还能够在更高层次上理解环境信息(比如,语义、可供性、高层几何意义、物理意义等);

3.资源敏感:SLAM系统可以进行裁剪以满足现有传感器和计算资源,也可以根据现有资源调整计算负载;

4.对任务驱动的判断:SLAM系统可以自适应地表示地图,其复杂度可以根据机器人执行的任务而改变。

地理信息在视频监控中有着广泛的应用,传统的二维地理信息数据无法与平安城市监控系统的业务数据进行有效的集成和关联,无法提供深层次数据服务,已经不能适应城市发展的需要与人民对优质生活的要求。若将SLAM三维稠密地图构建用于视频监控领域,可以更好地实现对监控摄像头的搜索定位和视频决策与分析。在三维地图内模拟云台操作也可直接查看三维内效果和视频效果,这便于在三维地图内进行可视调整,调试出最佳监控点位,便于摄像头的安装及后期维护。

F1ObNLBH90Jb4S0n.jpg

Visual Odometry,即视觉里程计。它估计两个时刻机器人的相对运动(Ego-motion)。在激光SLAM中,我们可以将当前的观测与全局地图进行匹配,用ICP求解相对运动。而对于相机,它在欧氏空间里运动,我们经常需要估计一个三维空间的变换矩阵——SE3或Sim3(单目情形)。求解这个矩阵是VO的核心问题,而求解的思路,则分为基于特征的思路和不使用特征的直接方法。

pRf29A184wt4RriI.jpg

特征匹配
基于特征的方法是目前VO的主流方式。对于两幅图像,首先提取图像中的特征,然后根据两幅图的特征匹配,计算相机的变换矩阵。最常用的是点特征,例如Harris角点、SIFT、SURF、ORB。如果使用RGBD相机,利用已知深度的特征点,就可以直接估计相机的运动。给定一组特征点以及它们之间的配对关系,求解相机的姿态,该问题被称为PnP问题(Perspective-N-Point)。PnP可以用非线性优化来求解,得到两个帧之间的位置关系。
不使用特征进行VO的方法称为直接法。它直接把图像中所有像素写进一个位姿估计方程,求出帧间相对运动。例如,在RGBD SLAM中,可以用ICP(Iterative Closest Point,迭代最近邻)求解两个点云之间的变换矩阵。对于单目SLAM,我们可以匹配两个图像间的像素,或者像图像与一个全局的模型相匹配。直接法的典型例子是SVO和LSD-SLAM。它们在单目SLAM中使用直接法,取得了较好的效果。目前看来,直接法比特征VO需要更多的计算量,而且对相机的图像采集速率也有较高的要求。

SLAM框架之后端
在VO估计帧间运动之后,理论上就可以得到机器人的轨迹了。然而视觉里程计和普通的里程计一样,存在累积误差的问题(Drift)。直观地说,在t1和t2时刻,估计的转角比真实转角少1度,那么之后的轨迹就全部少掉了这1度。时间一长,建出的房间可能由方形变成了多边形,估计出的轨迹亦会有严重的漂移。所以在SLAM中,还会把帧间相对运动放到一个称之为后端的程序中进行加工处理。
早期的SLAM后端使用滤波器方式。由于那时还未形成前后端的概念,有时人们也称研究滤波器的工作为研究SLAM。SLAM最早的提出者R. Smith等人就把SLAM建构成了一个EKF(Extended Kalman Filter,扩展卡尔曼滤波)问题。他们按照EKF的形式,把SLAM写成了一个运动方程和观测方式,以最小化这两个方程中的噪声项为目的,使用典型的滤波器思路来解决SLAM问题。
当一个帧到达时,我们能(通过码盘或IMU)测出该帧与上一帧的相对运动,但是存在噪声,是为运动方程。同时,通过传感器对路标的观测,我们测出了机器人与路标间的位姿关系,同样也带有噪声,是为观测方程。通过这两者信息,我们可以预测出机器人在当前时刻的位置。同样,根据以往记录的路标点,我们又能计算出一个卡尔曼增益,以补偿噪声的影响。于是,对当前帧和路标的估计,即是这个预测与更新的不断迭代的过程。
21世纪之后,SLAM研究者开始借鉴SfM(Structure from Motion)问题中的方法,把捆集优化(Bundle Adjustment)引入到SLAM中来。优化方法和滤波器方法有根本上的不同。它并不是一个迭代的过程,而是考虑过去所有帧中的信息。通过优化,把误差平均分到每一次观测当中。在SLAM中的Bundle Adjustment常常以图的形式给出,所以研究者亦称之为图优化方法(Graph Optimization)。图优化可以直观地表示优化问题,可利用稀疏代数进行快速的求解,表达回环也十分的方便,因而成为现今视觉SLAM中主流的优化方法。

SLAM框架之回环检测
回环检测,又称闭环检测(Loop closure detection),是指机器人识别曾到达场景的能力。如果检测成功,可以显著地减小累积误差。回环检测实质上是一种检测观测数据相似性的算法。对于视觉SLAM,多数系统采用目前较为成熟的词袋模型(Bag-of-Words, BoW)。词袋模型把图像中的视觉特征(SIFT, SURF等)聚类,然后建立词典,进而寻找每个图中含有哪些“单词”(word)。也有研究者使用传统模式识别的方法,把回环检测建构成一个分类问题,训练分类器进行分类。
回环检测的难点在于,错误的检测结果可能使地图变得很糟糕。这些错误分为两类:1.假阳性(False Positive),又称感知偏差(Perceptual Aliasing),指事实上不同的场景被当成了同一个;2.假阴性(False Negative),又称感知变异(Perceptual Variability),指事实上同一个场景被当成了两个。感知偏差会严重地影响地图的结果,通常是希望避免的。一个好的回环检测算法应该能检测出尽量多的真实回环。研究者常常用准确率-召回率曲线来评价一个检测算法的好坏。

SLAM技术目前主要应用在哪些领域?
目前,SLAM(即时定位与地图构建)技术主要被运用于无人机、无人驾驶、机器人、AR、智能家居等领域,从各应用场景入手,促进消费升级。
图1 SLAM应用领域

VR/AR 方面:辅助增强视觉效果。SLAM技术能够构建视觉效果更为真实的地图,从而针对当前视角渲染虚拟物体的叠加效果,使之更真实没有违和感。VR/AR代表性产品中微软Hololens、谷歌ProjectTango以及MagicLeap都应用了SLAM作为视觉增强手段。

无人机领域及机器人定位导航领域:地图建模。SLAM可以快速构建局部3D地图,并与地理信息系统(GIS)、视觉对象识别技术相结合,可以辅助无人机识别路障并自动避障规划路径,还可以辅助机器人执行路径规划、自主探索、导航等任务。曾经刷爆美国朋友圈的Hover camera无人机,正是应用SLAM技术。国内的科沃斯、塔米扫地机通过用SLAM算法结合激光雷达或者摄像头的方法,让扫地机可以高效绘制室内地图,智能分析和规划扫地环境,从而成功让自己步入了智能导航的阵列。

无人驾驶领域:视觉里程计。SLAM 技术可以提供视觉里程计功能,并与GPS等其他定位方式相融合,从而满足无人驾驶精准定位的需求。例如,应用了基于激光雷达技术Lidar Slam的Google无人驾驶车以及牛津大学Mobile Robotics Group11年改装的无人驾驶汽车野猫(Wildcat)均已成功路测。

机器人
激光+SLAM是目前机器人自主定位导航所使用的主流技术。激光测距相比较于图像和超声波测距,具有良好的指向性和高度聚焦性,是目前最可靠、稳定的定位技术。激光雷达传感器获取地图信息,构建地图,实现路径规划与导航。
lb2RVdBl0O9dDuDL.jpg

无人驾驶
无人驾驶是近年来较火的话题之一,Google、Uber、百度等企业都在加速研发无人驾驶相关技术,抢占先机。
随着城市物联网和智能系统的完善,无人驾驶必是大势所趋。无人驾驶利用激光雷达传感器(Velodyne、IBEO等)作为工具,获取地图数据,并构建地图,规避路程中遇到的障碍物,实现路径规划。跟SLAM技术在机器人领域的应用类似,只是相比较于SLAM在机器人中的应用,无人驾驶的雷达要求和成本要明显高于机器人。
KMqbcTsWfcitvDC2.jpg

无人机
无人机在飞行的过程中需要知道哪里有障碍物,该怎么规避,怎么重新规划路线。显然,这是SLAM技术的应用。但无人机飞行的范围较大,所以对精度的要求不高,市面上其他的一些光流、超声波传感器可以作为辅助。
V22He7ZjkK0wsS0b.jpg

AR
AR通过电脑技术,将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。这一画面的实现,离不开SLAM技术的实时定位。虽然在AR行业有很多可代替技术,但是,SLAM技术是最理想的定位导航技术。
BTuy7Ia22aYd0Urv.jpg
相较于SLAM在机器人、无人驾驶等领域的应用,在AR行业的应用则有很多不同点。
1、精度上:AR一般更关注于局部精度,要求恢复的相机运动避免出现漂移、抖动,这样叠加的虚拟物体才能看起来与现实场景真实地融合在一起。但在机器人和无人驾驶领域则一般更关注全局精度,需要恢复的整条运动轨迹误差累积不能太大,循环回路要能闭合,而在某个局部的漂移、 抖动等问题往往对机器人应用来说影响不大。
2、效率上:AR需要在有限的计算资源下实时求解,人眼的刷新率为24帧,所以AR的计算效率通常需要到达30帧以上; 机器人本身运动就很慢,可以把帧率降低,所以对算法效率的要求相对较低。
3、配置上:AR对硬件的体积、功率、成本等问题比机器人更敏感,比如机器人上可以配置鱼眼、双目或深度摄像头、高性能CPU等硬件来降低SLAM的难度,而AR应用更倾向于采用更为高效、鲁邦的算法达到需求。

多传感器融合、优化数据关联与回环检测、与前端异构处理器集成、提升鲁棒性和重定位精度都是SLAM技术接下来的发展方向,但这些都会随着消费刺激和产业链的发展逐步解决。就像手机中的陀螺仪一样,在不久的将来,也会飞入寻常百姓家,改变人类的生活。

相关主题

  距米网  

找到您想要的设计

工程师、学生在线交流学习平台
关注我们

手机版- 距米网 |苏公网安备32041102000587号

©2017-2025 苏ICP备18040927号-1