VSLAM框架对比

2023-05-16

(一)单目VSLAM特点介绍:

1、ORB-SLAM2

  • 工作流程:
  •  主要模块:
  1. 前端:ORB特征提取匹配,估计相机位姿;根据跟踪地图点数的减少选择关键帧;
  2. 后端:BA优化局部地图(关键帧和地图点),此处的局部地图是当前关键帧的Covisibility Graph(与当前关键帧有共视点的关键帧);
  3. 回环检测:通过DBOW在关键帧序列中选出相似帧,计算Sim3(由于单目的尺度不确定导致尺度漂移,故采用相似变换将尺度优化也考虑进来);检测出回环的地方进行点云地图融合,并优化Essential Graph(Covisibility Graph的Spanning Tree应该是MST);
  • 优点:
  1. 采用三线程结构,有非常好的跟踪和建图效果,能够保证轨迹与地图的全局一致性。
  2. 对特征点提取及匹配方案进行优化,如提取均匀分布特征点、循环优化减少Outlier,这使得ORB-SLAM的鲁棒性很高;
  3. 受车辆、行人等动态物体的影响大。
  • 缺点:
  1. 基于特征点,每次跟踪位姿都要提取匹配特征点,较为耗时;
  2. 系统较为精细庞大,三线程结构对搭载平台要求较高,目前多在PC运行;
  3. 只能建稀疏特征点地图,无法提供导航避障功能,只能提供定位;

2、LSD-SLAM

  • 工作流程:

  • 主要模块:
  1. 前端跟踪:用之前一帧的位姿作为初始值,直接法求解跟踪获得每一新帧相对于当前关键帧的se(3);
  2. 深度图估计:如果新帧跟关键帧变化较小,就通过small-baseline stereo comparison方法更新关键帧深度图;若变化较大就创建新关键帧,此新关键帧通过与最近的关键帧匹配来初始化。
  3. 地图优化:跟踪两两邻近关键帧间的sim(3),作为下一步全局优化的edge;位姿图优化+闭环检测(用特征点的词袋方法)+尺度漂移检测。kao
  • 优点:
  1. 可在 CPU 上实现半稠密场景的重建;
  2. 考虑了像素梯度与直接法的关系,以及像素梯度与极线方向在深度估计中的角度关系;使深度估计精度有了较大提高;
  3. 用sim3作全局优化,可以减小尺度漂移,并可实现尺度可视化。
  • 缺点:
  1. 对相机内参和曝光非常敏感,并且在相机快速运动时容易丢失。 
  2. 回环检测时还是得用特征点,不是单纯的直接法SLAM。

3、SVO

  • 工作流程:
  • 主要模块:
  1. 前端跟踪:和上一帧通过光流法跟踪,求位姿初始值,然后通过局部地图在图像上的投影用直接法优化位姿;通过平移量判断是否创建新关键帧,创建关键帧后均匀提取新特征点;
  2. 深度滤波(地图优化):每次跟踪完后,获得帧间位姿,然后三角化获得点云深度,然后基于均值——高斯滤波器对逆深度进行融合,以优化地图。
  • 优点:
  1. 特征点与直接法的混合使用,使得它速度极快,在低端计算平台上也能达到实时性,而在 PC 平台上则可以达到 100 多帧每秒的速度;
  2. 框架简单,迁移容易。
  • 缺点:
  1. 在单目初始化时,使用了分解 H 矩阵而不是传统的 F 或 E 矩阵的方式,这需要假设特征点位于平面上;
  2. 目标应用平台为无人机的俯视相机,细节是围绕这个应用设计的,使得它在平视相机中表现不佳:如在关键帧选择时,使用了平移量作为确定新的关键帧的策略,而没有考虑旋转量;
  3. 为了速度和轻量化,舍弃了后端优化和回环检测部分,也基本没有建图功能。

(二)双目/RGB-D VSLAM:

1、RTAB-MAP(RGB-D/双目)

  • 工作流程:

 基于ROS的整个系统架构

