【简单总结】SLAM 算法的 Benchmark 及相关数据集的结果对比
前言与参考
主要是copy一下总结,方便自己后续找方案特定使用,所有的出处均在标题处和原链接跳转,此处仅做各个benchmark收集使用,如果有原作者觉得侵权,请联系我 将全力配合相关内容和链接删除
如果网友有其他更新的结果推荐,可在评论区留言 我将继续加入;因为年年出结果 肯定会使得一些算法不再sate-of-art,可以点击目录跳转当年最新的 这样比较快
最后本人不是SLAM专业赛道选手,所有的方案特点总结也都以各链接作者和网友讨论为主,如有不同看法 请点击去相关issue和链接一起讨论~ peace and love!
2020 SLAM Comparison
GITHUB原链接:https://github.com/Tompson11/SLAM_comparison
这是我看到的第一个SLAM方案对比,基本把2020之前的方案及特点都讲清楚了,但是2020年后也出现了很多很多优秀的SLAM方案~~
松耦合是指:可以不要IMU/其他的,紧耦合方案:需要所有传感器在线
以下为摘取原文,请点击原链接查看更为详细的内容
方案及特点
本次我共测试了github上开源的8种方案,按照特点可分为
| 特点 | 方案 |
|---|---|
| 纯Lidar | A-LOAM(港科大版本的LOAM),hdl_graph_slam,BLAM |
| Lidar与IMU松耦合 | LeGo-LOAM,SC-LeGo-LOAM(在LeGo-LOAM上使用了一种新的回环检测方法) |
| Lidar与IMU紧耦合 | LINS,LIO-SAM,LIOM |
总结
- 各种方案的优缺点如下:
| 方案 | 优点 | 不足 |
|---|---|---|
| ALOAM | 1. 在几何特征丰富时比较稳定 | 1. 后期内存会出现爆炸,计算效率下降 2. 在几何特征较少时会产生明显漂移 |
| LeGo-LOAM | 1. 在地面点丰富时比较稳定 2. 轻量级 |
1. 在地面点缺乏时很容易崩溃 2. 得到的地图比较稀疏 |
| LINS | 1. 轻量级 | 1. z方向漂移明显 2. 得到的地图比较稀疏 3. 目前的版本要求Lidar与IMU体坐标系的xy平面平行,不接受自己提供的外參 |
| LIO-SAM | 1. 存在回环检测,能较好地闭合回环 2. 稳定性强 3. Demo看起来比较舒服 |
1. 在几何特征丰富的情况下可能不如ALOAM |
| LIOM | 1. 存在重力加速度的校正和IMU初始状态估计 | 1. 稳定性不好,有时性能好,有时又不行,可能与其初始化环节的性能有关 2. 内存占用大,时间性能较差 |
- 在进行IMU校正后,融合高频IMU确实能够提升SLAM性能,尤其是在几何特征缺乏或者剧烈运动的情况下。
LIO-SAM在定位和建图方面做的都不错,比较建议使用。
2021年有网友的issue链接讨论的也很有意思,希望大家也不要错过,反正我第一次看到的时候 挺快乐的 吸取前人大佬们经验 hhhh:https://github.com/Tompson11/SLAM_comparison/issues/1
@Gatsby23: 感谢作者做出了如此丰富的对比试验,完全让我没想到的是LINS能达到这么好的效果。因为看LINS的代码和论文,Lidar和IMU的紧耦合结果仅仅作为初值送入Mapping Module,Mapping Module本身还需要再做一次Scan-to-Map的ICP,所以我自己尝试过在不同初值下的Scan-to-Map的结果,发现得到结果差距不大,但没想到实际效果中LINS的结果如此的好。不过可能也有两方面的原因:一方面是在LINS的代码中有通过重力方向来校正Roll和Pitch的过程。这个可能对车体运动本身有较好的校正效果。二是在一些激烈运动中,需要较好的初值才能收敛,这是我做实验不足和没有想到的地方。
但我更推荐作者去尝试现在新出的两种算法:F-LOAM和Fast-LIO。特别是FAST-LIO是基于当前帧与地图的观测来做更新,理论上能取得更好的效果。
@chengwei0427:紧耦合的效果会比松耦合效果要好(约束更多,同样对传感器要求也更高),这个也必将符合预期;
lego_loam表现虽然让人诧异,但也符合其工作原理(scan-to-scan效果很差,这也是不如aloam的地方);
@chengwei0427:如果我没有记错,lego_loam的地面点是放到surf里,参与优化的,所以对地面的约束还是有的。lio_sam的特征提取,相比于lego,去掉了非地面点中的聚类及点数少的点簇移除,移除地面是为了保证靠近地面的点不参与corner特征提取。
bias约束,也是为了提高积分的精度,这样lio_sam中的初值会更加准确,但是imu是没有参与优化的,仅提供初值;(实际测试没有用gnss)。
所以,lio_sam和lego_loam的scan_to_map除了特征差别外,就是初值的差异了;这里,是特征的影响大,还是初值的影响更大呢?并且实际测试中,lego相比lio,迭代的次数更多,不收敛的情况也更多
@Gatsby23: 嗯嗯,多谢提醒,有些忘了Lego-LOAM。如果我没记错的话,LEGO-LOAM的优化是拆开的,所以可能欧拉角拆开来优化并不是一个好结果?我个人觉得特征保下限,初值冲上限。你可以把匹配点关系映射出来看看
@chengwei0427: 最近测试了一下LIO-Livox,觉得效果挺好的。所以就适配了一下传统旋转激光(主要是用lio-sam做的特征提取,激光里程计用LIO-Livox的去做,几乎不用怎么修改)。
用的ouster-64采集的数据,采集速度大概在0.7~1.2m/s(LIO-Livox声称支持50km/h以上的速度进行构图),但是运行一段时间就会出现轨迹漂移(激光10hz和imu数据100hz,都是ouster提供,所以已经是硬件时钟同步,imu-lidar的外参用的单位矩阵,实际上应该是有个小的平移变换的)。
现在卡在这里了,一直没找出问题在哪里?想听听你是什么看法?
可能的原因有:
①激光和imu的外参精度不够导致的。(因为没有标定,直接使用单位阵,而ouster里激光和imu应该也是接近单位阵的,这里的细微差距,对结果影响有多大,看了代码,主要是激光残差部分,如果本身接近单位阵,这里理论上应该影响也很小的);
②LIO-Livox的紧耦合,受传感器精度影响,特别是imu精度;(ouster内置100hz的imu,并且bias很大,在LIO-Livox中,是两帧的滑窗紧耦合,imu预积分结果受imu精度影响到底有多大呢?)
PS:同样的bag,也测试了lio-sam,效果蛮好的,当然,lio-sam的紧耦合,比较特别。
期待你的回复!
@Gatsby23 几个问题吧:
是我看别人说的:Ouster的世界戳不一定做到了真正硬同步,这个还是要测试看一下,可以把数据采下来后离线观察下?不行的话可以考虑加个插值来平滑下,然后去畸变(不过这个我也是纸上谈兵,具体没操作过)。
外参的问题我觉得你可以跑下FAST-LIO看下结果,看最后是不是收敛就基本上知道这个外参怎么样。我是直接跑FAST-LIO,发现收敛后的平移误差和我标定出来的差不多。
LIO-Livox有一个很重要的约束是NHC,用地面来约束角度,所以得看你们录制的数据是不是完全平行于地面?如果抖动比较大的话,也会造成比较大的影响。
最好能上最后的轨迹图来看看,如果说是跑了1KM以上飘的话,还是比较正常的
@chengwei0427: LIO-Livox是基于优化的方法,不是基于滤波的方法,跟lili-om有些相似。你可能是看的太多,又搞混了。
这里我是把LIO-Livox的特征提取部分,参考lio-sam的特征提取,修改为支持spinning激光;优化部分几乎没改,用的还是LIO-Livox的poseEstimation,所以大概率不是代码问题,而是我参数的问题,特别是lidar-imu参数。
比较诡异的是,如果我按照ouster内部的lidar-imu参数去设置fast-lio里的初值,稍微一动就会漂移;如果设置lidar-imu里旋转用单位阵,平移给一个参数,效果反而还不错。
2022 SLAM Application
原链接:https://github.com/engcang/SLAM-application
这个没有结果直接指明,而是把跑的算法都给了video和结果pcd/odom.txt
以下为摘取原文,请点击原链接查看更为详细的内容
Results:
video: Lego-LOAM vs LIO-SAM vs LVI-SAMvideo2: LIO-SAM vs LVI-SAMvideo3: LIO-SAM vs FAST-LIO2video4: FAST-LIO2 vs Livox-mapping vs LOAM-Livox usingLivox Mid-70 LiDAR, real-worldvideo5: FAST-LIO2 in the building with narrow stairs usingOuster OS0-128, real-worldvideo6: FAST-LIO2 in the narrow tunnels usingOuster OS0-128on the UAV (drone)video7: Faster-LIO vs FAST-LIO in the building with narrow stairs usingOuster OS0-128, real-worldvideo8: VoxelMap in the building using
2022 HKUST DATASET
数据集里的设备传感器配置

