作者:薛光辉、李瑞雪、张钲昊、刘睿
来源:信息与控制
00 摘要
slam算法是移动机器人实现自主移动的关键环节。激光雷达(lidar)具有测距精度高、不易受外部干扰和地图构建直观方便等优点,广泛应用于大型复杂室内外场景地图的构建。随着3d激光器的应用与普及,国内外学者围绕基于3d激光雷达的slam算法的研究已取得丰硕的成果。
本文梳理了3d激光slam算法在前端数据关联、后端优化等环节的国内外研究现状,分析总结了目前各种3d激光slam算法以及改进方案的原理和优缺点,阐述了深度学习和多传感器融合理论与技术在3d激光slam算法中的应用情况,指出多源信息融合、与深度学习结合、应用场景的鲁棒性、slam算法通用框架及移动传感器和无线信号体制的技术渗透是3d激光slam算法的研究热点和发展趋势。
研究成果对3d激光slam算法和未知环境中移动机器人即时定位和地图构建的研究具有重要的参考价值和指导意义。
01 引言
slam算法的经典框架包括前端数据关联和后端优化两部分,如图1所示。前端依据激光雷达测得的点云数据,通过扫描匹配进行帧间配准,闭环检测以获得不同帧间点云数据的关系,不断更新位置估计,并存储相应的地图信息;后端通过维护和优化前端得到的机器人位姿和观测约束,得到所构建地图的最大似然估计与机器人当前位姿。
图1 激光slam算法框架
根据所用传感器,slam算法大致分为基于视觉传感器的视觉slam算法和基于激光雷达的激光slam算法两种。与视觉传感器相比,激光雷达具有测距精度高、不易受光照与视角变化等外部干扰和地图构建直观方便等优点,广泛应用于大型复杂室内外场景地图的构建。
激光雷达按照激光线数不同分为2d激光雷达和3d激光雷达。目前2d激光slam技术发展较为成熟,已在服务机器人和工业现场得到了应用。
2d激光雷达同时发射和接受单线的激光,其结构简单、扫描速度高、角度分辨率高,功耗低且精度可达厘米级,但受限于平面环境而无法适用于全地形环境,在有起伏或者存在坡道等场景就不能实现定位和地图构建。
3d激光雷达通过发射多束激光测量其与未知环境中物体的几何信息,获取包含精准的距离和角度信息的点云数据,体现3维空间结构信息,而且线数越多获得的激光点个数越多,对环境结构的描述也更清晰。
随着多线激光雷达的量产和普及,以及嵌入式处理器功耗降低和算力增强,3d激光雷达开始走向低成本、低功耗和高可靠性的应用,基于3d激光雷达的slam算法得到了迅猛的发展。
zhang等于2014年提出的loam(lidar odometry and mapping)算法是目前最具代表性的3d激光slam算法。其原理是将激光slam分成里程计算法和地图构建算法,具有速度快、精度高、鲁棒性好以及计算消耗小等优点;缺点是没有闭环检测,大规模测试中会出现漂移,在空旷环境下会因特征缺少而出现退化问题。shan等优化了loam的特征匹配,增加了闭环检测,提出了lego-loam,运行时间比loam算法减少了一个数量级,在占用计算资源减少的情况下实现了相似甚至更好的精度,但有时会出现错误或识别遗漏。有学者使用eigen线性迭代和ceres solver非线性优化简化了代码结构,减少了复杂的数学推导和冗余操作,提出了loam的高级实现a-loam。
此外,deschand等提出了一个帧到模型的匹配框架imls-slam,引入隐式移动最小二乘(imls)表面公式,采用最小化点到隐式表面距离的方法表示局域激光雷达的扫描点,从而提供了准确的姿态估计,但不能实时实现。作为一种典型的密集方法,behley等提出了基于面元的地图进行配准和闭环检测的suma(surfel-based mapping)算法,对于缺失特征或缺失数据更具鲁棒性,仅基于激光点云数据就可以建立大规模环境下的全局一致性地图。
现有的3d激光雷达slam算法研究在公开数据集测试中表现出了良好的性能,平移或旋转的漂移较低,图像质量和轨迹的精度较高,但在实际应用中仍存在较多局限性:包括对环境的鲁棒性,例如从室内到室外或者从静态环境到动态环境;对实时性的要求,例如在一些无人地面车辆(ugv)等机器人平台上,计算资源有限,而计算单元需要同时进行定位和路径规划,计算成本较高等。
已有学者总结了slam的相关工作,描述了slam的一般问题、模型及框架、难点和主要方法,回顾了相关工作进展,并且讨论了slam的发展趋势,其中关于算法的进展多介绍视觉slam算法或slam算法的特定方面或其子领域,涉及3d激光雷达slam算法综述研究较少。周治国等概述了3d激光雷达slam算法框架和关键模块,但是对于算法方案的介绍只选取了6种开源算法进行测试对比,并未详细展开。xu等介绍了基于3d激光雷达的多传感器融合slam的发展过程和最新的研究工作。
本文从3d激光slam算法的前端、后端,深度学习和多传感器融合在3d激光slam中的应用等方面,系统阐述现在主流的3d激光slam算法方案,探讨目前主流3d激光slam算法存在的问题和不足,总结其研究热点和发展趋势,以期为其后续研究提供借鉴和指导。
02 slam前端
3d激光slam算法的前端主要解决数据关联的问题,扫描匹配考虑局部数据关系,而闭环检测则处理全局数据关系;扫描匹配与闭环检测都是根据激光帧数据建立节点间的约束。
2.1 扫描匹配算法
扫描匹配算法的精度和计算效率直接影响着slam算法轨迹估计和地图构建的准确性,为后端优化提供机器人状态的初始值与约束关系,大致分为基于迭代最近点(icp)的、基于几何特征的及基于数学特征的匹配算法。
1) 基于icp的匹配算法
经典icp算法是1992年besl等和chen等提出的。其原理为以距离误差最小为目标函数,通过迭代的方式寻找相邻扫描帧两扫描点间的最佳变换关系。该算法易陷入局部最优,且当扫描点数增多时,计算成本过高。
为了解决经典icp算法易陷入局部最优的问题,提高效率和准确性,许多学者研究了基于icp的改进算法,优化了icp算法的步骤,包括点的选择、匹配、加权和剔除错误关联,或者最小化成本函数的选择。其中适合3d激光雷达slam的算法有pp-icp(point-to-plane icp)、pl-icp(point-to-line icp)、gicp(generalized icp)、nicp(normal icp)等。pp-icp算法的误差代价为点对面的距离;而pl-icp算法利用点到线的距离作为误差代价,更符合实际情况;gicp将icp算法和pl-icp算法相结合,在概率框架下进行点云配准,提高了适用性和精确度;为提高精度,nicp则考虑了环境曲面的法向量和曲率。
imls-icp为每个点分配一个权重值,选择具有代表性的点匹配;利用基于目标点的局部曲面法线,采用imls法重建曲面。blam通过gicp算法初步计算两帧点云数据的位姿变换,获取当前帧对应的最近点,并再次利用gicp算法得到精确的位姿数据,执行闭环检测得到地图,提高了建图精度。litamin算法将对称的k-l(kullback-leibler)散度引入到反映两个概率分布之间差异的icp代价函数中,减少了点云配准的点数,提高了处理速度;使用k-d tree(k-dimension tree)的观点构建体素网格地图,保持配准精度的同时,提高了算法的准确性、鲁棒性。然而实现收敛所需的大量迭代、对良好初始化的要求以及对噪声的敏感性仍限制了icp及其变体算法;而且应用原始点云匹配的计算成本通常很高。
2) 基于几何特征的匹配算法
基于几何特征的扫描算法主要利用边缘和平面特征,并保持边缘和平面的匹配,如图2所示。loam基于局部平滑度提取当前帧和匹配帧的边缘和平面特征,并将当前点云中的点与地图中的边缘和平面进行匹配。还有许多研究扩展了基于几何特征的匹配算法以实现更好的性能,例如lego-loam在特征提取之前利用分离地面优化,算法软件系统框图如图3所示。r-loam(reference loam)结合参考对象提取的网格特征,有效减少了长期漂移,但对3维网格和参考对象定位精度有较高要求。由于不需要点云转换关系的先验信息,利用了特定形状的几何特征迭代求解,基于几何特征的匹配算法计算量大大减少,实时性较好,匹配精度高,被广泛应用;缺点是当环境中的几何特征不明显时,结果可能会不准确、不稳定。
图2 特征扫描匹配
图3 lego-loam算法系统框图
面元(surfel)是一种基于点的渲染方法,用点云而非多边形网格来渲染3维形状,但是需要gpu处理。droeschel等利用面元特征,将连续的3d激光扫描与增量构建的多分辨率栅格地图配准;为实现测量稀疏和网格离散化情况下的准确性,在高斯混合模型中以概率方式分配面元,提高算法的准确性和效率。参照视觉slam中elastic-fusion的处理方式,包括suma,elastic-lidar fusion将激光雷达点云数据的形状近似为面元,利用面元特征实现激光里程计。suma算法的软件系统框图如图4所示。
图4 suma算法系统框图
3) 基于数学特征的匹配算法 基于数学特征的匹配算法是使用各种数学性质来表征扫描数据和数据帧姿态变化的扫描匹配方法,具有代表性的有基于正态分布变换(ndt)的匹配算法,ndt算法是一种快速空间建模技术,用以建立精简的目标3维点云模型。
2003年,biber等提出了基于正态分布变换函数的点云配准2d-ndt(2-dimension ndt)算法并成功应用于slam中。其在配准的过程中利用正态分布表示关键帧,得到全局姿态的集合。对于大量的点云数据,ndt算法比icp算法配准速度快,但配准精度不如icp算法高。2006年,magnusson等提出了3d-ndt(3-dimension ndt)算法,并不断加以改进,使之更适用于激光雷达点云数据的配准。ondt(occupancy ndt)算法研究了多维正态分布变换的地图表示,相较于octomap和ndt-om(normal distributions transform occupancy mapping)等3d地图表示,在内存消耗较低情况下,准确性较高且运行速度快。rgc-ndt(regional growth clustering normal distribution transformation)算法使用聚类算法捕获细节自然特征,相比传统ndt算法,匹配准确度提高1.18倍,且匹配耗时仅为其1/3。2021年,koide等结合ndt和类icp算法的优势提出了vgicp(voxelized gicp)算法,通过体素化的方法扩展gicp算法,避免了高代价的最近邻搜索,能够快速准确地实现3维激光点云配准。
2.2 闭环检测
slam前端的近似计算和后端的渐近建图都会因传感器的信息偏差而产生计算误差,并且会不断累积。闭环检测则是避免误差过多累积的关键模块,如实际闭环被正确检出,则可大大减少相应两个时刻位姿等信息的估计误差,进而校正全局相关时刻位姿和地图信息的误差;如误判实际相距较远位置所得的两组点云为闭环,则可能导致全局位姿和地图信息的近似计算出现较大偏差,甚至导致约束信息不一致而不可解。更加紧凑、准确的闭环约束最终可以形成拓扑一致的轨迹地图,其准确性和效率对slam均很关键,过程如图5所示。由于3d激光点云数据信息单一、无序且较稀疏,随着点云匹配的时间增长,slam往往会出现轨迹不准确、构建地图重叠等问题。但是目前,闭环检测仍然没有广泛认可的最佳解决方案。
图5 闭环检测(绿色为当前帧点云,红色为历史回环帧点云)
olson通过旋转和平移判断两帧激光数据的相似性,采用相关性扫描匹配的方法达到闭环检测的效果。lego-loam则利用icp算法结合欧氏距离进行闭环检测。然而,这类简单的利用几何估计的策略由于前端里程计的累积漂移误差较大,可能导致在大规模环境中无法有效地进行闭环检测。
除两组点云点对点的直接匹配,另一种方法是用几何信息、强度信息或者其他来构造描述符,再通过比较描述符衡量相似度,有基于手工设计和基于深度学习两种方法。前者可以直接处理3维点云,包括基于局部的描述符、基于全局的描述符和基于混合的描述符;后者需要将3维点云表示成深度学习可处理的格式,如预处理为结构化的、固定大小的表示形式。有效提取具有鉴别能力和鲁棒性的特征描述符也是学者关注和研究的问题之一。
局部描述符是从每个关键点位置提取,并基于词袋模型进行场景匹配,提高了匹配能力和鲁棒性。许多关键点检测的方法被提出,如3dsift(3-dimensional sift)、3dharris(3-dimensional harris)、3d-surf、 isss(intrinsic shape signatures)及局部描述符如shot(signature of histogram of orientation)、b-shot (binary signature of histogram of orientation)、ishot(intensity signature of histogram of orientation)和fpfh(fast point feature histogram)。
局部描述符对激光点云的稀疏和不连续特征鲁棒性不足,忽略了局部特征之间的关系;通常需要大量的局部几何计算,而全局描述符更擅长检测具有高重复性的关键点,在全局点云中进行匹配。m2dp(multiview 2d projection)将点云投影到多个2维平面中,并为每个平面的点生成一个密度签名,这些签名的左右奇异向量被用作全局描述符。基于几何关系的平移和旋转不变的3d描述符,glarot-3d(geometric landmark relations rotation-invariant 3d)将关键点对的相对几何位置编码成直方图。scan context方法则利用存储高度值的2维矩阵格式的数据作为描述符;还提出了融合相似度评分和最近邻搜索以实现快速的搜索以及采用两阶搜索算法检测回环。
通过集成几何和强度特征,wang等提出了一种两阶段的分层位置重识别策略isc(intensity scan context)以提高效率,包括基于二元运算的快速几何检索和强度结构匹配。受启发于人类虹膜,lidar iris将环境的高度信息编码为像素强度并提取一个用以判别的二值特征图像,使用对应图像的汉明距离计算相似度。将点云分割成不同的对象,seed将分割对象的拓扑信息编码到全局描述符中。这些方法将几何结构编码为描述符并取得了良好的效果,但是目前激光的全局或者局部描述子的描述能力和旋转不变性能仍然有所欠缺,集成更高级的特征可以进一步增强描述符的鉴别能力。
基于混合的描述符如segmatch(segment matc-hing)和segmap(segment mapping)将一个点云聚为多个段,并提取片段特征,使用knn(k-nearest neighbour)算法来识别对应物,结合局部描述和全局描述的优势解决了点云数据稀疏、形式单一的问题。segmap描述符解决了实时单一和多机器人系统的数据压缩要求,也可以用于密集环境的三维地图重建和语义信息提取,用于导航任务和面向机器人操作员等最终用户的视觉反馈。seggraph (segment graphing)在分割点云后以边匹配为主要依据,基于k-公共子图判定方法实现闭环检测。
03 slam后端
3d激光slam算法中,后端优化的目的是将各帧雷达的位姿和帧间运动约束综合起来达到整体优化,以消除局部累计误差,并根据前端提供的数据生成环境地图估计,主要有滤波和非线性优化两种思路:滤波主要采用扩展卡尔曼滤波获得最优估计,存在适应性差、缺少回环检测、更新效率慢等问题,难以在回环多、距离长的大规模环境中应用;非线性优化方案以图优化为代表,进行全局优化,把所有数据都考虑进来,虽然会增大计算量,但融合精度较高。后端优化前后对比如图6所示,如何高效地通过后端优化来修正运动位姿和提高地图精度是slam算法的研究热点。
图6 后端优化前后对比
3.1 基于滤波估计的slam算法
基于滤波理论的slam算法主要是利用了贝叶斯估计的原理,具体可分为基于卡尔曼滤波的slam算法和基于粒子滤波的slam算法。 基于扩展卡尔曼滤波的slam算法通过将非线性的运动模型和观测模型线性化处理进而实现slam,此过程会引入线性化误差,鲁棒性较差且计算效率低。julier等研究了无迹卡尔曼滤波方法,对非线性系统进行无迹变换,其精度比扩展卡尔曼滤波方法高。
粒子滤波方法使用一定数量的、带有权重的粒子来代表状态的后验概率分布,可用于非线性非高斯的系统。murphy等提出了rbpf(rao-blackwellized particle filter)算法,分别使用扩展卡尔曼滤波算法和粒子滤波算法来解决机器人位置校正和位置估计问题,极大地降低了算法的计算复杂度。fast-slam就是基于rbpf的slam算法,它提高了地图精度。grisetti等考虑了传感器信息模型并且采用自适应重采样技术来保持合理的粒子种类,并提出了gmapping来改善粒子退化问题,其使用了较以前方法低一个数量级的粒子数量就生成了高精度地图,是激光slam的一个里程碑。
3.2 基于非线性优化的slam算法
图优化算法框架由lu等提出,是目前应用最为广泛的slam框架之一。图优化算法框架通过维护关键节点以达到优化的目的,在保证精度的同时大大降低了计算量,如图7所示。基于图优化的算法可以分为基于最小二乘法的优化、基于松驰技术的优化、基于随机梯度下降法的优化和流形优化四种。konolige等提出了用于2维姿态图的karto slam开源方案,一定程度上取代了基于滤波理论的slam方案,但实时性较差。cartographer融合多传感器数据创建局部子图,采用子地图匹配算法进行全局优化,能够构建2维和3维点云地图,效率高,鲁棒性好,缺点是计算资源消耗大,在环境较大、计算资源不足时可能出现无法正常回环的现象。
图7 图优化算法框架
针对非线性优化问题已经存在成熟c++开源库,如:goole开源库ceres solver,基于图优化的开源优化库有isam(incremental smoothing and mapping)、gtsam(georgia tech smoothing and mapping)、g20(general graph optimization)、ba(bundle adjustment)等,借助这些优化库可节省后端迭代求解优化值的时间。
04 基于深度学习的3d激光slam算法
基于深度学习的方法通过数据驱动的方式学习,能够得到比手工设计更加精确的模型。slam与深度学习的结合主要是将深度学习应用到传统slam框架的一个或几个环节,如帧间估计、闭环检测等,以提高slam算法的效率、精度和鲁棒性,表1列出了一些实现帧间估计、闭环检测的特征学习算法;或是语义slam中利用深度学习提取语义信息、构建语义地图,以提高机器人的自主理解能力。
后端算法从线性滤波逐步向非线性优化发展,其中因子图优化与滑动窗口结合的方法以其良好的实时性和鲁棒性,被广泛应用在各类融合定位和建图系统中。
表1 实现帧间估计、闭环检测的特征学习算法
4.1 帧间估计
与前文中基于几何信息接近策略的扫描匹配算法相比,基于深度学习的帧间估计方法性能卓越。但是由于数据稀疏性和计算成本高,传统的卷积模型无法直接应用到点云中。总的来说,利用深度学习实现帧间估计的方式有两种:
1) 基于特征学习的点云配准方法
如gmm(gaussian mixed model)、3dfeat-net、fcgf(fully convolutional geometric features)、siamese-pointnet(siamese point network)、ugmmreg(unified gaussian mixture model registration);
2) 基于端到端的深度网络模型的点云配准方法
如deepgmr(deep gaussian mixture registration)、3dregnet(3d registration network)、mlp_gcn(multilayer perceptron-graph convolutional networks)、ipcr(iterative point cloud registration)。
现有的许多实验表明,直接应用配准的数学理论会花费巨大的计算时间,而直接应用深度学习无法保证准确性。直接结合深度学习和icp仍然需要很高的计算时间。将传统的数学理论和深度神经网络融合到端到端的框架中,以获得高精度和高效率,是未来的研究方向。
4.2 闭环检测
传统的闭环检测大多使用人工选取特征,精确度低、计算量大。相比于传统人工设计的特征,深度学习可以通过大量的学习训练以及合理的网络构建,高效提取对分类无关因素不敏感且区分度高的特征。
近年来,基于深度学习的闭环检测算法逐渐发展。pointnetvlad(pointnet and netvlad)利用pointnet提取局部特征,并利用netvlad聚合全局特征,从3维点云端到端提取全局描述符。dh3d(deep hierarchical 3d)从原始的3维点云中学习局部特征,然后使用注意力机制将这些特征聚合为全局特征描述符。komorowski提出了一种基于替代点云表示和网络架构的全局点云描述符提取方法—minkloc3d。hui等提出了一种金字塔点云变换器网络ppt-net(pyramid point cloud transformer network),利用金字塔点transformer模块来增强对局部特征的区分并生成全局描述符。fastlcd(fast and compact loop closure detection method)直接从原始点云扫描提取多模态特征,编码成全局综合描述符,具有旋转不变性。ndt-transformer针对大规模点云,通过学习轻量级处理后的ndt单元的全局描述符进行闭环检测。zhou等提出了一种基于局部3d深度描述符的闭环检测方法,通过一种新颖的重叠度计算方法检测闭环,实现了更好的精度。overlap-transformer是一个轻量级的transformer神经网络,基于深度图像构造全局描述符进行闭环检测。
由于图像特征描述符(如sift(scale invariant feature transform))的惊人性能和高成熟度,基于图像的闭环检测发展迅速,然而对于3维点云数据并没有相同成熟的类似方法提出,难以从点云中提取局部特征描述符,然后将其编码为检索任务的全局描述符。尽管基于深度学习的描述符也有突破结果,但是其严重局限性是需要大量的训练数据,当训练和应用于不同地形或在不同条件下获得的数据时,这些方法并不适用;而且它们通常需要gpu,在保持精度的同时,对轻量级网络结构的探索以及对实时性能的追求是当下的研究热点。
几何特征在恶劣环境下难以保证准确的闭环检测,而语义信息不易受环境因素的影响,是一种长期稳定的特征。基于语义信息的方法能够构建长期稳定的定位系统,实现闭环检测。gosmatch(graph-of-semantics matching)利用场景中的语义对象来检测闭环,通过编码语义对象之间的空间关系构建全局和局部描述符,进行闭环检测。li等提出了一种基于3d激光数据的合并语义信息和scan context的全局描述符ssc(semantic scan context),并利用3阶段检索方法实现闭环检测。张剑华等提出一种基于点云片段匹配约束的方法提升回环检测的效率。rinet(rotation invariant neural network)设计了结合语义和几何特征的旋转等变全局描述符,提高了描述能力,并且通过一个旋转不变的孪生神经网络来预测描述符对的相似性。
4.3 语义分割及语义地图
不同于传统slam方法以静态环境假设为前提,语义slam可以预知物体的可移动属性;共享相似物体表示,通过维护共享知识库提高了slam系统的可扩展性和存储效率;可以应对复杂场景,实现智能路径规划。语义slam的关键在于对目标物体的精准识别,而深度学习技术恰好是当前最具潜力和优势的物体识别方法,因此深度学习和语义slam的结合受到广泛关注。语义slam研究主要是利用语义信息辅助定位及构建语义地图,通过语义特征提取、动态物体剔除以提高slam算法的鲁棒性和定位精度;通过高级语义信息为机器人的人机交互提供高层次的语义地图,提高机器人的自主理解能力。
3维点云的语义场景理解在机器人和无人驾驶领域中有着广泛的应用需求,也是目前亟待解决的问题,许多基于3维点云的目标检测和语义分割方法被提出。对于3维点云的几何分类、目标检测和跟踪以及点云分割包括语义分割、实例分割等,guo等作了较为全面的综述。
由于3维点云的无序性、稀疏性和非结构化特点,为了处理此类非结构化数据,通常将点云转换为3d体素网格或2d投影的结构化形式,或者直接作用于输入点云定义一种新操作。开创性工作pointnet利用尺度变换统一3维点云输入,再通过max pooling操作解决点云无序性问题,可直接利用3维卷积神经网络对3维点云进行特征提取和语义分割。基于此,pointnet++和pointcnn被提出以分层学习深度特征,增强局部模型结构的能力。wang等提出的图注意力卷积网络gacnet (graph attention convolution network),能够在点云端到端进行结构化特征学习。针对大规模三维点云,hu等提出了高效且轻量级的神经网络架构randla-net(random sampling local feature aggregation network);fan等提出空间上下文特征学习模块以实现点云语义分割网络架构scf-net(spatial contextual feature network)。laf-net(local attention fusion network)则是能够自适应融合低维特征和高维语义信息的局部注意力融合模型。在pointnet++基础上,dspnet++(deep scale purifier network++)是基于自注意力机制的特征提取模块,直接处理原始点云进行端到端的点云分割。
尽管这些基于点的方法直接应用于原始点云,不会丢失任何信息,然而大多数方法需要采用邻近搜索机制,固有地限制了这些方法的效率,且计算量大,无法部署在资源受限的设备上。
基于距离图像,rangenet++通过卷积神经网络(convolutional neural network,cnn)实现了语义分割;rangeseg(range-aware real time segmentation)获得了准确的实例级分割结果。为了更好地处理3维点云并克服点密度不均匀和体素化步骤中信息丢失等限制,(af)2-s3net设计了一个端到端的编码器-解码器3d稀疏cnn。fidnet(fully interpolation decoding network)设计了一种新的基于投影的激光雷达点云语义分割的神经网络。为了利用不同视图的优势,基于多视图融合方法,rpvnet(range-point-voxel fusion network)设计了一种新颖的距离-点-体素融合网络;hybrid cnn-lstm(hybrid convolutional neural network and long short-term memory)结合了空间上下文和时间序列信息解决cnn网络池化层丢失细节的缺点,由高效的点云特征处理方法和新颖的神经网络结构组成。liu等提出了解决弱监督多任务3d点云理解的统一框架weaklabel3d-net;基于点云局部几何特征无监督生成聚类,且提出了一种基于学习的聚类级相似性预测网络。
尽管这些方法实现了先进的性能,然而由于将点云转换为结构化形式的量化存在不可避免的几何信息丢失,且处理大规模点云时将导致消耗大量资源。如何设计一个模型能够可靠、快速地实现激光雷达点云的语义分割仍然是一个有待解决的问题。
在构建语义地图方面,recurrent-octomap算法是融合语义特征的语义映射方法,使用循环神经网络及单帧语义检测,可以灵活地维护长期的语义地图。suma++是suma算法的扩展方法,利用全卷积神经网络有效提取语义信息,并将语义信息集成到基于面元的地图表示上。sa-loam(semantic-aided loam)是基于loam的语义辅助激光slam算法,利用里程计和回环检测中的语义信息,提高了定位精度,能有效地进行闭环检测,在大规模场景中可构造全局一致语义地图,其在kitti序列13的语义分割结果如图8所示。目前完备的语义辅助激光slam系统值得进一步的探索和尝试。
图8 sa-loam在kitti序列13的语义分割结果,每种颜色代表不同的语义类别
05 基于多传感器融合的3d激光slam算法
不同传感器获取环境观测信息的处理方式不同,单一传感器都存在着局限性问题,表2对比了单一传感器优缺点。
单一传感器都无法独立完成所有场景下的全局地图构建,而多传感器的融合能够解决单一传感器的局限性,获得更精确、高效、适应性强的slam效果。由于不同模态传感器获取到的数据,格式不同。多模态数据的处理和增强依然是当前基于多传感器融合的3d激光任务的关键。
表2 单一传感器优缺点对比
5.1 激光雷达与惯性测量单元融合
激光雷达和惯性测量单元(inertial measurement unit,imu)的融合可以克服激光slam过程中激光雷达垂直分辨率低、更新速率低以及由运动引起的失真等问题。激光雷达与imu的融合有紧耦合和松耦合两种方式。紧耦合是通过联合优化所有测量数据以在复杂变化的环境中获得准确的位姿估计,但存在计算量大、实时性差等问题。松耦合是分别处理每个传感器的测量数据,再进行融合的方式,计算量小、易于实现,但在定位精度上存在局限性。
hdl-graph-slam算法融合了多种输入,包括imu、lidar传感器以及gps(global positioning system)信息,资源消耗小且精度较高。李帅鑫等提出一种lidar/imu紧耦合的实时定位方法inertial-loam,显著降低连续配准误差造成的误差累计,提升了定位精度和实时性。ye等研究了lidar-imu紧耦合的lio-mapping算法,建图精度提高了,但是紧耦合算法复杂度较高,后期融合其他传感器较困难。zhao等研究了紧耦合激光惯性的liom (laser-inertial odometry and mapping)算法,实现了低漂移、强鲁棒性的位姿估计。在lego-loam的基础上,lio-sam(lidar inertial odometry via smoothing and mapping)应用因子图框架融合了imu预积分因子、激光里程计因子、gps因子、闭环检测因子,可以得到更好的精度和实时性、低漂移。li等则研究了固态激光雷达与imu的耦合方案,提出了用于实时激光惯性里程计和映射的新型传感器融合方法lili-om(livox lidar odometry and mapping)。
fast-lio(fast lidar-inertial odometry)紧耦合激光雷达和imu测量,利用快速卡尔曼增益公式将计算复杂度从测量维度降低到状态维度,计算效率显著提高,但是系统只能在小型环境中工作。fast-lio2继承了fast-lio紧耦合的融合框架,通过开发的ikd-tree(incremental k-d tree)数据结构,计算量显著减少,提高了里程计和地图绘制的准确性和鲁棒性,算法框图如图9所示。在fast-lio2的基础上,faster-lio使用增量体素作为点云空间数据结构,实现了轻量级紧耦合激光雷达惯性里程计,可用于固态激光雷达。lins(lidar-inertial-slam)算法不同于采用以世界为中心的固定全局帧的状态估计量的紧耦合方法,而使用机器人中心公式表示移动局部帧的状态估计量,设计了迭代误差状态卡尔曼滤波器实现激光雷达和imu的紧耦合。该方法在各种具有挑战性的场景中,如无特征场景,也能够实现鲁棒和高效的算法性能,算法框图如图10所示。图11为激光惯性耦合slam代表性结果。
综上可知,激光惯性紧耦合研究主要通过激光雷达和imu的紧耦合来提高建图的精度、效率和鲁棒性。但目前针对激光雷达与imu的联合标定方法还不成熟。
图9 fast-lio2算法系统框图
图10 lins算法系统框图
图11 激光惯性耦合slam代表性结果
5.2 激光雷达和视觉融合
激光slam局部定位精度高但全局定位能力差且对环境特征不敏感,而视觉slam全局定位能力好但局部定位相对激光雷达较差,两者融合可以提高slam系统的精度和鲁棒性。
zhang等研究了视觉和激光雷达里程计结合的通用框架v-loam(visual loam),如图12所示,利用视觉里程计处理快速运动,而激光雷达里程计保证在不良照明条件下的低漂移和稳健性,算法结果低漂移、鲁棒、快速,长期在kitti数据集的平均平移和旋转误差基准测试上占据榜首,但没有考虑闭环检测和室外长距离环境中位姿轨迹与建图的整体一致性。lvi-sam(lidar-visual-inertialodometry via smoothing and mapping)是紧耦合激光雷达-视觉-惯性里程计的slam框架,由视觉惯性系统和激光雷达惯性系统组成,能够构建完整且精度高的地图,实时性和精度高,鲁棒性强。superodometry是高精度多模态传感器融合框架,采用以imu为中心的数据处理管道,结合了松耦合和紧耦合方法的优点,在感知退化的环境中也能实现稳健的状态估计。r2 live(robust,real-time,lidar-inertial-visual tightly-coupled state estimator and mapping)、r3 live(robust,real-time,rgb-colored,lidar-inertial-visual tightly-coupled state estimation and mapping)融合激光雷达、imu和视觉传感器的测量来实现稳健和准确的状态估计,在各种具有挑战性的情况下,甚至在具有大量运动物体和小激光雷达视场的狭窄隧道状环境中,该方法也具有足够的鲁棒性。表3列出了激光雷达与惯性测量单元、视觉传感器融合的一些算法。
图12 v-loam算法系统框图
表3 多传感器紧耦合的一些算法
5.3 激光雷达和其他雷达融合
fritsche等将毫米波雷达与激光雷达相结合以应对烟雾、雾或灰尘导致的低能见度恶劣环境,研究了毫米波雷达与激光雷达数据二值决策融合方法和加权融合方法,还探索了两者扫描级和地图级数据融合的可行性。chavez-garcia等研究了基于相机、毫米波雷达和激光雷达的多传感器融合方案,首先利用激光雷达和相机图像信息检测人和车辆,再融合雷达检测信息区分静止目标和移动目标,实现目标的检测与跟踪,减小了误检概率。kim等提出了一种基于相机、毫米波雷达、激光雷达和gps的融合方案,首先利用相机和激光雷达构建地图,然后利用gps确定车辆位置,同时利用雷达检测的目标运动数据更新地图中的环境信息。崔巍杰选取了google的cartographer算法框架作为算法的主要框架,综合考虑毫米波雷达与激光雷达的数据优缺点,融合二者的数据实现了环境适应性更高的slam算法。
06 3d激光slam算法的发展趋势
6.1 多源信息融合
前已述及,单一传感器均存在着一定局限性,无法满足全场景下的slam算法。国内外学者为弥补单一传感器缺陷,研究了多种多传感器融合方案获取高精度和高鲁棒性的地图,有与imu融合的,有与视觉融合的,也有与其他类型如毫米波雷达融合的;还有多个激光雷达的融合,如m-loam(multi-lidar loam),许多基于各种融合方案的slam算法被提出,成果颇多。但相关研究仍是3d激光slam算法的研究热点和发展趋势之一,包括对融合层次的探索,鲁棒适应性强且实时在线的多传感器综合校准、时间同步方法的开发,以及通用鲁棒的几何特征提取、数据关联、耦合方法等。同时,基于点云的深度学习方法和基于非线性联合优化的算法将加速多源信息融合技术的发展。
6.2 与深度学习的结合
3d激光slam算法与深度学习的结合能够提高运行效率和鲁棒性,其研究方向包括特征提取与匹配、语义slam、深度估计以及重定位等等仍是研究热点。虽然越来越多的深度学习技术与成果应用于slam领域,已经有了许多相关研究工作,但现阶段基于深度学习的slam有着明显的局限性,通过深度学习构建的模型缺少直观的物理意义;其次,深度学习技术往往需要大量的训练数据,前期训练周期长;结合深度学习的slam通常需要gpu,在计算资源有限的条件下无法应用。
6.3 应用场景的鲁棒性
随着机器人技术的迅速发展和应用领域的不断深化,相应的应用场景亦不断丰富和拓展,如空旷、复杂多变的或者动态的场景,也包括地面/空中机器人、汽车/agv自动驾驶等领域,故越来越多的应用环境细分也有待挖掘。不同应用场景slam算法表现不近相同,如针对室内环境,loam算法缺乏联合优化,实时姿态估计误差大,π-lsam(lidar smoothing and mapping with planes)改进了loam,在后端引入联合优化并显著降低优化算法计算复杂度。 面对一些具有挑战性的复杂多变的应用场景,如变化的光照、剧烈运动、开阔场地或缺乏纹理的场景等,需要开发长期稳健安全的算法,提高算法鲁棒性,许多方面如多机器人系统中全局定位与目标检测、优化轨迹并创建全局一致性地图的方法及动态场景或大场景的环境地图构建方法都需要完善。同时立体匹配、3维场景重建、虚拟现实等计算机前沿应用中,3d激光slam算法也可起到关键作用。
6.4 探索通用框架和地图表现形式
探索3d激光slam框架的通用性也是研究热点,现有3d激光slam算法很多沿用了loam的框架;imls-slam算法描述了帧到模型的匹配框架;f-loam(fast lidar odometry and mapping)提出了一种结合特征提取、失真补偿、姿态优化和映射的通用框架。更好的地图表现形式如语义地图,可以大幅提高机器人的自主理解力,亦可提高3d激光slam算法的鲁棒性和精度。
6.5 传感器和无线信号体制技术的影响
固态激光雷达性能高且成本极低,具有促进或彻底改变机器人行业的潜力,越来越受到关注。如lin和zhang研究了适用于小视场和不规则采样的固态激光雷达的slam算法框架loam livox,鲁棒性强且实时运行。随着硬件性能和通信功能不断提高,slam技术嵌入式实现、移动设备传感器和无线信号体制技术的参与必然也会影响3d激光slam算法的发展。如专用处理器(如hololens hpu)和一体化功能模组(如tango模组)等将会大大降低现有硬件平台的计算能力瓶颈和算法调试门槛。
07 结论
slam算法是移动机器人构建未知环境地图并获取其位姿信息进而实现自主移动的有效手段,可以辅助机器人执行路径规划、自主探索、导航等任务。随着3d激光雷达向低成本、低功耗和高可靠性的应用的发展,3d激光雷达slam算法研究取得了丰富的成果和应用案例。本文从slam算法经典框架出发,总结分析了其前端、后端以及深度学习与多传感器融合在激光slam中的研究现状,系统阐述现在主流的3d激光slam算法原理及其存在的问题和不足,探讨了3d激光slam算法的研究热点和发展趋势。
slam是多学科组合的算法和系统工程,包括硬件模型构建到系统集成,以及各个环节的多线程执行中的资源分配、数据优化以及建图和定位的准确性都需要平衡和整合;关键模块和硬件匹配的升级、场景或应用的丰富和拓展都会影响3d激光slam算法的发展。研究多源信息融合、与深度学习结合、动态以及其他场景的应用与拓展、slam算法通用框架、以及slam算法的嵌入式实现、移动传感器和无线信号体制的技术参与是3d激光雷达slam算法的研究热点和发展趋势。
韩国文在寅政府表示应暂停部署萨德普京再次放话俄不会坐视“萨德”部署韩国!
Navigator Runtime帮助您最大限度提高多内核效率
如何使用STM32G4 32位MCU系列
STM32启动文件startup_stm32f10x_hd.s的代码讲解
为什么说小米8发布后,整个手机圈基本上就“圆满”了
探讨目前主流3D激光SLAM算法方案
PLC拓展模块的具体用处有哪些
OPPO Reno3 Pro 5G的重量公布,下放到170-179g之间
微星宙斯盾钛5主机正式发布:可配RTX 3090等显卡
I2C子系统几个主要的结构体
变频器如何控制电动机的运行,常用方法是什么
一种新型的溴化锂吸收式冷水机组冷凝器管板防腐保护方法,让腐蚀无处可藏!
小区里的人脸识别门禁系统安全吗
机器视觉——机械设备的“慧眼”
比特币25天跌近37% 盘中跌破13000美元
物联网转售产业迎来实质性突破
小米移动有望成为中国民营电信运营商的代表品牌
人工智能驱动数字化转型升级
wms仓库管理对企业的重要性
SPI总线的工作方式是怎样的