最新开源Faster-LIO:快速激光IMU里程计
作者丨半闲居士@知乎
来源丨https://zhuanlan.zhihu.com/p/468628910
编辑丨点云PCL
文章:Faster-LIO: Lightweight Tightly Coupled Lidar-inertial Odometry using Parallel Sparse Incremental Voxels
作者:Chunge Bai1,2, Tao Xiao2, Yajie Chen2, Haoqian Wang1 , Fang Zhang2and Xiang Gao
代码:https://github.com/gaoxiang12/faster-lio.git
摘要
本文提出了一种基于增量体素的激光雷达惯导里程计(LIO)方法,用于快速跟踪旋转和固态激光雷达扫描点云,为了获得较高的跟踪速度,我们既不使用复杂的基于树的结构来划分空间点云,也不使用严格的k近邻(k-NN)查询来计算点匹配。相反,我们使用增量体素(iVox)作为我们的点云空间数据结构,它是从传统体素修改而来的,支持增量插入和并行近似k-NN查询,我们在算法中提出了线性iVox和PHC(伪希尔伯特曲线)iVox作为两种可选的底层结构,实验表明,在固态激光雷达中,iVox的每次扫描速度达到1000-2000HZ,而在32线旋转激光雷达中,iVox的速度超过200赫兹(仅使用现代CPU),同时仍保持相同的精度水平!
总体介绍
大体来讲,LIO系统的整个计算流程是比较固定的:它们从IMU中得到一个粗略的估计,然后把雷达的数据与一些历史数据做配准,最后用某种状态估计算法进行滤波或者优化。IMU部分的处理差别不大,所以LIO系统的计算效率主要与点云算法和后端算法相关,我们大致分三个方面:
点云最近邻的数据结构。点云配准的基本问题是计算给定点与历史点云的最近邻,通常需要依赖一些最近邻的数据结构。这些数据结构又大体分为树类的(tree like)和体素类(voxel like)的。广义的,高维的最近邻问题是一个比较复杂的问题,但LIO里的最近邻则是低维的、增量式的问题。于是,像R*树、B* 树等静态的数据结构并不是非常适合LIO。FastLIO2里提出使用增量式的kdtree来处理最近邻,我们则认为增量的体素更适合LIO系统。
点云残差的计算方式。自动驾驶里普遍偏向不直接使用点到点的残差,而是使用点到线或点到面的残差。点到点的残差形式虽然简单,但雷达点云和RGBD点云相比,更加稀疏,在车辆运动过程中不见得都能打到同一个点,而且点云也往往会被降采样后再进行处理,所以并不太适合在自动驾驶中使用。LOAM系列会计算点云特征,实际当中特征提取要花的时间是不可忽略的,甚至是主要计算部分。
状态估计算法的选型。LIO和VIO中普遍会使用介于单帧EKF和批量优化之间的方案,例如IEKF、MSCKF、Sliding Window Filter等等。这其中又以IEKF算是最简单有效的一类,既有迭代来保证精度,又不需要像预积分系统那样算一堆雅可比矩阵。
实验
仿真实验是在一个随机生成的点云里进行K近邻查找以及新增地图点的实验。我们对比了Kdtree flann, ikd-tree, nanoflann R-tree, faiss-IVF, nmslib几个库。耗时与地图点数的关系图如下:
插入、K近邻查询时间与点数的关系
各算法的召回率与时间曲线如下:
数据集实验
数据集实验主要比较整个LIO系统的耗时和计算精度。由于Faster-LIO框架与FastLIO2基本相同,我们时间上对标的也主要是FastLIO2,其他系统主要是用来做个参考。32线雷达的详细步骤算法耗时如下图所示:
在精度方面,考虑到LIO默认不带回环检测,所以我们主要评价每百米的漂移误差指标(百分比形式),见下表
与LeGO-LOAM对比
总结
本文提出了一种更快速的LIO方法,使用iVox作为最近邻方案,在同等精度指标下可以明显提升LIO计算速度。
内容摘自半闲居士的知乎文章,点击“原文阅读”可查看知乎原文:https://zhuanlan.zhihu.com/p/468628910
本文仅做学术分享,如有侵权,请联系删文。
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天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
最新开源Faster-LIO:快速激光IMU里程计相关推荐
- 东北大学 | 一种适用于大规模公路环境的鲁棒激光惯性里程计和建图系统
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题: A Robust Laser-Inertial Odometry and Mapping Me ...
- LIOM: 一种新的激光惯性里程计和建图方法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L | 来源:知乎 https://zhuanlan.zhihu.com/p/137 ...
- Point-LIO:鲁棒高带宽激光惯性里程计
点击进入->3D视觉工坊学习交流群 标题:Point-LIO: Robust High-Bandwidth LiDAR-Inertial Odometry 作者:He et al., HKU M ...
- imu 里程计融合_地图影像与IMU及里程计集成的探测车定位
1.序列影像与IMU及里程计集成定位 行星表面巡视探测中,探测车依靠IMU和里程计组合的航迹推算能够获取连续稳定的定位结果,然后行驶过程中的车轮打滑以及IMU长时间工作带来的偏移严重影响了定位精度.基 ...
- imu 里程计融合_轮式里程计(Wheel Odometry)以及惯性导航(IMU)数据
对于众多机器人应用来说,自定位以及基于航位推测(Dead-reckoning, DR)估计的里程计信息是非常重要的.一般来说,要设计一个有效的里程计系统是十分困难的. 一.惯性导航单元(Inertia ...
- 激光SLAM里程计标定 —— 直接线性方法
// 构建超定方程组 // 此时A和b是已经分配好大小,A的维度为3n*9,b的维度为3n*1A.middleRows(now_len*3,3)<< Odom(0),Odom(1),Odo ...
- 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程
一:前言介绍 LVI-SAM是Tixiao Shan的最新力作,Tixiao Shan是Lego-loam(基于激光雷达里程计的SLAM框架)和Lio-sam(基于惯性-雷达紧耦合的SLAM框架)的作 ...
- 激光IMU融合——LIO-Mapping / LIOM / LINS / LIO-SAM算法解析
激光IMU融合--LIO-Mapping / LIOM / LINS / LIO-SAM算法解析 激光IMU融合--LIO-Mapping / LIOM / LINS / LIO-SAM算法解析 1. ...
- LIRO:紧耦合激光-惯性-测距里程计
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 LIRO: Tightly Coupled Lidar-Inertia-Ranging Odometr ...
最新文章
- windows7升级安装之初体验
- 【更新链接】U盘启动制作工具(UDTOOL) v3.0.2014.0427
- 【Qt】Visual Studio编译Qt项目报Qt Version错误
- 树莓派安装Ubuntu MATE及ROS系统
- HDU1856More is better(并查集)
- 如何检查手机上的 App 是不是正版?
- 【转载】ESFramework介绍之(20)―― 插件自动升级
- 5000并发的qps是多少_高并发和高性能系统中进程、线程、协程、队列(如何调度的)...
- 利用arcgis基本比例尺标准分幅编号流程
- 万能地图下载器下载谷歌卫星地图在ArcGIS中套合
- Error: invalid operands (*UND* and *UND* sections) for `*‘
- html 设计尺寸,多少像素才合适 网页设计标准尺寸大讲解
- 龙族路明非和零h_第一章 海芒
- 制作Linux内存镜像+制作对应的volatility profile
- 经验分布函数无偏性的证明和方差的推导
- 怎么恢复计算机误删的用户组,如何恢复误删的用户组
- KaTex各种语法汇总
- 魅族Android10内测招募答案,魅族flyme9内测招募答案
- Python 利用数据分布直方图来确定合适的阈值
- 360linux面试题,奇虎360运维工程师面试题
热门文章
- instanceOf,isInstance,Class,isAssignableFrom区别比较
- 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听
- 多线程中的使用共享变量的问题
- 解决dell poweredge 2850 服务器系统内存限制
- libsndfile动态库在VS2010下面的调用
- DataRow判断列名是否存在
- NetBeans 时事通讯(刊号 # 106 - Jun 17, 2010)
- 一行代码,揭开CPU执行原理!
- 这本书,让我秒懂了微服务架构
- 对于注册中心,ZooKeeper、Eureka 哪个更合适?