RTAB-MAP的核心——VO模块

 

  • 主要模块:
  1. VO模块:提取GFTT/BRIEF特征,并进行帧间光流追踪,通过RANSC PnP方法获得位姿初始值;再通过帧与局部地图点特征匹配,用BA方法更新位姿。
  2. 循环回环检测:ROS中的STM节点从图像中提取视觉特征(SIFT, SURF, ORB 等), 然后将其量化成"视觉词袋",创建定位点;每次检测相似帧时都是由WM从LTM中选择可能性大的定位点(每个定位点都有权重,权重随着被访问次数增加而增加)来进行比对,以优化运行速度;
  3. 后端优化:g2o/GTSAM(位姿图或因子图)优化。
  4. 建图:可以建2D/3D占据栅格图/八叉树图/点云图。
  • 优点:
  1. 适用于长期和大规模环境在线建图的要求;
  2. 里程计鲁棒性较好,且低漂移;
  3. 提供相应软件包,地图生成开发实用且简便。
  • 缺点:
  1. 方案偏向于商品化,二次开发难,适合用来玩。

2、RGBD-SLAM-V2

  • 工作流程:

  • 主要模块:
  1. 前端:从每一帧的RGB提取特征,计算描述子,RANSAC ICP计算两帧之间的运动估计,并提出了一个EMM(环境测量模型)判断运动估计是否可以接受;
  2. 后端优化:也是词袋检测,然后G2O位姿图优化;
  3. 建图:可建立八叉树地图。
  • 优点:二次开发较容易。
  • 缺点:实时性相对较差,相机要慢速运动。

3、Elastic Fusion

  • 工作流程:

  • 主要模块: 
  1. 首先将输入的一帧RGB和深度图转换为普通的RGB图像和点云;
  2. 前端Tracking部分:一方面,几何位姿估计:将该帧生成的点云与Surfel模型进行ICP配准,另一方面,光度位姿估计:利用直接法将该帧的RGB图与上一帧RGB图(通过OpenGL得到,后面叙述)配准,对ICP和直接法进行联合优化得到当前帧的相机位姿;
  3. MAP优化:对当前帧进行回环检测,若存在回环,则根据回环建立的约束,优化Deformation Graph变形图,并用优化后的变形图更新Map,若不存在回环,则根据当前帧的相机位姿将当前帧的RGB图像和点云融合到Surfel模型中,融合使用 openGL 的 shading language;
  4. 根据当前帧位姿从模型投影出当前视角下的深度图和RGB图像并判断投影出的RGB图是否加入关键帧。
  • 优点:
  1. 直接对MAP进行优化,通过优化的MAP获得精确定位;
  2. 实现基于RGB-D相机的实时密集视觉SLAM。

(三)VSLAM+IMU(VIO)方案:

1、VIORB-SLAM2(单目+IMU)

  • 工作原理:在ORB-SLAM2上改进而来,还没有深入了解;
  1. 前端:与ORB-SLAM师出同门,都采用orb特征点,通过特征匹配结合局部地图估计运动;
  2. 后端:?
  • 优点:精度高,较为成熟
  • 缺点:由于单目+特征匹配,鲁棒性较低

2、VINS-MONO(单目)

  • 工作流程:

  • 主要模块:
  1. 预处理:图像特征光流跟踪;IMU数据预积分
  2. 初始化:纯视觉Sfm初始化;Sfm与IMU积分的松耦合;
  3. 局部BA联合优化和重定位:基于滑动窗口的非线性优化实现紧耦合;
  4. 回环检测与全局位姿图优化:四自由度位姿图优化。
  • 优点:
  1. 用紧耦合方法实现的,通过单目+IMU恢复出尺度;
  2. 采用光流跟踪,跟踪鲁棒性较好,可实用与快速场景;
  3. 估计精度较高。
  • 缺点:系统较为复杂,闭环检测对精度影响大;

3、VINS-FUSION(双目)

  • 工作原理:    VINS-FUSION是VINS-MONO的进化版,共有四个版本:单目+imu;纯双目;双目+imu;双目+imu+GPS;最主要的版本就是-双目+imu+GPS,对比于VINS Mono,主要增加了global_fusion包,用来融合GPS以及视觉IMU定位的结果。
  • 优点:
  1. 可以静止进行初始化;
  2. 尺度信息不一定完全依靠IMU(有双目),不会造成尺度不可关的情况;
  3. 鲁棒性上,双目明显优于单目。
  • 缺点:由于视觉误匹配等各种原因,双目的精度会比单目差一点。

