视觉SLAM与激光SLAM简单对比分析

news2024/11/19 10:27:57

总述

本文旨在梳理目前较为前沿的SLAM技术,包括激光和视觉,主要从精度和实时性两个方面对算法进系评价。

对于激光SLAM了解不深,后期需要补充相关算法的核心思想与算法框架。有问题请大佬们随时留言,我再改正。

0.1 视觉SLAM算法

从算法的定位精度上来看,ORB-SLAM3 > DM-VIO > VINS系列

从算法的实时性方面来看,跟踪一帧数据的时间(指输入一帧数据得到该帧的位姿),ORB-SLAM3和VINS的时间均在40ms–50ms左右,DM-VIO对于普通帧的跟踪在10ms左右,对于关键帧的跟踪在53ms左右略大于ORBSLAM3

综合定位精度和实时性,ORB-SLAM3的性能相对更加出色,而且多地图和重定位模式使得系统更加鲁棒。

0.2 激光SLAM算法

3D激光SLAM应用环境主要针对室外的大场景(2km以上),目前纯激光SLAM算法中lego-loam较为出色,但在实时性和精度上比最新的一些LIO算法较差一些。

在LIO算法中较为出色的有早期的LIO-SAM算法(lego-loam的改进版本),fast系列的fast-lio2和faster-lio,LIO系统的精度和用于评测的数据集相关,每个算法在不同的数据集上均有不同的表现,但综合来看对于2km以上的大场景算法的定位误差可以控制在1.5m左右,不同数据集下的表现大不相同,定位精度高的可以达到0.2-0.3m,差得可以达到10m,针对不同场景下的泛化性相对差一些。

对于ORB-SLAM在KITTI数据集的表现,双目模式下的ORBSLAM表现相对稳定,定位误差在基本在1米以内,对于比较极端的场景kitti08和kitti09在3m-4m之间
在这里插入图片描述

1.视觉SLAM

1.1 ORBSLAM3

1.1.1 算法框架

Tracking、LocalMpping、LoopClosing三大核心线程。

在这里插入图片描述

  • Tracking: 负责主要的跟踪,输入一帧数据(图像+IMU)输入该帧数据对应的位姿,同时创建关键帧
  • LocalMpping: 维护当前位姿附近的局部地图,为跟踪提供先验
  • LoopClosing: 基于词袋向量做回环检测,以之前的位姿为基准矫正当前帧位姿的漂移
  • Atlas地图: 二进制文件,本质上是文本的输入输出,将SLAM代码的每个类进行序列化然后保存成二进制文件,加载地图时再对地图文件反序列化

1.1.2算法精度

定位误差控制在10cm以内,大部分数据集控制在5cm以内

精度比较:ORB3双目/双目+IMU > ORB3单目+IMU > VINS-MONO

ORB3的VIO是基于紧耦合的因子图优化,IMU的精度在一些数据集(EuRoC->V系列)损失了一部分精度,但是提高了系统的稳定性(跟踪失败减少)

在这里插入图片描述

1.1.3算法实时性

单目模式下跟踪一帧数据30ms以内,双目模式下40ms以内(图像分辨率752x480,实际跟踪时间和分辨率大小相关)
在这里插入图片描述

1.2 VINS系列

包括VINS-MONO和VINS-FUSION两个系列,VINS-FUSION在MONO的基础上添加了双目模式,以及与GPS融合。

1.2.1 算法框架

简单的可以划分为数据预处理,基于滑窗的VIO,回环检测三个部分,普通跟踪过程的优化在VIO中实现
在这里插入图片描述

数据预处理: 对图像部分进行KLT光流跟踪获得关键点和速度信息,对IMU数据进行预积分处理
VIO跟踪: 类似于ORB3的Tracking+LocalMapping,维护一个小的局部的滑窗,实时对滑窗内所有的关键帧进行优化
回环检测: 和ORBSLAM类似,对关键帧图像额外提取500角点,通过计算词袋向量的几何相似性判断回环

VINS-FUSION:
VINS-FUSION在MONO的基础上添加了双目模式,以及与GPS融合,双目的初始化取代了单目SFM的三角话直接得到深度信息,在初始化时将首帧的位姿和GPS坐标进行对应获得绝对位姿

1.2.1 算法精度

