SLAM概述
SLAM:SimultaneousLocalizationandMapping,即时定位与地图构建技术。它指的是:机器人从未知环境的未知地点出发,在运动过程中通过重复观测到的环境特征定位自身位置和姿态,再根据自身位置构建周围环境的增量式地图,从而达到同时定位和地图构建的目的。
SLAM技术的发展推动了定位(Localization)、跟踪(Tracking)以及路径规划(PathPlanning)技术的发展,进而对无人机、无人驾驶、机器人等热门研究领域产生重大影响。
我们来看看SLAM技术都在哪些领域发挥作用吧。
图1SLAM应用领域
VR/AR方面:辅助增强视觉效果。SLAM技术能够构建视觉效果更为真实的地图,从而针对当前视角渲染虚拟物体的叠加效果,使之更真实没有违和感。VR/AR代表性产品中微软Hololens、谷歌ProjectTango以及MagicLeap都应用了SLAM作为视觉增强手段。
无人机领域及机器人定位导航领域:地图建模。SLAM可以快速构建局部3D地图,并与地理信息系统(GIS)、视觉对象识别技术相结合,可以辅助无人机识别路障并自动避障规划路径,还可以辅助机器人执行路径规划、自主探索、导航等任务。曾经刷爆美国朋友圈的Hovercamera无人机,正是应用SLAM技术。国内的科沃斯、塔米扫地机通过用SLAM算法结合激光雷达或者摄像头的方法,让扫地机可以高效绘制室内地图,智能分析和规划扫地环境,从而成功让自己步入了智能导航的阵列。
无人驾驶领域:视觉里程计。SLAM技术可以提供视觉里程计功能,并与GPS等其他定位方式相融合,从而满足无人驾驶精准定位的需求。例如,应用了基于激光雷达技术LidarSlam的Google无人驾驶车以及牛津大学MobileRoboticsGroup11年改装的无人驾驶汽车野猫(Wildcat)均已成功路测。
SLAM框架
自从上世纪80年代SLAM概念的提出到现在,SLAM技术已经走过了30多年的历史。SLAM技术采用的硬件、算法也在“与时俱进”,SLAM技术框架逐渐丰富。在硬件方面,SLAM系统使用的传感器从早期的声呐,逐渐演变到后来的2D/3D激光雷达,再到单目、双目摄像机,RGBD、ToF等深度摄像机,以及与惯性测量单元(IMU)等传感器的融合。在软件算法方面,也从开始的基于滤波器的方法,如扩展卡尔曼滤波器(EKF)、粒子滤波器(PF)等,向基于优化的方法转变。
SLAM系统一般分为五个模块,系统框架如图2所示,包括:
- 传感器数据:主要用于采集实际环境中的各类型原始数据。包括激光扫描数据、视频图像数据、点云数据等。
- 视觉里程计:主要用于不同时刻间移动目标相对位置的估算。包括特征匹配、直接配准等算法的应用。
- 后端:主要用于优化视觉里程计带来的累计误差。包括滤波器、图优化等算法应用。
- 建图:用于三维地图构建。
- 回环检测:主要用于空间累积误差消除
图2SLAM系统框架
其工作流程大致为:
传感器读取数据后,视觉里程计估计两个时刻的相对运动(Ego-motion),后端处理视觉里程计估计结果的累积误差,建图则根据前端与后端得到的运动轨迹来建立三维地图[1],回环检测考虑了同一场景不同时刻的图像,提供了空间上约束来消除累积误差。
SLAM技术的发展
依据传感器的特点不同,SLAM技术也分为激光和视觉两个技术路线,其特点如图4所示。
- 激光雷达传感器
激光雷达利用激光在同一空间参考系下获取物体表面每个采样点的空间坐标,可得到一系列表达目标空间分布和目标表面特性的海量点的集合。由于激光雷达距离测量比较准确,误差模型简单,在强光直射以外的环境中运行稳定,因此点云的处理也比较容易。同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。激光SLAM理论研究也相对成熟,落地产品更丰富。
- 视觉传感器
早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。近年来,随着具有稀疏性的非线性优化理论(BundleAdjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。
图3SLAM两大类传感器
图4SLAM两大传感器特点
1、激光雷达SLAM发展
基于激光雷达的SLAM(LidarSLAM)采用2D或3D激光雷达(也叫单线或多线激光雷达)。在室内机器人(如扫地机器人)上,一般使用2D激光雷达,在无人驾驶领域,一般使用3D激光雷达。
现任Udacity创始人CEO、前Google副总裁、谷歌无人车领导者SebastianThrun在他2005年的经典著作《ProbabilisticRobotics》一书中详细阐述了利用2D激光雷达基于概率方法进行地图构建和定位的理论基础,并阐述了基于RBPF(Rao-blackwellizedparticlefilter)粒子滤波器的FastSLAM方法,成为后来2D激光雷达建图的标准方法之一GMapping的基础,该算法也被集成到机器人操作系统(RobotOperationSystem,ROS)中。2013年,对ROS中的几种2DSLAM的算法HectorSLAM,KartoSLAM,CoreSLAM,LagoSLAM和GMapping做了比较评估[2]。2016年,Google开源其激光雷达SLAM算法库Cartographer,它与GMapping相比,能够有效处理闭环,达到了较好的效果。
2、视觉SLAM发展
现在主流的视觉SLAM系统的特性主要体现在前端和后端,如图5所示。
前端对应视觉里程计,主要用于数据关联,研究帧与帧之间变换关系,完成实时的位姿跟踪,对输入的图像进行处理,计算姿态变化。由于与后端还存在反馈,因此也检测并处理闭环,当有惯性测量单元(IMU)信息时,还可以参与融合计算。
后端主要对前端的输出结果进行优化,利用滤波理论,如扩展卡尔曼滤波(EKF)、粒子滤波(PF)等优化理论进行树或图的优化,得到最优的位姿估计和地图。
图5典型SLAM的前端和后端
2007年,第一个成功基于单目摄像头的纯视觉SLAM系统MonoSLAM[3]诞生。同年,Murray和Klein提出了实时SLAM系统PTAM(ParallelTrackingandMapping)[4],PTAM实现了架构创新,它将姿态跟踪(Tracking)和建图(Mapping)两个线程分开并行进行,这在当时是一个创举,第一次让大家觉得对地图的优化可以整合到实时计算中。这种设计为后来的实时SLAM(如ORB-SLAM)所效仿,成为了现代SLAM系统的标配。
图6PTAM系统与EKF-SLAM系统产生结果对比
2015年,Mur-Artal等提出了开源的单目ORB-SLAM[6],并于2016年拓展为支持双目和RGBD传感器的ORB-SLAM2[7],它是目前支持传感器最全且性能最好的视觉SLAM系统之一,也是所有在KITTI数据集上提交结果的开源系统中排名最靠前的一个[8]。
如图7所示,ORB-SLAM主要分为三个线程进行,即跟踪(Tracking)、建图(LocalMapping)和闭环检测(LoopClosing)。跟踪部分是主要是从图像中提取ORB特征,根据上一帧进行姿态估计,或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧。建图部分主要完成局部地图构建。包括对关键帧的插入,验证最近生成的地图点并进行筛选,然后生成新的地图点,使用局部捆集调整(LocalBA),最后再对插入的关键帧进行筛选,去除多余的关键帧。闭环检测部分主要分为两个过程,分别是闭环探测和闭环校正。闭环检测先使用二进制词典匹配检测(WOB)进行探测,然后通过Sim3算法计算相似变换。闭环校正,主要是闭环融合和EssentialGraph的图优化。由于ORB-SLAM系统是基于特征点的SLAM系统,故其能够实时计算出相机的轨线,并生成场景的稀疏三维重建结果。
图7ORB-SLAM2的三线程结构
2016年,TUM机器视觉组的Engel等人又提出了DSO系统[9],该系统是一种新的基于直接法和稀疏法的视觉里程计,它将最小化光度误差模型和模型参数联合优化方法相结合。为了满足实时性,不对图像进行光滑处理,而是对整个图像均匀采样(如图8)。该系统在TUMmonoVO、EuRoCMAV和ICL-NUIM三个数据集上进行了测试,达到了很高的跟踪精度和鲁棒性。
图8DSO系统
2017年,香港科技大学的沈绍劼老师课题组提出了融合惯性测量单元(IMU)和视觉信息的VINS系统[10],同时开源手机和Linux两个版本的代码,这是首个直接开源手机平台代码的视觉IMU融合SLAM系统。这个系统可以运行在iOS设备上,为手机端的增强现实应用提供精确的定位功能,同时该系统也在应用在了无人机控制上,并取得了较好的效果。
SLAM未来展望
SLAM前20年(1986-2004)可称之为“古典年代”。古典年代时期,引入了SLAM概率论推导方法,包括基于扩展卡尔曼滤波、粒子滤波和最大似然估计;这里的第一个挑战是效率和数据关联的鲁棒性问题。
接下来的年代,我们称之为“算法分析”年代(2004-2015),在算法分析的年代,有许多SLAM基本特性的研究,包括可观测性,收敛性和一致性。在这一时期,研究者们理解了稀疏特征在高效SLAM解决方案中的重要角色,开发了主要开源SLAM库。
现在我们正进入SLAM的第三个时代,从鲁棒性觉醒的时代,它具有以下特征:
1.鲁棒性能:这一时期SLAM系统在任意环境总运行的失效率较低;系统具有失效保护机制且具有自动调整的功能可以根据应用场景自动选择系统参数;
2.高层次的理解力:SLAM系统已经除了基本的几何重建还能够在更高层次上理解环境信息(比如,语义、可供性、高层几何意义、物理意义等);
3.资源敏感:SLAM系统可以进行裁剪以满足现有传感器和计算资源,也可以根据现有资源调整计算负载;
4.对任务驱动的判断:SLAM系统可以自适应地表示地图,其复杂度可以根据机器人执行的任务而改变。
地理信息在视频监控中有着广泛的应用,传统的二维地理信息数据无法与平安城市监控系统的业务数据进行有效的集成和关联,无法提供深层次数据服务,已经不能适应城市发展的需要与人民对优质生活的要求。若将SLAM三维稠密地图构建用于视频监控领域,可以更好地实现对监控摄像头的搜索定位和视频决策与分析。在三维地图内模拟云台操作也可直接查看三维内效果和视频效果,这便于在三维地图内进行可视调整,调试出最佳监控点位,便于摄像头的安装及后期维护。
参考文献:
[1]S?renRiisgaardandMortenRufusBlas:SLAMforDummies,ATutorialApproachtoSimultaneousLocalizationandMapping
[2]JoaoMachadoSantos,DavidPortugalandRuiP.Rocha.AnEvaluationof2DSLAMTechniquesAvailableinRobotOperatingSystem
[3]AJDavison,IDReid,NDMolton.MonoSLAM:Real-timesinglecameraSLAM.IEEETransactionsonPatternAnalysisandMachineIntelligence,June2007
[4]KleinG,MurrayD.ParalleltrackingandmappingforsmallARworkspaces.ProceedingsofIEEEandACMInternationalSymposiumonMixedandAugmentedReality.2007
[5]KleinG,MurrayD.Paralleltrackingandmappingonacameraphone.ProceedingsofIEEEandACMInternationalSymposiumonMixedandAugmentedReality.2009
[6]Mur-ArtalR,MontielJMM,TardosJD.ORB-SLAM:aversatileandaccuratemonocularSLAMsystem.IEEETransactionsonRobotics,2015,31(5):1147-1163
[7]RaúlMur-Artal,andJuanD.Tardós.ORB-SLAM2:anOpen-SourceSLAMSystemforMonocular,StereoandRGB-DCameras.ArXivpreprintarXiv:1610.06475,2016
[8]http://www.cvlibs.net/datasets/kitti/eval_odometry.php
[9]JakobEngelandVladlenKoltunandDanielCremers.DirectSparseOdometry.IEEETRANSACTIONSONPATTERNANALYSISANDMACHINEINTELLIGENCE.2017
[10]PeiliangLi,TongQin,BotaoHu,FengyuanZhuandShaojieShen.MonocularVisual-InertialStateEstimationforMobileAugmentedReality.ISMAR2017
【本文为51CTO专栏作者“中国保密协会科学技术分会”原创稿件,转载请联系原作者】