4、ORB-SLAM3(单目/双目+IMU)

  • 工作流程:

  • 主要模块:

        相比于ORB-SLAM2加入了ATLAS成为了多地图系统;加入IMU可以进化为VIO-slam;

  1. 前端TRACKING:根据当前的active地图,实时地跟踪最新一帧的位置,利用最小化重投影误差的方式实现位姿的最大后验估计MAP。决定新一帧是否作为关键帧加入地图也是在这个线程中完成的。跟踪线程接受IMU、Frame输入,IMU 被预积分处理,而Frame被提取ORB特征,跟踪方法与2代类似。
  2. 局部建图优化:active地图加入新关键帧,在添加关键帧的时候,重复的关键点被移除。VI-Bundle Adjustment优化当前被插入帧前后窗口地图。
  3. 闭环检测:还是基于词袋法,将关键帧和整个Atlas地图集关键帧进行比较;找到相似后利用时间+几何一致性检验;
  4. 地图融合:关键帧和整个Atlas地图集关键帧进行比较,如果检测到两关键帧是同一地点,分为两种情况:若被召回帧是当前的active地图中的一部分,则需要进行loop correction回环矫正,在回环矫正之后,在另一个线程中进行,全局位姿图进行BA优化,整体的地图一致性得到了提升;若被召回帧是属于一个non-active的map,两个地图则会被合并成一个地图并将大地图设置为当前的active地图。
     
  • 优点:
  1. 由于加入多地图概念,相比于ORB-SLAM2鲁棒性更强,在跟踪定位失败后,可以继续建立新图,并在回环检测召回时可以进行地图缝合;
  2. 加入IMU鲁棒性有了很大提高;
  3. 提供多种相机模型。
     
  • 缺点:初始化时,使用视觉与IMU独立初始化再进行联合初始化,初始化速度较慢

(四)各方案综合对比:

类别特点算法

定位精度

 

鲁棒性建图开发性实时性
纯单目尺度不确定性导致需要初始化,同时由于尺度不确定可以实现大尺度范围下工作LSD-SLAM 在光照变化较小情况下,跟踪稳定性好,鲁棒性好半稠密点云可在CPU 实时运行半稠密建图,30帧
ORB-SLAM2 慢速运动下鲁棒性好,可实现重定位稀疏由于基于特征点,运行速度较慢
SVO 源码只适用平面场景,平移运动稀疏轻便,运行速度快

纯双目

/RGB-D

鲁棒性较单目高;由于视觉误匹配等各种原因,双目的精度会比单目差一点RTAB-MAP 相对于RGBD-SLAMV2较好点云/占据栅格图/八叉树图在ROS下,可以在大规模场景中流畅运行
RGBD-SLAM-V2  点云/八叉树实时性较差,必须慢速运动
Elastic Fusion定位精度较位姿优化方法低些 SURFEL图(精细地图)  
单目+IMUIMU 的引可在快速运动时能够减少一些丢失,鲁棒性提高;而精度上与 VO 相近或略有下降VIORB-SLAM2

 

由于加入IMU误差项,较未加入IMU的版本精度低

    
VINS-MONO

 