在EuRoC数据集下,VINS的单目+IMU和双目+IMU模式,定位误差在7-15cm左右,且普遍高于10cm,相比与ORBSLAM3略有逊色。

1.2.2 算法实时性

因为前端采用光流跟踪,vins-mono在EuRoC数据集上的平均跟踪时间是10ms(VINS的跟踪只是光流跟踪得到匹配点和速度),但位姿优化时间是36ms,跟踪一帧数据耗时40ms+。

1.3 直接法DM-VIO

1.3.1 算法框架

DM-VIO是一个单目VIO框架,DSO系列的极大成算法,基于直接法和IMU结合的思想,算法没有明确的前端和后端,因为是直接在像素层面上通过最小化光度误差进行位置估计,在计算位姿的同时进行了优化。

1.3.2 算法精度

在EuRoC数据集上,定位误差基本控制在10cm以内,只比ORBSLAM3略差一些,但精度要高于VINS系列
在这里插入图片描述

1.3.3 算法实时性

在实时性上,DM-VIO跟踪一普通帧仅需要10ms左右,对于关键帧跟踪涉及BA,边缘化等操作跟踪一帧需要53ms,对于普通帧的跟踪实时性要远大于ORBSLAM3

在这里插入图片描述

2.激光SLAM

2.1 Lego-LOAM 和 LIO-SAM

Lego-Loam 算法是在LOAM算法基础上的拓展,LIO-SAM又在Lego-Loam算法框架基础上融合了IMU。

2.1.1 Lego-LOAM算法

整个SLAM系统主要包括点云分割、激光里程计、激光地图构建和位姿估计4个模块。
在这里插入图片描述

  1. 点云分割:
  • 将每一帧点云重投影到图像中(图像大小由雷达水平方向分辨率和垂直方向的扫描线决定,坐标就是角度和扫描线对应的值,每个坐标的信息使用距离信息表示,参考深度图像)
  • 在低于水平角度0的扫描线上的点被认为是地面点,进行标记
  • 对点云进行聚类,低于30的类被认为是噪点或树叶等动态点
  1. 基于平滑度计算,对点云信息进行特征提取平面点和边缘点

  2. 特征匹配估计位姿

    1. 特征匹配:基于标签信息(地面点、非地面点)进行scan-to-scan的点到线以及点到面的匹配
    2. 位姿估计:两步LM,首先根据地面在相邻帧基本保持不变的原理,根据地面点中点到面的匹配算出竖直维度的运动,即[t_z,t_roll,t_pitch],作为初始位姿,使用非平面点中点到线的匹配估计水平方向上的运动[t_x,t_y,t_row]
  3. 激光点云地图构建:本质上是将单帧点云和全局地图中的点云集合进行匹配

    1. 首先基于激光传感器的测据范围在全局地图中初步选择和当前帧点云存在潜在关系的点云集合
    2. 另外选取当前帧临近时刻的点云集合构建一个图优化,得到当前帧和地图之间的约束关系,即位姿

2.1.2 Lego-Loam算法精度

在室外大型场景下(2km)的均方根误差波动较大,最小0.36m,最大10m以上

在这里插入图片描述

2.1.2 LIO-SAM算法

酷睿i7平台,帧间跟踪(scan-to-scan)在30ms以内,地图匹配耗时较长普遍在100ms以上
在这里插入图片描述

2.2 lego-loam的vio版本LIO-SAM

相比lego-loam的改进点,加入了在激光里程计因子和回环因子的基础上,加入了IMU和GPS因子,同时将scan-to-全局地图匹配改为和局部地图匹配,提高匹配效率

2.2.1 算法框架

激光里程计部分: 维护一个由n个关键帧组成的滑窗,滑窗中所有关键帧的线特征和平面特征组成局部地图,只进行关键帧和局部地图之间的匹配

GPS因子: 对GPS(一般是10hz)位姿根据时间戳进行线性插值,但只在位姿估计协方差矩阵变化较大时加入GPS因子进行融合

2.2.2 LIO-SAM算法精度

在室外公园场景(3km)下,定位精度控制在1m内

在这里插入图片描述

2.2.3 LIO-SAM实时性

相比于Lego-Loam,scan-to-map耗时提升不是特别大,基于无人车采集的公园数据集上,单帧匹配时间在100ms左右

2.2.3 LIO-SAM与Lego-loam的对比

