点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者丨paopaoslam

来源丨 泡泡机器人SLAM

标题:MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square

作者:Yue Pan, Pengchuan Xiao , Yujie He, Zhenlei Shao and Zesong Li

来源:ICRA2021

编译:玉玺

审核:lionheart

摘要

随着自动驾驶与移动建图的快速发展,实际项目中对现成的激光SLAM建图方案的需求也越来越强烈,并且要求解决方案适用于各种不同规格的激光雷达与各种复杂场景。因此,我们提出了MULLS,一种高效,低漂移,多功能的3D激光SLAM系统。算法的前端使用双阈值地面分类与主成分分析,从每帧点云中提取粗略的特征点(地面,立面,柱,横梁等);然后使用本文提出的线性最小二乘最近邻迭代算法对当前帧与局部地图配准;在不同的特征类中使用点到点(点到面,点到线)的距离联合建立估计方程来估计运动状态,配准之后的特征点会更新到局部地图中。后端通过对多个局部地图之间进行多级位姿图优化来降低前端里程计的误差;本文的实验涵盖了室内室外的场景、七种不同的激光雷达,三个数据集总共超过100000帧点云。在KITTI的测试中也证明MULLS是性能最好的实时激光SLAM之一。

代码已开源:

https://github.com/YuePanEdward/MULLS

MULLS-SLAM效果示意图

(a)单帧激光(b)MULLS提取的特征示意图(地面,立面,立柱,横柱)(c)配准后的局部地图(d)局部地图特征(e)子地图之间的TEASER配准(f)闭环约束的边(f)最终生成的地图与轨迹

特征提取

(一)地面特征提取。采用双阈值滤波算法,默认激光雷达是水平安装(如果不是水平,则需要标定出激光与地面的角度),分以下几步:

1、将激光点云投影到激光雷达所在水平面上;

2、将水平面按照固定的分辨率划分成2D栅格;

3、统计每个栅格的最小高度hmin,以及其3*3邻域的最小高度hneimin,分别设定阈值dh1,dh2,如果一个点的高度超过所在栅格的最小高度dh1或者所在栅格的最小高度超过3*3邻域的最小高度dh2,则改点被判定为非地面点,否则为初始地面点Grough,公式如下:

4、对每个栅格内的初始地面点做RANSAC平面拟合得到最终的地面点;

(二)非地面特征提取。对上一步分类出的非地面点做PCA,根据其特征值计算特征的线性

,平面性以及曲率,计算公式如下:

结合方向向量v与法向量n,特征点可以被分为立面F,屋顶面R,柱P,横梁B,顶点V。为了得到更准确的特征点,分别对线特征(P,B),面特征(F,R)以及顶点V使用非极大值抑制(NMS)算法。

(三)特征编码。对提取的特征进行了一个“邻域分类编码”(NCC),其实主要思想是计算不同特征在邻域中的占比,以及归一化强度与高程。公式如下:

NCC作为特征会在后面的全局后端优化中使用到。

多尺度线性最小二乘ICP

这是本文提出的一种基于多类别点云的ICP方法,主要流程如下图所示:

几个关键步骤如下:

(一)多类别的近邻匹配。核心思想还是最近邻查找,创新点在于:

1、近邻搜索时在每个类别中分开搜索;

2、对于面点、线点在最近邻搜索时分别加入了法向量、方向向量一致性检测,即过滤掉方向差别过大的特征匹配点。

(二)变换矩阵估计。要点有两个:

1、对于不同的特征分别采取了不同的残差计算方法,比如顶点特征V采取点到点距离,面特征(G,F,R)采用点到面距离,线特征(P,B)采取点到线的距离。如下图所示:

2、对于不同特征采用不同的权重,变换矩阵计算公式如下:

其中,w为权重。接下来介绍权重的设计。

(三)特征权重设计。特征的权重wi由三部分权重相乘,分别是:残差权重wi(residual),平衡权重wi(balanced),强度权重wi(intensity)。

1、残差权重。残差权重固定为pseudo-Huber核函数,如下所示(k=1)

其中,ei为归一化后的残差。

2、平衡权重。由于不同类别特征数量的不同,如果不做平衡会导致残差计算时对x,y,z方向的影响不一致,因此对不同类别的特征设计了平衡权重:

G,R分别表示地面点与水平面点,由于实际中该两类点数量较多,因此可以认为是对此两类点的降权处理。

3、强度权重。强度差别较大的点降权,如下所示:

(四)匹配好坏的度量。最终使用点云的后验标准差,后验信息矩阵以及非地面点的覆盖率来衡量此次匹配的好坏,公式如下:

算法框架

MULLS-SLAM算法框架如图5所示。可见算法前端主要做特征提取、帧帧匹配,帧图匹配,而算法后端主要做回环检测与图图匹配。后端中使用第一部分提到的特征编码做回环检测,图图匹配中使用TEASER方法做初始匹配,使用MULLS-ICP做精匹配。

实验结果

作者选取了KITTI,MIMAP,HESAI三个数据集,包含室内外不同的场景以及7种不同的激光雷达进行了实验,实验结果如下表所示:

可以看到在满足实时性的基础上,MULLS-SLAM精度与现有算法比都取得了接近最优的水平。同时作者还分析了不同的特征以及权重对效果的影响。

表3种可以看到顶点特征其实会导致相对精度降低,因此作者也提到了在实际中顶点的特征只用在后端的回环检测与匹配中。另外横梁B特征虽然会导致一定程度的位置精度的损失,但是会抑制姿态的发散。

表4中可以看到当三种权重都有效时效果最优,也证明了权重设计的有效性。

总结