较VIORB-SLAM2高

    
ORB-SLAM3 鲁棒性高,跟踪失败仍能继续工作   
双目+IMUVINS-FUSION较VINS-MONO低鲁棒性高于VINS-MONO   

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VSLAM框架对比 的相关文章

  • Flask 与 Django 框架对比

    详细分析了两种 Python Web框架 xff1a Flask 与 Django 从开发难易度 应用架构 性能 可扩展性以及适用范围等方面进行了详细说明 Django 中级教程在 B 站上线 xff0c 深入解析 Django 体系架构
  • vslam流程框架介绍

    平常扫地机产品上经常听说使用了vslam技术 xff0c 那么这个vslam到底是什么呢 xff0c 我们下面一起来看看 vslam是什么 xff1f VSLAM 即 Visual Simultaneous Localization and
  • VSLAM框架:ORB_SLAM2采用ROS Bag获取数据

    ORB SLAM2采用ROS Bag获取数据 前言一 ROS bag数据1 ROS bag简介2 获取数据集3 查看数据集信息 二 配置文件1 配置ros文件2 配置内参文件三 启动节点1 回放ROS bag数据集2 深度相机节点 前言 之
  • VIO/VINS/VSLAM问题定位流程与思路

    首先假设读者是了解基础VSLAM xff0c 了解VIO基础 至少要会标定 xff0c 调过几个开源系统的 先说一下双目的VINS FUSION xff0c 大部分问题都是基线造成的问题 xff0c 简单点说就是如果使用较短的基线如5cm
  • 车载VSLAM与激光雷达方案

    基于VSALM在计算机视觉领域的领先技术 xff0c 提供优异的视觉目标检测功能 提供前视视觉感知 xff0c 环视视觉感知以及APA系统的一站式ADAS功能解决方案 基于激光与视觉检测的融合结果 xff0c 覆盖更为广泛的应用场合 从特征
  • vslam

    目录 隐藏 1 SLAM 介绍 1 1 什么是SLAM 1 2 SLAM与视觉里程计 xff08 Visual Odometry xff09 1 3 SLAM和SfM 2 主流开源SLAM方案 2 1 视觉传感器 2 2 激光传感器 2 3
  • VSLAM框架对比

    xff08 一 xff09 单目VSLAM特点介绍 xff1a 1 ORB SLAM2 工作流程 xff1a 主要模块 xff1a 前端 xff1a ORB特征提取匹配 xff0c 估计相机位姿 xff1b 根据跟踪地图点数的减少选择关键帧
  • VSLAM综述

    传统SLAM算法及相关成果的介绍 根据传感器的分类可将VSLAM大致分为单目SLAM 双目SLAM xff08 立体 xff09 和RGB D SLAM 有根据对图像信息不同的处理方式可分为直接法SLAM和基于特征SLAM 直接法主要有直接
  • vslam介绍

    目录 隐藏 1 SLAM 介绍 1 1 什么是SLAM 1 2 SLAM与视觉里程计 xff08 Visual Odometry xff09 1 3 SLAM和SfM 2 主流开源SLAM方案 2 1 视觉传感器 2 2 激光传感器 2 3
  • vslam: 扫盲之旅

    ICCV研讨会 xff1a 实时SLAM的未来以及深度学习与SLAM的比较 http blog csdn net qq 18661939 article details 51919329 The Future of Real time SL
  • vslam从入门到入土:在ubuntu18中使用D455运行VINS-FUSION

    1 ROS安装 建议使用ROS官方网的步骤 melodic Installation Ubuntu ROS Wiki 一定要看清楚版本 ubuntu18 是 melodic 2 ceres安装 2 1依赖 sudo apt get inst
  • vSLAM重读(4): OKVIS--KeyFrame-based Visual-Inertial SLAM

    1 摘要 视觉传感器与IMU传感器互补 61 61 gt VIO系统 xff1b 由最初的以滤波为主题 xff0c 现在逐渐转换为非线性优化来实现SLAM xff1b 提出一种方法将视觉信息与IMU测量数据紧密结合 xff0c 将IMU的误
  • vSLAM重读(5): vSLAM中对双目相机的数据处理及与单目相对比

    1 双目相机概述 双目立体视觉模型 双目模型求取深度 双目立体相机分别校准可参考 ROS 单目相机 分别校准 双目立体匹配算法案例 https www cnblogs com riddick p 8486223 html https www
  • 鱼眼+红外+IMU+VSLAM+SLAM

    一 目的 1 想知道 xff1a 二 参考 1 一分钟详解鱼眼镜头标定基本原理及实现 https mp weixin qq com s VyxoTaYtYPB Bfh3JCXl1A 三 注意 四 操作
  • 欢迎走进VSLAM

    1 开启新技术之门 SLAM xff0c 全称叫做Simultaneous Localization and Mapping xff0c 中文叫做同时定位与建图 SLAM技术发展到如今已经几十年 xff0c 目前以激光雷达作为主传感器的SL
  • ORB-SLAM2:一种开源的VSLAM方案(译文)

    摘要 xff1a ORB SLAM2是基于单目 xff0c 双目和RGB D相机的一套完整的SLAM方案 它能够实现地图重用 xff0c 回环检测和重新定位的功能 无论是在室内的小型手持设备 xff0c 还是到工厂环境的无人机和城市里驾驶的
  • AirSim使用--vslam

    声明 xff1a 本文写于2020年7月 xff0c 只对当时的代码版本有效 0 下载zip 001 zip 002 zip 003等分卷文件时 xff0c 可以使用 xff1a ubuntu 如何解压 zip 001 zip 002 zi
  • ubuntu 安装Pangolin 过程

    前言 大家好 好久没有写技术博客了 在工作学习中遇到一些问题及解决方法 希望能帮助到大家 Pangolin 想必大家都非常熟悉了 这个是一款开源的OPENGL显示库 可以用来视频显示 而且开发容易 代码我们可以从Github 进行下载 ht
  • windows下编译、配置ceres库(保姆级教程)

    文章目录 前言 一 cmake安装 二 ceres 依赖库的下载 2 1 依赖库的下载 2 2 编译前准备工作 2 2 1 创建vs工程的输出文件夹 2 2 2 创建编译库的输出文件夹 2 3 编译Eigen库 2 3 1 编译Eigen3
  • 【语义】如何使用PointNet训练点云数据和点云分割(初探)

    大家好 今天给大家介绍下cvpr2017 一篇文章Pointnet 语义分割 该网络基于tensorflow 写的 非常轻巧方便 但是文章和代码有一定出入 在训练过程中出现过拟合现象 大概训练了10个小时多 1 需要准备的东东 1 Ubun

