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

干货第一时间送达

作者丨泡泡机器人

来源丨 泡泡机器人SLAM

标题:π-LSAM: LiDAR Smoothing and Mapping With Planes

作者:Lipu Zhou, Shengze Wang and Michael Kaess

机构:The Robot Perception Lab, Carnegie Mellon University

来源:ICRA 2021

编译:程骞

审核:   陈嘉皓

摘要

大家好,今天为大家带来的文章是π-LSAM: LiDAR Smoothing and Mapping With Planes。

本文提出了一种用于室内环境的实时密集平面激光雷达扫描系统π-LSAM。目前被广泛使用的LOAM框架[1]不包括约束调整(Bundle Adjustment,又称BA或光束法平差)模块,这导致它只能生成低保真度的跟踪位姿。本文试图克服已有算法在室内环境中的这些缺点。具体来说,我们使用平面作为地标,并引入平面调整(PA)作为后端来共同优化平面和关键帧的位姿。我们提出了π因子来显著降低PA的计算复杂度。此外,我们还提出了一种基于RANSAC框架的高效的平面循环检测算法。在前端,我们的算法可以实时进行全局配准。为了实现这点,我们保留了局部到全局的点到平面的对应扫描,因此我们只需要一个小的局部kd树来建立激光雷达扫描和全局平面之间的数据关联,而不是像以前的工作那样使用一个大的全局kd树。通过这种局部到全局的数据关联,我们的算法可以直接识别激光雷达扫描中的平面,并产生一个准确的、全局一致的位姿。实验结果表明,该算法显著优于最先进的LOAM变体LeGO-LOAM[2],并且实现了实时处理。

主要工作与贡献

  1. 我们引入了平面调整(PA),用来联合优化关键帧位姿和平面参数以最小化后端中点到平面的距离。

  2. 我们提出了π因子来显著降低PA的计算复杂度。

  3. 我们提出了一种有效的方法,使用平面对齐两帧激光雷达扫描以进行回环检测。

  4. 我们引入了一个ICP过程来实现实时的全局点云注册。与传统的ICP只考虑两帧点云之间的数据关联不同,我们的ICP过程可以逐帧维持点云间的数据关联。这使得我们可以直接识别点云中的平面,而不必在每次扫描中额外进行耗时的平面检测。此外,本文的ICP过程允许我们从一个小的局部kd树中获得局部-全局数据关联,而不是像之前的工作[1](LOAM)、[2](LEGO-LOAM),[8](LOAM-LIVOX)那样使用了一个大的全局kd树。

  5. 该算法中的地图用平面参数表示,易于存储和更新。相比之下,基于ICP的方法中的地图,如LOAM[1],通常会使用kd树。因此,更新地图需要重新构建kd树。对于大型场景来说,这样的代价是很大的。

算法流程

1. 系统流程

图1.π-LASM系统概述。前端会实时生成全局一致的位姿,后端维护了地图,并纠正了前端的漂移。

我们的系统有两个部分:前端和后端。前端通过ICP过程建立局部到全局的点到平面对应,并实时提供全局一致的位姿。后端联合优化平面和关键帧的位姿,并提供信息来纠正前端的位姿漂移。

2. 前端

2.1 平面提取

我们在整个激光雷达扫描中只以第一个位姿探测这个平面。我们采用论文[30]中引入的区域生长方法来提取平面,并进行了以下改动。对于一个旋转的激光雷达,其点云中包含一个结构。我们参考论文[31]中的做法,将点云转换成一个范围图像。对于同一条扫描线内的点,我们根据旋转角度对它们进行排序。扫描线i中某一点p的K个最近邻只能来自同一条扫描线i或相邻扫描线i−1和i+1。在区域增长步骤中,我们在第i−1、i和i+1条扫描线中为查询点p分别选择5个最近的点。由于可能存在遮挡,一个平面可能被分解成几块。我们试图合并具有相似参数的平面,且只保留得分超过50分的平面。我们也会为新的关键帧提取新的平面,但这只针对一小部分与当前全局平面不匹配的激光雷达扫描。

2.2 扫描中的运动畸变

激光雷达扫描的测量值(即点云)不是在同一时间采集的,因此,测量值会受到运动失真的影响。这个问题可以通过对扫描中的运动进行建模来解决(如论文[1][8]所示)。

2.3 基于ICP的全局点云注册

我们引入了一种新的ICP过程来建立局部-全局点对点-平面对应,并实时估计相对位姿,如图2所示。

图2.我们提出的ICP方法与传统ICP方法比较,我们的ICP方法避免了构建和使用大型KD树。

数据关联

假设有N个全局平面被第k次扫描Lk部分观测到,我们结合这N个平面建立集合Qk。然后我们在Qk上建立一个KD树。基于此我们提出Lk坐标系下的点集Lk+1与N个全局平面之间的数据关联如下:

其中P表示来自Lk的K个最近邻点且属于平面πn的点集。

状态估计

基于P与πn的数据关联,我们定义点到平面的残差如下:

我们使用LM算法来最小化如下残差向量:

2.4 关键帧选择

我们用下列三个标准来判断一个新的关键帧是否是我们需要的:

a) Lk+1中超过30%的点未能匹配;

b) 当前帧与最新关键帧之间的距离大于τ(在我们的实验中τ=0.15m);

c) 当前帧与最新关键帧之间的旋转夹角大于θ(在我们的实验中θ=10°);

在初始阶段(即轨迹长度小于2m时),我们会放宽引入新关键帧的标准,即设置τ=0.1m和θ=5°。这是因为激光雷达点云是稀疏的,一帧扫描的平面参数通常质量较低。并不是所有的关键帧都会被保留,其中一些将在后续步骤中被删除(如[32]中所示)。

2.5 新平面的选取

对于一个新的关键帧,我们首先使用第2.1节中引入的算法,从与全局平面不匹配的点中检测平面。我们只保留了得分超过50分的平面。如果一个新的全局平面不能在超过三个关键帧中被跟踪到,它将被删除。

3. 后端

3.1 平面优化

我们的目标是共同优化平面参数和关键帧位姿,这类似于视觉SLAM中的BA(即视觉SLAM中对3D点和相机位姿进行共同优化)。由于BA对视觉SLAM中的点特征有特殊的意义(如论文[33]所述),这里我们将其命名为联合最小化问题平面调整(PA)。图3展示了一个PA问题的因子图:

图3.PA问题的因子图

假设我们有N个关键帧和M个平面,Pij是在位姿Ti处观测到的在平面πj上的Nij点的集合,而Pijk是Pij的第k个点。假设pijk为pijk的齐次坐标,则pijk与πj之间的有符号距离的形式为:

PA问题的损失函数为:

由于Nij通常非常大,而即使是小场景下的PA问题也是一个运算量很大的最小二乘问题。我们引入π因子来解决这个问题,如下所述。

3.2 π因子

基于3.1中定义的dijk,我们有:

那么,Nij个点的最小二乘损失函数有如下形式:

关于Ti和πj的π因子定义如下:

如图3所示,π因子可以很容易地纳入因子图中。对于每个Pij,我们只需要计算一次Gij。在优化过程中,Gij是一个常数组成的4×4矩阵。利用π因子,我们将Nij所有约束整合为一个,这大大降低了LM算法的计算成本。利用π因子的定义,我们可以将PA的损失函数E重写为:

2.3 局部平面优化(LPA)

我们采用窗口优化策略[32]来更新最新的w个关键帧位姿和相应的平面以提高效率,该步骤被称为局部平面调整(LPA)。当关键帧位姿的数量大于窗口大小时,我们将从滑动窗口中删除最旧的关键帧。我们将删除满足以下条件的关键帧:

a) 此关键帧不包括一个新平面或其所有新平面都已被删除。

b) 此关键帧与此关键帧之前的关键帧之间的距离小于0.3m。

c) 此关键帧与此关键帧之前之间的旋转角度小于15°。如不满足以上条件,我们保将留这个关键帧用于全局优化,并边缘化它和LPA滑动窗口中其余关键帧没有看到的平面。边缘化的步骤是通过使用Schur complement来实现的。我们采用LM算法来解决这个最小化问题。在这里,我们稀疏化关键帧,以减少全局优化的运行时间。

3.4 全局平面优化(GPA)

我们进行全局平面调整(GPA)来最小化损失函数,以全局优化关键帧位姿和平面参数。具体步骤包括触发式回环检测、平面关联、RANSAC、合并全局平面,最后以GPA优化后的参数更新整个系统。

实验结果

我们首先进行了一项消融研究,以测试不同成分的影响。然后,我们将我们的算法SOTA的LOAM改进算法LeGO-LOAM进行比较。最后,我们分析了算法运行速度。实验环境为i7-3770CPU和16G内存的电脑。

1. 数据集

我们使用VLP-16激光雷达收集了三个室内数据集。表1列出了统计数据。如下文中图4所示,这三个数据集都具有挑战性。它们都有多种快速旋转的运动,且都包含一个闭环。同时,它们的起点和终点是相同的。因此,我们可以利用起始点和结束点的位姿之间的差异来定量地评估一个SLAM算法的准确性。

2. 消融实验

我们评估了我们的算法的不同配置的影响。滑动窗口的大小被设置为10。我们测试了算法的以下配置:

a) π-LASM-Undis:运动的独立性被删除,我们采用[35]中的方法来解决点到平面的配准问题。

b) π-LASM-GPA:已删除GPA。

c) π-LASM-GPA-LPA:删除GPA和LPA。

表2展示了不同配置下的算法得到的起点和终点之间的位姿误差。很明显,运动的独立性、LPA和GPA都有利于位姿估计。

3. 与SOTA算法LEGO-LOAM的对比

