经典文献阅读之--LIO-PPF(增量平面预拟合LIO)
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所示。但是,我们注意到:即使只保留一个扫描在局部地图中,缺乏接近的NN≠NN \neqNN= 缺乏平面匹配。例如,在图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. 符号和预备知识
在本文中,我们将世界坐标系表示为WWW,LiDAR坐标系表示为LLL,IMU体坐标系表示为BBB。令PiP_iPi表示从扫描i接收到的去畸变的LiDAR点。一个3D平面可以由其法向量n∈R3n∈\mathbb{R}^3n∈R3和其中任意一点p∈R3p∈\mathbb{R}^3p∈R3来确定,或者更简洁地通过一个4维向量f=[nT,d]Tf=[n^T,d]^Tf=[nT,d]T来确定,使得f⋅p~=0f· \tilde{p}=0f⋅p~=0,其中p~=[pT,1]T\tilde{p}=[p^T,1]^Tp~=[pT,1]T。我们用变换矩阵T∈SE(3)T∈SE(3)T∈SE(3)来表示6自由度姿态,其中包含旋转矩阵R∈SO(3)R∈SO(3)R∈SO(3)和平移向量t∈R3t∈\mathbb{R}^3t∈R3。
定理1:fff经过TTT的变换为:
证明:设 p~\tilde{p}p~ 是 fff 上的任意一点,且 p~′\tilde{p}^′p~′ 是其通过 TTT 变换后得到的对应点,即p~′=Tp~\tilde{p}^′ = T \tilde{p}p~′=Tp~。那么我们有:
这意味着p~′\tilde{p}^′p~′在f′f^′f′上。
下面我们将会介绍本文高效平面预拟合方法。然后,我们描述基于PPF的对应骨架跟踪算法。最后,提出了一个三明治层,以使算法在复杂场景中更加鲁棒。
图2. 预拟合平面和跟踪流程的概览。浅箭头 → 表示为准备下一个激光雷达扫描而进行的操作。
3. 增量iPCA平面预拟合(最重要的部分,如何对平面完成拟合)
…详情请参照古月居
相关文章:
经典文献阅读之--LIO-PPF(增量平面预拟合LIO)
0. 简介 自从ikd-tree出来后,现在越来越多的工作瞄准了增量式这种方法,比如说激光惯导里程计(LIDAR-Inertial Odometry,LIO)的高精度跟踪通常涉及最小化点到平面距离的k最近邻(kNN)搜索&#x…...
ChatGPT背后有哪些关键技术?CSIG企业行带你一探究竟
目录1 ChatGPT的时代2 CSIG企业行3 议题&嘉宾介绍3.1 对生成式人工智能的思考3.2 对话式大型语言模型研究3.3 文档图像处理中的底层视觉技术4 观看入口1 ChatGPT的时代 2015年,马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始…...
C#基础之面向对象编程(二)
总目录 文章目录总目录前言一、概述1. 定义2. 面向对象的三大特性二、封装1. 定义2. 属性三、继承1. 定义2. 继承的使用3. base 和this四、多态1. 定义2. 重写和重载3. 多态性的实现1、静态多态性2、动态多态性4. 向上转型和向下转型1、定义2、语法格式3、案例结语前言 本文主…...
蓝桥杯刷题冲刺 | 倒计时25天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.完全二叉树1.完全二叉树 题目 链接: 完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 给…...
c语言—动态内存管理
一.为什么存在动态内存开辟开辟空间的特点:空间开辟大小是固定的数组在申明时,必须指定数组长度,她所需要的内存在编译时分配但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道ÿ…...
请说明Ajax、Fetch、Axios三者的区别
相同点: 1、三者都用于网络请求,但是不同维度 2、 Ajax(Asynchronous Javascript and XML),一种技术的统称,并不是实际的API 3、Fetch是一个具体的API,浏览器里面直接有一个API就叫Fetch 4、 Axios是一个第三方库&…...
阿里p8测试总监,让我们用这份《测试用例规范》,再也没加班过
经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 固然,编写一份好的测试用例需要:充分的需求分析能力 理论及经验加持,作为测试职场摸爬打滚的老人&…...
【Unity】数据持久化路径Application.persistentDataPath
今天突然想到这个路径Application.persistentDataPath,热更的重要路径,该文件夹可读可写,在移动端唯一一个可读写操作的文件夹。移动端可以将本地的资源(资源MD5值配置表)等一些文件放到StreamingAssets文件夹下&#…...
华为OD机试 - 插队(Java JS Python)
题目描述 某银行将客户分为了若干个优先级, 1 级最高, 5 级最低,当你需要在银行办理业务时,优先级高的人随时可以插队到优先级低的人的前面。 现在给出一个人员到来和银行办理业务的时间序列,请你在每次银行办理业务时输出客户的编号。 如果同时有多位优先级相同且最高…...
MongoDB数据库从入门到精通系列之八:调整oplog大小
MongoDB数据库从入门到精通系列之八:调整oplog大小 一、oplog的概念二、oplog大小三、调整oplog大小详细步骤一、oplog的概念 操作日志oplog包含了主节点执行的每一次写操作。oplog是存在于主节点local数据库中的一个固定集合。从节点通过查询此集合以获取需要复制的操作。每个…...
PCL 间接平差法拟合二维直线
目录 一、算法原理二、代码实现三、结果展示四、相关链接一、算法原理 通过传统最小二乘法对点云数据进行二维直线拟合时,可将误差只归因于一个方向上,本文假设误差只存在于 y y y轴方向上,设点云拟合的二维直线方程为: y =...
进程调度的基本过程
这里写目录标题什么是进程进程管理结构体或类的主要属性pid内存指针文件描述符表辅助进程调度的属性并发并行并发什么是进程 进程是操作系统对一个正在运行的程序的一种抽象,也就是说,一个运行起来的程序就是一个进程。 进程又是操作系统进行资源分配的…...
python自动化办公(二)
上接python自动化办公(一) 文章目录文件和目录操作使用shutil库文件查找globfnmatchhashlib文件和目录操作 使用shutil库 shutil库也是Python标准库,它可以处理文件、文件夹、压缩包,能实现文件复制、移动、压缩、解压缩等功能。…...
Qt Quick - GridLayout 网格布局
GridLayout 理论总结一、概述二、依赖属性三、例子1. 不含跨行的2. 带跨行列的3. 从右到左一、概述 GridLayout 是最常用的布局器,也叫网格布局器,如果网格布局被调整大小,布局中的所有 Item 将被重新排列。它类似于基于widget的QGridLayout…...
安卓手机也可以使用新必应NewBing
没有魔法安卓手机也可以使用新必应NewBing 目前知道的是安卓手机 安卓手机先安装一个猴狐浏览器 打开手机自带浏览器,搜索关键词:猴狐浏览器,找到官网 也可以直接复制这个网址 狐猴浏览器 lemurbrowser CoolAPK 我的手机是荣耀安卓手机…...
支付系统设计:消息重试组件封装
文章目录前言一、重试场景分析一、如何实现重试1. 扫表2. 基于中间件自身特性3. 基于框架4. 根据公司业务特性自己实现的重试二、重试组件封装1. 需求分析2. 模块设计2.1 持久化模块1. 表定义2. 持久化接口定义3. 持久化配置类2.2 重试模块1.启动2.重试3. 业务端使用1. 引入依赖…...
Visual Studio 2022 c#中很实用的VS默认快捷键和原生功能
常常使用VS感觉还是有必要掌握其默认的快捷键,我这个人比较懒,不喜欢动不动就去设置快捷键,系统有就用,记住了就可以到处用,问题是像我们这种有很多个工作场所的人不可能每台电脑都去配置一下快键键。实际上我使用3dma…...
Python的30个编程技巧
1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y 10,20 print(x,y) x,y y,x print(x,y) #1 (10, 20) #2 (20, 10) 赋值的右侧形成了一个新的元组,左侧立即解…...
MySQL:JDBC
什么是JDBC? JDBC( Java DataBase Connectivity ) 称为 Java数据库连接 ,它是一种用于数据库访问的应用程序 API ,由一组用Java语言编写的类和接口组成,有了JDBC就可以 用统一的语法对多种关系数据库进行访问,而不用担…...
C++【list容器模拟实现函数解析】
list容器&&模拟实现函数解析 文章目录list容器&&模拟实现函数解析一、list容器使用介绍二、list容器模拟实现及函数解析2.1 list结构体创建2.2 迭代器封装2.21 构造函数:2.22 前置和后置及- -2.23 解引用2.24 判断相等2.25 箭头重载2.26 第二个和第…...
(Java)试题 算法提高 约数个数
一、题目 (1)资源限制 内存限制:512.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s (2)输入 输入一个正整数N (3)输出 N有几个约数 &a…...
魔法反射--java反射初入门(基础篇)
👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 java反射初入门 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉🙉。 ♨️如果文章有…...
概率统计_协方差的传播 Covariance Propagation
1. 方差的传播 误差的传播是指分析在形如的关系中,参量误差(x)对变量误差(y)的影响有多大。误差的传播与函数的微分紧密相关,本质是在利用当Δ x 不大时,。 方差计算公式: X为变量,为总体均值,N为总体例数。求变量X与均值的差的平方再求平均值,即得到方差。方差…...
大学生考研的意义?
当我拿起笔头,准备写这个话题时,心里是非常难受的,因为看到太多的学生在最好的年华,在自由的大学本应该开拓知识,提升认知,动手实践,不断尝试和试错,不断历练自己跳出学生思维圈&…...
【C++笔试强训】第三十一天
🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 选择题 &#x…...
toString()、equals()是什么,为啥需要重写,多种方法来重写
https://m.runoob.com/java/java-object-class.html toString() 1.为什么会有toString 子类继承父类就可以使用父类所有非私有的属性的方法。 在Java中所有类都直接或者间接继承Object类,可以说只要是Object类里面定义的非私有的属性和方法,任何类都可…...
家装材料清单中会有哪些装饰材料?
在家居装修中,业主可以根据装修公司出具的材料清单去一一采购,这样不至于有遗漏,就算采用全包的方式,通过材料清单也可以大致了解当时房子装修所用的材料,补充自己的装修知识。下面跟随小编一起了解下房子装修材料中所…...
【C++初阶】6. CC++内存管理
1. C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* …...
【数据结构】万字超详解顺序表(比细狗还细)
我这个人走得很慢,但是我从不后退。 ——亚伯拉罕林肯 目录 一.什么是线性表? 二.什么是顺序表? 三.接口函数的实现 1.创建工程 2.构造顺序表 3.初始化顺序表 3.初始化顺序表 4.顺序表的尾插 5.顺序…...
yolov5 剪枝、蒸馏、压缩、量化
文章大纲 剪枝推理优化YOLOv5 剪枝可能出现的问题参考文献与学习路径考察神经网络时期重要的激活函数sigmoid和tanh,它们有一个特点,即输入值较大或者较小的时候,其导数变得很小,而在训练阶段(详见1.2.3节),需要求取多个导数值,并将每层得到的导数值相乘,这样一旦层数…...
湖南网站建设公司磐石网络/阿里巴巴指数查询
这篇文章是我看哔哩哔哩上学习的笔记,学习的地址如下: https://www.bilibili.com/video/BV164411Y732 因本人才疏学浅,如有错误之处,还请见谅 文章目录多段跳冲刺瞬移注意点结尾多段跳 UE4里面自带的人物是有这个属性的 在这里 可以修改数量 冲刺 …...
沈阳网站建设公众号/网站建设的数字化和互联网化
源码 资源在qq群:2076966127 这个是我更新这个系列的第二期,现在看看几个月之前画的UI我真想吐了。好丑啊~~~~~ 现在我再一些大型的 图标网站找到了很多好看简介免费的图标~~ https://www.flaticon.com 这个就很不错~ 还是先准备好你的QtDesigner这个原本是为了C准备…...
网站编辑转行做文案/软件培训
前言 很多朋友问我的博客是什么软件写的,嘻嘻,其潜台词是我的博客页面还挺好看的呢!!!心里美滋滋的,这里就把方法共享出来吧 定制样式而已 我的博客主要是对H1的样式做了一点改变,给H1加上了背景…...
wordpress post 请求/网站制作流程和方法
一、对Kafka的认识 1.Kafka的基本概念 2.安装与配置 3.生产与消费 4.服务端参数配置 二、生产者 1.客户端开发 必要的参数配置消息的发送序列化分区器生产者拦截器 2.原理分析 整体架构元数据的更新 3.重要的生产者参数 三、消费者 1.消费者与消费组 2.客户端开发 必要的…...
网站跳转qq链接怎么做的/怎么推广
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义…...
点击到达网站指定位置怎么做/如何免费找精准客户
基本Kmeans算法介绍及其实现 http://blog.csdn.net/qll125596718/article/details/8243404/ kmeans http://www.52ml.net/1695.html转载于:https://www.cnblogs.com/XDJjy/p/4975984.html...