随机推荐

  • 建造《流浪地球2》中要毁灭人类的超级量子计算机MOSS的核心量子技术是什么?

    1 流浪地球2 中的量子计算机 2023年中国最火的电影非 流浪地球2 莫属 xff0c 在 流浪地球2 中有一个人工智能机器人MOSS xff0c 它的前身是 550W 超级量子计算机 xff0c MOSS 是它给自己起的名字 xff08
  • 离子阱量子计算机

    1 新闻 2020年6月 xff0c 科技制造企业霍尼韦尔 xff08 Honeywell xff09 发布第一台离子阱量子计算机H0 xff0c 它拥有64量子体积 xff0c 它是IBM和谷歌同时期量子计算机的两倍 公司表示之所以能取得
  • ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)

    已经有前辈将ubuntu14 04下的turtlebot教程翻译了过来 xff0c 可以先行查看 xff0c 对turtlebot的知识建立总体的认识 xff1a https www ncnynl com archives 201609 7
  • FreeRTOS学习 第一讲 操作系统的移植

    FreeRTOS学习 第一讲 操作系统的移植 基本介绍 xff1a 系统分类 1 xff09 前后台系统 while 1 循环 适用情况 xff08 简单和小的需求 处理需求相对来说较少 xff09 2 xff09 实时操作系统 实时操作系
  • Python调用playsound时报错:指定的设备未打开,或不被 MCI 所识别

    报错信息 xff1a Error 263 for command close audio mp3 指定的设备未打开 或不被 MCI 所识别 原因 xff1a windows不支持utf 16编码 xff0c 需修改playsound源码 p
  • 【无人机学习】Mission Planner(pc端)和QGroundControl(android端)

    无人机学习 Mission Planner xff08 pc端 xff09 和QGroundControl xff08 android端 xff09 系列文章目录 提示 xff1a 这里是收集了无人机的相关文章 无人机学习 无人机基础知识
  • 【无人机学习之QGroundControl】android端App初解4-遥控器通道

    无人机学习之QGroundControl android端App初解4 遥控器通道 系列文章目录 提示 xff1a 这里是收集了无人机的相关文章 无人机学习 无人机基础知识 无人机学习 Mission Planner xff08 pc端 x
  • 百度2014校园招聘 软件研发工程师 笔试题

    一 简答题 xff08 本题共30 xff09 1 动态链接库和静态链接库分别有什么优缺点 xff1f xff08 10 xff09 2 轮询任务调度与抢占式任务调度的区别 xff1f xff08 10 xff09 3 请列出数据库中常用的
  • Kubernetes 日志查询分析实践

    简介 xff1a 本文将介绍如何基于日志服务实现对 Kubernetes xff08 以下简称 K8s xff09 日志的采集以及查询分析 xff0c 此外 xff0c 还附带了对 Ingress Audit 方案的简要介绍 为了方便大家通
  • C++算法题

    目录 一 排序算法 1 冒泡排序 2 快速排序 3 归并排序 4 堆排序 5 插入排序 6 topK 二 二分查找 1 一维数组二分查找 2 二维数组二分查找 3 寻找旋转排序数组中的最小值 三 有序数组的平方 xff08 双指针法 xff
  • QT通过UDP分包传输大图像(测试可传6M)

    参考博客 UDP传数据每帧数据最大传64k xff0c 而图片文件一般远大于64K xff0c 此时就需要将图像数据分包传输 xff0c 接收端也分包接收 xff0c 直到整个图片数据都收到 xff0c 再进行其他处理 发送端 发送数据 v
  • github代码如何定位到历史版本(历史commit点)

    关于使用git在本地进行版本管理见linux下的版本管理 工作项目中git流程实操见git简明实操模板 想我们在写代码时候 xff0c 数次修改并提交commit xff0c 如果在这个过程中我们后悔了 xff0c 想回到当初的某一个com
  • Intel RealSense学习之图像及图像深度数据获取

    本文将介绍如何获取到彩色图像的深度信息 大家都知道我们可以从realsense 摄像头中获取到RGB数据 xff0c 红外数据 xff0c 以及图像的深度数据 至于图像的深度数据我的理解是realsense摄像投抓到的图像的相关距离信息 x
  • ROS机器人编程实践——读书笔记1

    目的 xff1a 写一个最小基于ROS的机器人控制软件 一 写一个运动命令流 xff0c 每秒10次 xff0c 每三秒启动一次 在移动时 xff0c 发送前进命令 xff0c 速度0 5米每秒 xff0c 停止时发送速度0米每秒 命名为
  • SLAM后端:因子图优化

    xff08 一 xff09 贝叶斯网络 贝叶斯网络是种概率图 xff0c 由随机变量节点和表达随机变量条件独立性的边组成 xff0c 形成一个有向无环图 在 SLAM 中 由于我们有运动方程和观测方程 它们恰好表示了状态变量之间的条件概率
  • Ceres用法及Ceres-Sophus在位姿图优化问题的应用

    xff08 一 xff09 Ceres Solver的一般用法 简述 xff1a Ceres Solver is an open source C 43 43 library for modeling and solving large c
  • 基于深度卷积神经网络的语义地图构建

    xff08 一 xff09 相关研究及特点 语义分割 语义信息 xff1a 物体类别 目标检测 语义分割等 语义分割即对图像中每个像素分配类别标签 目前最主流的是深度学习方法 xff0c 代表性的方法是全卷积神经网络 xff08 fully
  • 语义信息用于闭环检测

    xff08 一 xff09 SLAM闭环检测方法 传统特征点方法 xff1a 利用SIFT 等视觉特征进行对比闭环检测 受环境影响较大 xff0c 往往会产生假阳性检测 xff0c 且计算量大 效率低 在实际应用上存在较大的阻碍 深层特征方
  • 盘点|2021年最受欢迎Linux桌面操作系统前十名

    简介 xff1a 根据各操作系统镜像站后台下载量 xff0c 阿里云镜像站统计了2021年最受欢迎的Linux桌面操作系统 xff0c 仅根据调用量排名 xff0c 供大家参考 排位最高的还是Centos xff0c 受中国Linux用户欢
  • VSLAM框架对比

    xff08 一 xff09 单目VSLAM特点介绍 xff1a 1 ORB SLAM2 工作流程 xff1a 主要模块 xff1a 前端 xff1a ORB特征提取匹配 xff0c 估计相机位姿 xff1b 根据跟踪地图点数的减少选择关键帧