本文提出了一种通用的MULLS-SLAM纯激光雷达建图的方法,设计了多尺度最小二乘ICP匹配算法MULLS-ICP,并且通过实验证明了该方法在室内外以及不同激光设备下都可以在保证实时性的同时保证较低的漂移,证明了该算法的有效性。

Abstract

The rapid development of autonomous driving andmobile mapping calls for off-the-shelf LiDAR SLAM solutionsthat are adaptive to LiDARs of different specifications onvarious complex scenarios. To this end, we propose MULLS, anefficient, low-drift, and versatile 3D LiDAR SLAM system. Forthe front-end, roughly classified feature points (ground, facade,pillar, beam, etc.) are extracted from each frame using dual-threshold ground filtering and principal components analysis.Then the registration between the current frame and the localsubmap is accomplished efficiently by the proposed multi-metric linear least square iterative closest point algorithm.Point-to-point (plane, line) error metrics within each point classare jointly optimized with a linear approximation to estimatethe ego-motion. Static feature points of the registered frame areappended into the local map to keep it updated. For the back-end, hierarchical pose graph optimization is conducted amongregularly stored history submaps to reduce the drift resultingfrom dead reckoning. Extensive experiments are carried out onthree datasets with more than 100,000 frames collected by seventypes of LiDAR on various outdoor and indoor scenarios. Onthe KITTI benchmark, MULLS ranks among the top LiDAR-only SLAM systems with real-time performance.

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

MULLS:一种基于多尺度线性最小二乘的激光SLAM算法相关推荐

  1. 一种基于后间隔偏最小二乘的梯度下降助力谱建模方法

    一种基于后间隔偏最小二乘的梯度下降助力谱建模方法 外文链接:https://pan.baidu.com/s/1MU_e2GCz7vDq0_z1dkFq6Q 摘要 升压回归技术应用在近红外光谱,全光谱的 ...

  2. 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果(转)

    源:十三种基于直方图的图像全局二值化算法原理.实现.代码及效果.

  3. 度量相似性数学建模_一种基于粒子群位置更新思想灰狼优化算法的K-Means文本分类方法与流程...

    技术特征: 1.一种基于粒子群位置更新思想灰狼优化算法的k-means文本分类方法,其特征在于:包括以下步骤: s1:对文本数据进行预处理,得到预处理后文本数据: s2:采用余弦角度为相似性度量,分别 ...

  4. 最短哈密顿路matlab,SHP-VI: 一种基于最短哈密顿通路的POMDP值迭代算法

    摘要:基于试探(trial-based)的值迭代算法是求解部分可观察Markov决策过程(partially observable Markov decision process,POMDP)模型的一 ...

  5. 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果

    十三种基于直方图的图像全局二值化算法实现 1. 什么是基于直方图的图像全局二值化算法 2. 灰度平均值 3. 百分比阈值(P-Tile法) 3. 基于双峰的阈值 3.1 基于平均值的阈值 3.2 基于 ...

  6. 一种基于交叉选择的柯西反向鲸鱼优化算法 -附代码

    一种基于交叉选择的柯西反向鲸鱼优化算法 文章目录 一种基于交叉选择的柯西反向鲸鱼优化算法 1.鲸鱼优化算法 2. 改进鲸鱼优化算法 2.1 柯西反向学习 2.2 引入交叉与选择策略的鲸鱼优化算法 3. ...

  7. 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。

    图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析.特征提取与模式识别之前的必要的图像预处理过程.这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产 ...

  8. PULSE:一种基于隐式空间的图像超分辨率算法

    分享一篇 CVPR 2020 录用论文:PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generati ...

  9. 快速完整的基于点云闭环检测的激光SLAM系统

    我原来总结过LOAM_Livox,这篇文章主要是解决LOAM在长时间运行的时累计误差的问题.本文提出的方法计算关键帧的2D直方图,局部地图patch,并使用2D直方图的归一化互相关(normalize ...

最新文章

  1. 9种不同的方法帮助你提高国内访问Github的速度!
  2. ubuntu 常见问题系列:E:Could not get lock /var/lib/dpkg/lock-frontend - open
  3. iOS 汉字转拼音 PinYin4Objc
  4. 从无到有算法养成篇-栈和队列·栈
  5. VTK:可视化之FlatShading
  6. 小知识点(复制过来的)
  7. NLP是百度的核心技术之一
  8. (python)GA(遗传算法)优化LSTM神经网络(亲测成功,速度慢)
  9. (九) LBP特征提取
  10. Linux常用命令和Vi编辑器操作
  11. yum源的三种安装配置方式,总有一款适合你
  12. 辅修计算机科学与技术有哪些课程,计算机科学与技术专业辅修课程表.doc
  13. win2003从组策略关闭端口(445/135/137/138/139/3389等)教程
  14. speedoffice(PPT)如何在幻灯片里面插入表格呢
  15. FFMPEG安装与视频格式flv转换mp4
  16. 为什么打印还要另存为_为什么打印图片时出现文件另存为
  17. html怎么跟微信公众号关联,微信视频号怎么关联公众号?一步一步教你!
  18. 第三届中青杯数模本科组问题一———股票选择和投资组合方案(excel、python-Markowitz模型、夏普比率模型)
  19. 什么是CSM(Certified Scrum Master) 敏捷教练认证?
  20. Go实战--Gorilla web toolkit使用之gorilla/websocket

热门文章

  1. new操作符具体干了啥
  2. 程序小猿猿,你的数学好吗?
  3. Java线程调度yield与join
  4. 使用gradle进行开发——环境搭建
  5. Ubuntu12.04Beta版我在用的软件
  6. .net firamework 框架里面的控件的继承关系。
  7. 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
  8. 这个 MySQL bug 99% 的人会踩坑!
  9. Docker基本使用命令
  10. 太神奇的 SQL 查询经历,group by 慢查询优化!