0. 简介

自从ikd-tree出来后,现在越来越多的工作瞄准了增量式这种方法,比如说激光惯导里程计(LIDAR-Inertial Odometry,LIO)的高精度跟踪通常涉及最小化点到平面距离的k最近邻(kNN)搜索,然而,这样做的成本是维护大型局部地图并为每个点执行kNN平面拟合。在《LIO-PPF: Fast LiDAR-Inertial Odometry via Incremental Plane Pre-Fitting and Skeleton Tracking》中,我们通过节省这些不必要的成本来减少LIO的时间和空间复杂度,在技术上设计了一个平面预拟合(PPF)方法来跟踪3D场景的基本框架。在PPF中,平面不是为每个扫描单独拟合的,更不用说为每个点拟合了,而是随着场景“流动”而逐步更新,与kNN不同,PPF对噪声和非严格平面更具有鲁棒性,而且我们采用迭代主成分分析(iPCA)进行优化。此外,还引入了一个简单但有效的夹层,以消除假的点对平面匹配,并且完全开源了代码。

1. 文章贡献

本文中,与在搜索每个点的kNN之后懒惰地拟合平面相比,我们采用了一种更积极的平面预拟合方法。这个想法源于两个不必要的因素:
1)不必要的kNN:当前的LiDAR扫描跟踪[1]-[6]为每个单独的点搜索kNN以拟合平面,假设空间接近的点来自同一平面。然而,这个条件太严格了,即空间上远离的点也可能属于同一个平面,例如长墙。换句话说,kNN策略忽略了平面不总是在小的局部区域内这一事实。对于大平面来说,大多数kNN搜索是冗余的,因为它们最终拟合相同的平面。同时,来自连续LiDAR扫描的点通常来自同一个大平面的不同部分,即它们共享同一个高级别大平面对象。这给了我们一个提示:如果搜索发生在高级特征平面空间中,那么kNN的昂贵成本自然可以被节省。

2)不必要的大型局部地图:如果只保留几个扫描在局部地图中,NN可能会很远,因此很可能属于其他对象,导致kNN不准确地拟合匹配的平面。因此,扩大局部地图以保证足够接近的点对kNN对应关系[5]-[7],如图1d所示。但是,我们注意到:即使只保留一个扫描在局部地图中,缺乏接近的 N N ≠ NN \neq NN= 缺乏平面匹配。例如,在图1b中,大多数橙色墙体点未能在长墙上找到接近的NN,但是这面墙的平面可以轻松地从一个单独的先前扫描中的点(蓝点)预拟合。再次,这给了我们一个提示:如果搜索发生在高级特征平面空间中,一个单独的先前扫描就足以提供足够的点对平面匹配。总之,我们做出以下贡献:

  • 我们建议通过LiDAR扫描之间的平面预拟合(PPF)来表示场景的基本骨架进行点匹配。我们证明了(i)PPF可以自然地缩小局部地图并消除大多数冗余的kNN搜索和平面拟合;(ii)kNN对噪声和非严格平面的不鲁棒性。
  • 在PPF中,不是为每个点/扫描拟合平面,而是利用IMU和LiDAR扫描的顺序性来实现增量平面更新;迭代PCA使PPF比kNN更具有噪声和非严格平面的鲁棒性;引入了一个简单而有效的夹层来排除错误的点对平面匹配
  • 工程贡献包括完全开源的LIO-PPF。在5个开放数据集的22个序列上进行的实验表明,与原始方法相比,我们的PPF最多可以将本地地图大小减小64%,在残差计算方面实现4倍的加速,最多实现1.92倍的总体FPS,并仍然显示相同水平的精度。

图1. (a) 重建的场景。(b) 在快速旋转下(a)的两个连续扫描。© 跨越扫描的大面形成了场景的基本骨架,并揭示了其整体几何结构。(d) kNN需要大型的局部地图,否则大多数点无法找到邻居来拟合平面。而我们使用基本骨架来表示场景以进行点匹配。搜索区域扩大到平面级别,不需要kNN搜索。

2. 符号和预备知识

在本文中,我们将世界坐标系表示为 W W W,LiDAR坐标系表示为 L L L,IMU体坐标系表示为 B B B。令 P i P_i Pi​表示从扫描i接收到的去畸变的LiDAR点。一个3D平面可以由其法向量 n ∈ R 3 n∈\mathbb{R}^3 n∈R3和其中任意一点 p ∈ R 3 p∈\mathbb{R}^3 p∈R3来确定,或者更简洁地通过一个4维向量 f = [ n T , d ] T f=[n^T,d]^T f=[nT,d]T来确定,使得 f ⋅ p ~ = 0 f· \tilde{p}=0 f⋅p~​=0,其中 p ~ = [ p T , 1 ] T \tilde{p}=[p^T,1]^T p~​=[pT,1]T。我们用变换矩阵 T ∈ S E ( 3 ) T∈SE(3) T∈SE(3)来表示6自由度姿态,其中包含旋转矩阵 R ∈ S O ( 3 ) R∈SO(3) R∈SO(3)和平移向量 t ∈ R 3 t∈\mathbb{R}^3 t∈R3。
定理1: f f f经过 T T T的变换为:

证明:设 p ~ \tilde{p} p~​ 是 f f f 上的任意一点,且 p ~ ′ \tilde{p}^′ p~​′ 是其通过 T T T 变换后得到的对应点,即 p ~ ′ = T p ~ \tilde{p}^′ = T \tilde{p} p~​′=Tp~​。那么我们有:

这意味着 p ~ ′ \tilde{p}^′ p~​′在 f ′ f^′ f′上。

下面我们将会介绍本文高效平面预拟合方法。然后,我们描述基于PPF的对应骨架跟踪算法。最后,提出了一个三明治层,以使算法在复杂场景中更加鲁棒。

图2. 预拟合平面和跟踪流程的概览。浅箭头 → 表示为准备下一个激光雷达扫描而进行的操作。

3. 增量iPCA平面预拟合(最重要的部分,如何对平面完成拟合)

…详情请参照古月居

经典文献阅读之--LIO-PPF(增量平面预拟合LIO)相关推荐

  1. LIO-PPF:通过增量平面预拟合和跟踪的快速激光雷达惯导里程计

    点云PCL免费知识星球,点云论文速读. 文章:LIO-PPF: Fast LiDAR-Inertial Odometry via Incremental Plane Pre-Fitting and S ...

  2. 货运服务网络设计:经典文献阅读笔记(3)复现Netplan

    **货运服务网络设计:经典文献阅读笔记(2)**提到说要把Crainic T G(1984年)文献使用的模型复现一下,但是文章给出的通用框架还是太笼统,在尝试后决定使用Jacques Roy & ...

  3. 经典文献阅读之--Swin Transformer

    0. 简介 Transfomer最近几年已经霸榜了各个领域,之前我们在<经典文献阅读之–Deformable DETR>这篇博客中对DETR这个系列进行了梳理,但是想着既然写了图像处理领域 ...

  4. 经典文献阅读之--NICE-SLAM(SLAM的神经隐含可扩展编码)

    0. 简介 对于深度学习而言,NeRF一定是最近两年最火的工作之一了,**NeRF(Neural Radiance Fields)**是最早在2020年ECCV会议上的Best Paper,其将隐式表 ...

  5. 经典文献阅读之--PL-SLAM(点线SLAM)

    0. 简介 之前作者基本都在围绕着特征点提取的路径在学习,最近看到了最近点云PCL推送的<Structure PLP-SLAM: Efficient Sparse Mapping and Loc ...

  6. 经典文献阅读之--SuMa++

    0. 简介 作为一名技术博主,最主要的还是需要不断地学习新的知识,而最好的学习就是不断地阅读新的文章,并不断地学习和总结前人的思路和方法.所以博主打算开一个新的系列来介绍.这里主要来介绍一下<S ...

  7. 经典文献阅读之--PON

    0. 简介 作为Transformer在机器视觉领域的爆火,在自动驾驶领域目前很多工作都集中在前视转鸟瞰图的方法中,这里我们来讲2020年一篇经典的论文<Predicting Semantic ...

  8. 经典文献阅读之--Globally Consistent and Tightly Coupled 3D LiDAR Inertial Mapping(紧耦合3D激光雷达)

    0. 简介 传统的地图生成方法一般是依靠Lidar和IMU结合的,但是问题在于,目前Lidar和IMU的紧耦合主要集中在前端里程计,基本没有涉及到后端全局优化以及建图的融合.为此文章<Globa ...

  9. 经典文献阅读之--Cam2BEV

    0. 简介 这里我们介绍一篇20年的论文<A Sim2Real Deep Learning Approach for the Transformation of Images from Mult ...

最新文章

  1. WinRAR技巧:解压后自动打开解压好的文件夹
  2. python opencv按照一定间隔保存视频帧
  3. Openlayers中实现地图上添加一条红色直线
  4. 对于并列的TextField实现同步控制
  5. 【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 饲料计算
  6. android UI布局
  7. zClock - 置顶时钟, 倒计时, 网速显示
  8. 大型企业网络设备管理
  9. string和StringBuilder的选择
  10. 第四篇 做一个用户登录之后查看学员信息的小例子
  11. VS2013+cuda8.0配置及案例
  12. 使用HanLP分词时,词性标注错误的问题
  13. kafka单机环境搭建
  14. MySql整理(基础|进阶|运维)【黑马程序员视频】
  15. MQL5 中的交易操作 - 很简单
  16. 电视机芯片介绍-海思Hi3751 V600
  17. 计算机图形学立方体旋转代码,Flash AS教程:旋转立方体
  18. 解决freeswitch30s就挂掉的问题
  19. 一名开源工程师的自白
  20. Java位运算,常见的位运算

热门文章

  1. CMMB收费、直播星免费都是战略失误
  2. python安装失败0x80070570_Python:“ModuleNotFoundError”,但模块已安装?
  3. 趣味讲解测试行业一些常用的专业术语
  4. 尚硅谷 2021 SpringMVC 教程
  5. “千年老二”Bing要翻身?
  6. 基于ssm的青檬数码商城项目uniapp模块(一)
  7. Python汉诺塔 费布拉奇数列
  8. 激活ltsb2016_win10 企业版ltsb 2016有方法激活吗
  9. 三、获取指定长度的汉字,数字,字母,手机号,身份证号等
  10. 外企生活常用英语口语