对于scan-to-scan的单帧匹配,LIO-SAM时间上速度略有提升,精度上使用的数据集不一致无法进行有效评估。

2.4 Fast-LIO与Faster-LIO

Faster-LIO是基于Fast-LIO的改进版本,在牺牲一点精度的情况下,极大提高了算法跟踪的整个流程。

2.4.1 fast系列和LIO-SAM的时间与精度对比

从精度上说,针对不同的数据集,fast-lio2比faster-lio精度略高一些,大部分数据集精度差在0.2m以内; faster系列和lio-sam系列在不同的数据集上各有输赢,整体上误差之间的差距在0.5m以内

从时间上说,faster-lio实时性最好,和fast-lio相比,单帧跟踪时间由30ms左右降到10ms,lio-sam一般在40ms+
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue使用qrcodejs2生成二维码

目录 概要 构建展示的vue组件qrcode.vue 组件的使用 概要 项目中用到需要展示二维码的样式&#xff0c;想到了qrcode 例如&#xff1a; 前提&#xff1a;安装包 npm install qrcodejs2 --save 构建展示的vue组件qrcode.vue <template><div style"width: …

使用spring自带的发布订阅来实现发布订阅

背景 公司的项目以前代码里面有存在使用spring自带发布订阅的代码&#xff0c;因此稍微学习一下如何使用&#xff0c;并了解一下这种实现方式的优缺点。 优点 实现方便&#xff0c;代码方面基本只需要定义消息体和消费者&#xff0c;适用于小型应用程序。不依赖外部中间件&a…

学习高级数据结构:探索平衡树与图的高级算法

文章目录 1. 平衡树&#xff1a;维护数据的平衡与高效性1.1 AVL 树&#xff1a;严格的平衡1.2 红黑树&#xff1a;近似平衡 2. 图的高级算法&#xff1a;建模复杂关系与优化2.1 最小生成树&#xff1a;寻找最优连接方式2.2 拓扑排序&#xff1a;解决依赖关系 拓展思考 &#x1…

el-select下拉多选框 el-select 设置默认值不可删除功能

Element3.0vue3.0 el-select下拉多选框 el-select 设置默认值不可删除功能 Element-UI是一款广泛使用的Vue.js组件库&#xff0c;其中El-Select下拉多选框组件在实际项目开发中经常被使用。然而&#xff0c;在Element 3.0版本中&#xff0c;El-Select下拉多选框默认值可被删除&…

降本56%!纵腾集团搭载OceanBase Cloud开启降本增效新篇章

近日&#xff0c;跨境电商物流领跑企业福建纵腾网络有限公司&#xff08;以下简称“纵腾集团”&#xff09;正式商用原生分布式数据库 OceanBase&#xff0c;为其下专业物流服务“云途物流”提供云数据库支撑服务。目前&#xff0c;已有两大关键业务系统全部接入 OceanBase Clo…

基于JAVAEE技术的ssm校园车辆管理系统源码和论文

基于JAVAEE技术的ssm校园车辆管理系统源码和论文105 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 1.选题背景和意义 背景&#xff1a; 随着第二次工业革命后&#xff0c;内燃机的发明与完善&#xff0c;解…

Charles信任证书后依然无法抓包的解决方案

前提 1、Charles安装证书 2、Charles设置SSL代理 3、查看Android安装Charles证书的方法 4、查看Android安装的Charles证书 问题 Charles拦截时&#xff0c;报“SSL handshake with client failed: An unknown issue occurred processing the certificate (certificate_unknow…

Ubuntu20.04安装ROS

Ubuntu20.04安装ROS Excerpt ubuntu安装方式有两种&#xff0c;一种是安装ubuntu系统&#xff0c;另一种是在windows下安装虚拟机&#xff0c;在虚拟机里安装ubuntu。下面为双系统安装ubuntu&#xff08;用虚拟机装ubuntu会很卡&#xff0c;bug很多&#xff0c;除非电脑配置极好…

UI按钮设计原则,让你的产品一次打动用户!

UI按钮是常见的界面组件,广泛应用于表单、对话框以及工具栏等场景。与链接不同,按钮用于让用户执行特定操作,如提交、删除等;而链接则将用户引导到新的页面。优秀的按钮设计能极大地提高用户的操作效率和转化率。本文将全面介绍按钮设计的相关指南,并通过实例解析如何设计出能最…