表2列出了起点和终点之间的位姿误差。图4展示了由我们的算法和LeGO-LOAM生成的轨迹和关键帧位姿。在我们自己采集的数据集上,LeGO-LOAM无法在后两个数据集上顺利运行。可见,LeGO-LOAM的跟踪位姿和关键帧位姿的质量是不稳定的。这是因为LeGO-LOAM的跟踪位姿是通过记录两次连续扫描计算出来的。但我们的跟踪位姿是由全球注册生成的。另一方面,我们发现π-LASM-GPA-LPA比LeGO-LOAM效果更好。在KITTI数据集上,π-LSAM和LOAM的相对位置误差分别为0.72%和0.78%,我们的算法达到了SOTA。

图4.KITTI数据集00序列的运行结果。

此外,如表III所示,我们算法的LPA变体可以达到实时运行。我们也在数据集3上测试了没有π因子的LPA和GPA的运行时间。结果表明,π因子可使LPA和GPA的运行速度分别提高28倍和36倍。

点击阅读原文, 即可获取本文下载链接。

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

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

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

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

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

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

▲长按加微信群或投稿

▲长按关注公众号

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

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

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

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

ICRA 2021 | π-LSAM:基于平面优化的激光雷达平滑与建图算法相关推荐

  1. 【基于视觉语义特征的室外SLAM建图算法研究】

    首先什么是语义SLAM,我们知道传统的视觉SLAM是基于关键点.描述子等低级图像特征来进行定位和建图的,那么对于一些更高层次的带有明确意义的语义信息,比如现实世界中真实的物体,将它作为特征来进行优化的 ...

  2. 3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)

    Ubuntu18.04使用速腾16线激光雷达RS-16测试3D建图算法 LeGO-LOAM 的使用 1. 安装gtsam因子图库 2. 新建ROS工程目录文件夹,下载源码进行编译 3. 下载相关数据集 ...

  3. IROS 2021 | F-LOAM:快速激光雷达里程计建图算法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨 泡泡机器人SLAM 标题:F-LOAM : Fast LiDAR ...

  4. 基于Range Image的自主车辆激光雷达定位(ICRA 2021)

    Chen X, Vizzo I, Läbe T, et al. Range Image-based LiDAR Localization for Autonomous Vehicles[J]. arX ...

  5. 基于地面几何约束的单目视觉里程计精确鲁棒尺度恢复(ICRA 2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 标题:Accurate and Robust S ...

  6. 基于RGB-D图像的视觉里程计连续尺度空间直接图像对齐 (ICRA 2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 标题:Continuous Scale-Spac ...

  7. ICRA 2021| SKD:基于显着性估计的点云关键点检测

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:SKD: Keypoint Detection for Point Clouds using S ...

  8. 基于平面的约束2D激光雷达和相机的联合标定(2D Laser and Camera Calibration )原理及项目代码具体使用——旷视

    1 基于平面的约束2D激光雷达和相机的联合标定(2D Laser and Camera Calibration )原理 这是旷视做的一个关于2D激光雷达和相机的联合标定算法,在看这个标定算法之前,你可 ...

  9. ICRA 2021 | UPSLAM:联合全景SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:UPSLAM: Union of Panoramas SLAM 作者:Anthony Cowle ...

最新文章

  1. python可以自学吗-没有编程基础,可以自学Python吗?
  2. eclipse 集成 github
  3. CSDN markdown 如何更改文字字体、样式、颜色、大小?
  4. vue日期格式化实例
  5. AI:IPPR的数学表示-CNN结构/参数分析
  6. 《C++ Primer》14.3.2节练习(部分)
  7. cad小插件文字刷_文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件
  8. solr5 导入oracle,Solr7使用Oracle数据源导入+中文分词
  9. 百度被告监听用户,回应“没那能力”,但小米说锅就是你的!
  10. UESTC 1706 Orbital
  11. Pytorch实现Transformer字符级机器翻译
  12. C语言 二级指针内存模型②
  13. 正式“退休”的Flash,未来我们会怀念它吗?
  14. exp在线计算机计算,Exp 数学表达式计算器算法分享
  15. 小白笔记LM2596
  16. 【福利贴】教你如何移动联通电信免流
  17. php整数溢出 ctf,PWN INTEGER OVERFLOW 整数溢出
  18. 以太坊教程- Web3.js 开发基础
  19. 智能科学与技术是不是属于计算机专业,智能科学与技术专业属于什么类别
  20. 淘宝双十一自动化领喵币python脚本

热门文章

  1. centos安装tensorFlow的java环境
  2. WhatsApp用户数突破10亿 每天发送消息420亿条
  3. repo 修改邮箱地址
  4. Node.js 究竟是什么?
  5. 存储过程——数据的分页
  6. Spring Cloud Gateway 整合阿里 Sentinel网关限流实战!
  7. 甩锅!偷懒!PUA!转嫁压力!铲除异己!压榨下属!这就是职场leader真面目!...
  8. 太赞了!副业月入3W的技术大佬的公众号,学起来!
  9. Java最全的思维导图汇总!速度收藏!
  10. 数据驱动:新药物发现知识图