硕士所在组,虽然没参与 但是也学到了很多;这篇正在建立更多的数据集 并扩展为期刊中,请通过此网页链接了解哦~ https://ram-lab.com/file/site/multi-sensor-dataset/
以下为在此数据集上测试的定位结果,直接从IROS2022论文中截取:


2022 NTU DATASET
IJRR 2021: NTU VIRAL: A Visual-Inertial-Ranging-Lidar dataset, from an aerial vehicle viewpoint
之所以写2022是因为作者还在持续维护这个数据集,同时加入各个算法在此数据集上的使用与评估
数据集里的设备传感器配置

悄悄话:博士组里第一作者天明大哥过来博后,上课的时候用的他们的数据集,所以就熟悉了一下 并且发现天明大哥写的scripts真好用;
2022/12/21 从网页截取的数据集适配的方法:
.tg { border-collapse: collapse; border-spacing: 0 }
.tg td { border: 1px solid rgba(0, 0, 0, 1); font-family: Arial, sans-serif; font-size: 14px; overflow: hidden; padding: 10px 5px; word-break: normal }
.tg th { border: 1px solid rgba(0, 0, 0, 1); font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; overflow: hidden; padding: 10px 5px; word-break: normal }
.tg .tg-c3ow { text-align: center; vertical-align: top }
.tg .tg-0pky { text-align: left; vertical-align: top }
| Method | Repository | Credit |
|---|---|---|
| Open-VINS | https://github.com/brytsknguyen/open_vins | Forked from https://github.com/rpng/open_vins |
| VINS-Fusion | https://github.com/brytsknguyen/VINS-Fusion | Forked from https://github.com/HKUST-Aerial-Robotics/VINS-Fusion |
| VINS-Mono | https://github.com/brytsknguyen/VINS-Mono | Forked from https://github.com/HKUST-Aerial-Robotics/VINS-Mono |
| M-LOAM | https://github.com/brytsknguyen/M-LOAM | Forked from https://github.com/gogojjh/M-LOAM |
| LIO-SAM | https://github.com/brytsknguyen/LIO-SAM | Forked from https://github.com/TixiaoShan/LIO-SAM |
| A-LOAM | https://github.com/brytsknguyen/A-LOAM | Forked from https://github.com/HKUST-Aerial-Robotics/A-LOAM |
| FAST_LIO | https://github.com/Kin-Zhang/FAST_LIO | Kindly provided by Kin-Zhang @ KTH RPL |
这是2021IJRR论文里的结果table:

2022 Hilti Challenge
在港科的时候 看老胡每天都在吐槽这个数据非要旋转的这么抖 hhhh,链接直接给到了axriv上这样大家可以直接去类似于一个report报告的形式看到各个提交队伍 基于的是哪个方法,虽然大部分并没把他们去评估的代码开出来
设备:

结果,具体分数的评估方法 可以去论文里看哈

【简单总结】SLAM 算法的 Benchmark 及相关数据集的结果对比的更多相关文章
- SLAM、三维重建,语义相关数据集大全
作者朱尊杰,公众号:计算机视觉life,编辑成员 一 主要针对自动驾驶: 1.KITTI数据集: http://www.cvlibs.net/datasets/kitti/index.php(RGB+ ...
- 对比几种在ROS中常用的几种SLAM算法
在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是 ...
- 三维重建7:Visual SLAM算法笔记
VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...
- 三维重建:SLAM算法的考题总结
参考英文维基:https://en.wikipedia.org/wiki/Slam 参考文档:视觉slam研究分析的一点认识 1. 请简单描述您对机器人的SLAM的概念理解? 答: 机器人需要在自身位 ...
- SLAM概念学习之随机SLAM算法
这一节,在熟悉了Featue maps相关概念之后,我们将开始学习基于EKF的特征图SLAM算法. 1. 机器人,图和增强的状态向量 随机SLAM算法一般存储机器人位姿和图中的地标在单个状态向量中,然 ...
- 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势
SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的 ...
- 视觉SLAM算法框架解析(1) PTAM
版权声明:本文为博主原创文章,未经博主允许不得转载. 本系列文章旨在总结主流视觉SLAM算法的框架,对比各个算法在子模块的差异,最终提炼出融合各个算法优点的架构. PTAM[1]是视觉SLAM领域里程 ...
- [SLAM]Karto SLAM算法学习(草稿)
Karto_slam算法是一个Graph based SLAM算法.包括前端和后端.关于代码要分成两块内容来看. 一类是OpenKarto项目,是最初的开源代码,包括算法的核心内容: https:// ...
- SLAM学习笔记(2)SLAM算法
SLAM算法分为三类:Kalman滤波.概率滤波.图优化 Kalman滤波方法包括EKF.EIF:概率滤波包括RBPF,FastSLAM是RBPF滤波器最为成功的实例, 也是应用最为广泛的SLAM方法 ...
- 非刚性图像配准 matlab简单示例 demons算法
2011-05-25 17:21 非刚性图像配准 matlab简单示例 demons算法, % Clean clc; clear all; close all; % Compile the mex f ...
随机推荐
- CF633H (线段树维护矩乘 + 莫队)
Fibonacci-ish II 题意:给定一个长度最大为 \(30000\) 的序列,和最多 \(30000\) 个询问,每个询问问某区间 \([L,R]\) 里的数,去掉重复然后排序之后,依次乘上 ...
- JAVA也能用上Seq啦
前言 在.NET生态中,Serilog凭借其强大的结构化日志记录功能和与Seq的无缝集成,已经成为许多开发者的首选日志记录工具.Seq作为一个日志检索和仪表板工具,能够将日志中的插值转换为结构化数据, ...
- 五:大数据架构回顾-LambdaPlus架构
Blink是阿里云在 Apache Flink 基础上深度改进的实时计算平台,Blink旨在将流处理和批处理统一,实现了全新的 Flink SQL 技术栈,在功能上,Blink支持现在标准 SQL 几 ...
- Docker 必知必会----初识
什么是Docker?Docker 是一个开源的容器管理引擎.开发者可以通过Docker直接管理应用程序所需要的容器.它的logo如下: 为什么需要Docker使用Docker主要有两个原因,1.屏蔽不 ...
- 使用c#强大的表达式树实现对象的深克隆
一.表达式树的基本概念 表达式树是一个以树状结构表示的表达式,其中每个节点都代表表达式的一部分.例如,一个算术表达式 a + b 可以被表示为一个树,其中根节点是加法运算符,它的两个子节点分别是 a ...
- 读写可编程 SIM/USIM 卡
目录 文章目录 目录 SIM 卡 USIM 卡 USIM 卡的关键参数 pySim 读写软件与 ADM key SIM 卡 SIM 卡,用户身份模块(Subscriber Identity Modul ...
- handsontable多选下拉框编辑器扩展
一.效果截图 二.文件引用 多选下拉框扩展自handsontable的BaseEditor. 多选下拉框组件由两个文件构成, 一个下拉框样式表MultiSelect.css 一个组件实现脚本Multi ...
- VAE-可变自动编码器
VAE 有什么作用? 简而言之,它改进了生成的图像.VAE 针对图像的某些方面进行训练,并且我们的 UI ( vae-ft-mse-840000-ema-pruned) 中捆绑的默认 VAE 改善了生 ...
- 解决“在windows里的记事本里编辑的汉字文本文件,上传到linux服务器上出现乱码“问题
目录 一.前期准备 二.编码转换 一.前期准备 1.首先在windows环境下打开记事本,然后创建一个包含汉字和英文的文本文件,输入内容"测试在windows里的记事本里编辑的文本文 件,上 ...
- orangepi zero2在linux5.4以上内核使用ili9341
背景 根据orangepi zero2用户手册说明,linux5.13内核不能使用 modprobe fbtft_device 驱动spi lcd 查看linux内核源码提交记录,发现在v5.4-rc ...