Android之布局转圆角

Android之布局转圆角 文章目录 Android之布局转圆角说明一、效果图二、实现步骤1.自定义RoundRelativeLayout2.使用 总结 说明 很多需求比较无语&#xff0c;需要某个布局转圆角&#xff0c;像个显眼包一样&#xff0c;所以为了满足显眼包&#xff0c;必须整呐提示&#xff1a…

01_lwip_raw_udp_test

1.打开UDP的调试功能 &#xff08;1&#xff09;设置宏定义 &#xff08;2&#xff09;打开UDP的调试功能 &#xff08;3&#xff09;修改内容&#xff0c;串口助手打印的日志信息自动换行 2.电脑端连接 UDP发送一帧数据 3.电路板上发送一帧数据

k8s etcd 简介

Etcd是CoreOS基于Raft协议开发的分布式key-value存储&#xff0c;可用于服务发现、共享配置以及一致性保障&#xff08;如数据库选主、分布式锁等&#xff09;。 如&#xff0c;Etcd也可以作为微服务的注册中心&#xff0c;比如SpringCloud也基于ETCD实现了注册中心功能&#…

如何利用Python代码优雅的进行文件下载

如何利用Python代码优雅的进行文件下载 一、什么是wget&#xff1f;二、使用wget.exe客户端进行文件下载三、使用Python脚本进行文件下载 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、什么是wget&#xff1f;…

【LeetCode算法系列题解】第6~10题

CONTENTS LeetCode 6. N 字形变换&#xff08;中等&#xff09;LeetCode 7. 整数反转&#xff08;中等&#xff09;LeetCode 8. 字符串转换整数-atoi&#xff08;中等&#xff09;LeetCode 9. 回文数&#xff08;简单&#xff09;LeetCode 10. 正则表达式匹配&#xff08;困难&…

hadoop的hadoop.tmp.dir安装时一定要更改

hadoop的hadoop.tmp.dir安装时一定要更改 hadoop.tmp.dir 属性确保了 HDFS 元数据的存储位置&#xff0c;其中包含了一些关键的文件&#xff0c;如&#xff1a; fsimage 文件&#xff1a;这是 HDFS 的文件系统镜像&#xff0c;记录了整个文件系统命名空间的状态。它包含所有文…

飞腾PSPA可信启动--4 可信固件环境搭建和打包

今天继续第四章&#xff0c;飞腾可信固件环境搭建和打包介绍。 此章节录制了讲解视频&#xff0c;可以在B站进行观看&#xff1a; Gmssl-master文件&#xff0c;可以关注公众号“乌拉大喵喵”后回复“Gmssl”获取。&#xff08;区分大小写&#xff09;

方案小知识

云平台 云平台也称云计算平台. 云计算, 顾名思义, 就是将计算在云上运行. 那么在这里面的3个概念 云: 通俗的理解就是远程计算机, 并且是一组 一堆, 这些远程计算机协同工作构建出一个平台&#xff0c;对用户提供服务计算&#xff1a;这是一个概念很大的名词&#xff0c;小了…

Nacos服务发起注册找不到nacos

错误概述 service启动报错&#xff0c;显示服务发起注册的时候找不到nacos failed to req API:/nacos/v1/ns/instance after all servers([localhost:8845]) tried: ErrCode:400, ErrMsg:<html><body><h1>Whitelabel Error Page</h1><p>This …

SOD-123FL贴片整流二极管,有哪些型号?

近日发现&#xff0c;客户对整流二极管的需求特别大。常有客户前来东沃电子咨询整流二极管型号参数、选型、替代、价格、交期、样品等方面的问题。那么&#xff0c;关于DS1A、DS1B、DS1D、DS1G、DS1J、DS1K、DS1M贴片整流二极管&#xff0c;您知道多少呢&#xff1f;东沃电子推…

免费试用,畅享海量内容!快来体验Netflix首月福利

Netflix是一家全球知名的流媒体服务平台,通过提供海量的电影、电视剧、纪录片和动画等各种类型的内容,迅速赢得了全球观众的喜爱。作为一项以订阅制为基础的在线视频服务,Netflix为用户提供了无限制的观影体验,让用户可以根据自己的兴趣和喜好随时随地畅享精彩的影视内容。 Ne…