点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者丨paopaoslam
来源丨 泡泡机器人SLAM
标题:F-LOAM : Fast LiDAR Odometry and Mapping
作者:Han Wang, Chen Wang, Chun-Lin Chen, Lihua Xie
来源:IROS 2021
编译:李相江
审核: 刘国庆
摘要
大家好,今天为大家带来的文章是F-LOAM : Fast LiDAR Odometry and Mapping。
SLAM在自动驾驶和无人机等机器人领域有着广泛的应用,对于一个好的SLAM系统而言,计算效率和定位精度至关重要。现有的基于激光雷达的SLAM研究工作通常将SLAM问题归纳为两种模式:scan-to-scan和scan-to-map,这两种模式都采用计算量极大的迭代方式计算。在本文中提出了一个通用的解决方案,旨在为基于激光雷达的SLAM提供一个高计算效率和高精度的系统框架。本文采用非迭代的两级失真补偿方法来降低计算成本。对于每个扫描输入,提取到的线特征和平面特征分别与局部线地图和局部平面地图进行匹配,同时使用迭代位姿优化进行局部平滑度处理。为了评估算法在高挑战性场景下的性能,进行了全面的实验,包括AGV的定位和自动驾驶公共数据集。在公共数据集评估中,该算法具有较好的定位精度,处理速度超过10 Hz,为实际应用提供了性能和计算成本之间的良好权衡。它是KITTI数据集排名中最准确、最快的开源SLAM系统之一。
主要工作与贡献
本文工作的主要贡献如下:
1、提出了一种计算资源需求较低的SLAM系统。
2、使用非迭代的两级失真补偿方法来降低计算成本,提高系统运行实时性。
3、开源了代码:https://github.com/wh200720041/floam。
算法流程
本文算法主要包括传感器模型与特征提取、运动估计与失真补偿、姿态估计、建图与失真补偿四部分。
1.传感器模型与特征提取
机械式3D激光雷达通过旋转线数为 M 的垂直激光束来感知周围环境。我们将第 k 个雷达扫描帧表示为 Pk,帧中的每个点表示为 pk(m,n),其中 m ∈ [1, M] 和 n ∈ [1, N]。激光雷达扫描包含数万个点,这使得 ICP 计算效率低下,而特征点匹配在实践中更加鲁棒和高效。
3D 机械激光雷达返回的点云在垂直方向上是稀疏的,在水平方向上是密集的。因此,水平特征更加鲜明,在水平面上出现错误特征检测的可能性较小。
对于每帧点云,使用下式进行平滑度计算
式中,Sk(m,n)是pk(m,n)在水平方向上的最近点,|Sk(m,n)|是点云的数量,Sk(m,n)可以根据点云的ID数量进行统计,与局部搜索相比提高计算效率。选择σ较大的作为边缘点Ek,选择σ较小的作为平面点Sk。
2.运动估计与失真补偿
在 LOAM和 LeGO-LOAM中,失真是通过scan-to-scan匹配来校正的,但是迭代的计算效率低。在本文中,使用两级失真补偿来降低计算成本。大多数 3D LiDAR 能够以超过 10 Hz 的频率运行,并且两次连续 LiDAR 扫描之间经过的时间通常非常短,因此可以首先假设在短时间内恒定的角速度和线速度来预测运动并纠正失真。在第二阶段,在位姿估计过程之后将重新计算失真,重新计算的特征将更新为最终地图。在实验中,发现两级失真补偿可以达到相似的定位精度,但计算成本要低得多。
将机器人在第 k 次扫描时的姿态表示为 4x4 齐次变换矩阵 Tk,两个连续帧 k-1 和 k 之间的 6-DoF 变换可以通过以下方式估计:
其中ξ ∈ SE(3),短间隔的位姿可以使用下式的线性插值进行估计:
3.姿态估计
姿态估计将当前未失真的边缘特征Ek 和平面特征Sk 与全局特征图对齐。全局特征图由边缘特征图和平面特征图组成。为了降低搜索计算成本,边缘特征图和平面特征图都存储在 3D KD树中,通过从边缘和平面特征图中收集附近的点来估计全局线和平面。对于每个边缘特征点 PE ∈ Ek,我们从全局边缘特征图中计算其附近点的协方差矩阵。当点分布在一条线上时,协方差矩阵包含一个更大的特征值。与最大特征值相关的特征向量被认为是线的方向,向量的位置被认为是附近点的几何中心。类似地,对于每个平面特征点 PS ∈ Sk,我们可以得到一个全局平面。
边缘特征点与全图特征图中的边缘特征图的距离如下式
其中Pn等于
边缘特征点与全图特征图中的边缘特征图的距离如下式
4.建图与失真补偿
全局地图由全局边缘图和全局平面图组成,并根据关键帧进行更新。当平移变化大于预设的平移阈值或旋转变化大于旋转阈值时,选择关键帧。与逐帧更新相比,基于关键帧的地图更新可以降低计算成本。为了降低计算成本,失真补偿是基于恒速模型而不是迭代运动估计来执行的,所以不如 LOAM 中的迭代失真补偿准确。因此,在第二阶段,根据上一步的优化结果 T∗k 重新计算失真:
实验结果
图1 在KITTI数据集05序列进行的测试
(a) 建图结果 (b)整合摄像机画面的3D地图
(c) F-LOAM轨迹与真值比较
图2 F-LOAM与KITTI数据集不同序列的结果
绿色为F-LOAM结果,红色为KITTI数据集地面真值
(a)-(e) 序列 00-04 (f)-(j):序列 06-10。
图3 KITTI 数据集上不同定位方法的计算时间
实验对比了IMLS-SLAM,F-LOAM,A-LOAM,LOAM,LEGO-LOAM,VINS-MONO,HDL-SLAM七种算法,评估指标为平均位移误差(ATE)、平均旋转误差(ARE)和平均计算时间。通过对比实验结果,本文算法具有较高的稳定性和精准性,在室内测试中实现了 2 厘米的平均定位精度,是 KITTI 数据集中最准确和最快的开源方法之一。
点击阅读原文, 即可获取本文下载链接。
本文仅做学术分享,如有侵权,请联系删文。
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
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从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近5000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~