1.概述

VIO(Visual-Inertial Odometry视觉惯性里程计)即结合相机与惯性测量单元IMU实现局部状态如位置、姿态、速度、路标点的最优状态估计。完整的SLAM系统还包括闭环检测(位置识别和相对状态求解)、全局地图构建(位姿图或者全局BA)等,理论上说这些模块可以在不同的VIO算法中进行复用。VIO为整个SLAM系统提供持续的局部状态,是整个SLAM系统能够保持实时、稳定运行的基础。

2.算法分类

把是否将数据放在一起进行联合优化可将VIO算法分类成松耦合和紧耦合,业界已证明紧耦合VIO从精度和鲁棒性上要好于松耦合,本文只对紧耦合VIO算法进行相关分析。

3.开源SOTA算法介绍

3.1 OpenVINS [1]

(1)介绍

基于特征点+EKF。通过多状态约束卡尔曼滤波(MSCKF),利用特征点在多个相机状态之 间构建几何约束,构建观测模型对状态进行更新。

(2)特点

FEJ实现、零空间投影Nullspace Projection、观测压缩Measurement Compression、多种路标点的表示形式等。

(3)开源地址

https://github.com/rpng/open_vins

3.2 ORBSLAM3 [2]

(1)介绍

基于特征点法+最小二乘(G2O库)。通过提取 ORB 特征,维护特征地图,构建局部 BA 和全局 BA,利用最小二乘进行最优估计。

(2)特点

共视图、多地图数据关联、最大后验估计包含初始化阶段等。

(3)开源地址

GitHub - UZ-SLAMLab/ORB_SLAM3: ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

3.3 Basalt [3][4]

(1)介绍

基于特征点法+最小二乘(L-M法,未使用第三方优化库)。设计了一种两级 SLAM 系统, vi-odometry 环节和 vi-mapping 环 节,并且在 vi-odometry 环节以边缘化的形式保存帧间运动信息, 在 vi-mapping 环节恢复这些信息并且应用到基于特征点的全局 BA 中。

(2)特点

FEJ实现、基于QR的边缘化方法并行计算、不依赖第三方优化库等。

(3)开源地址

Vladyslav Usenko / basalt · GitLab

3.4 Kimera [5]

(1)介绍

基于特征点法+贝叶斯网络(GTSAM库)。实现了基于关键帧的的最大后验视觉惯性估计器。

(2)特点

后端优化基于贝叶斯网络实现、框架完整,实现了包含语义SLAM等应用。

(3)开源地址

GitHub - MIT-SPARK/Kimera-VIO: Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.

3.5 DM-VIO [6]

(1)介绍

基于稀疏直接法+最小二乘(GTSAM库)。利用延迟边缘化和位姿图BA实现单目视觉惯性里程计。

(2)特点

稀疏直接法、延迟边缘化策略、利用位姿图BA的IMU初始化

(3)开源地址

GitHub - lukasvst/dm-vio: Source code for the paper DM-VIO: Delayed Marginalization Visual-Inertial Odometry

4.比较

4.1分析

参考相关论文中的实验以及自测数据,从精度和效率上进行比较(仅比较VIO)。

注:来自OpenVINS论文,VIO的结果(EuRoC dataset)

注:来自ORB-SLAM3论文,SLAM即带Loop的结果(EuRoC dataset)

注:来自DM-VIO论文,VIO的结果(EuRoC dataset)

注:来自DM-VIO论文,VIO的结果(4Seasons dataset)

4.2结论

从精度来看,ORBSLAM3和DM-VIO在大部分数据集上最优,其次是Basalt和OpenVINS;从效率来看,OpenVINS大部分情况最优,其次是Basalt,再之DM-VIO和ORBSLAM3(只考虑VIO情况)。

注:效率为作者自测结果,ORBSLAM3测试效率仅为VIO的结果。

4.3说明

(1) OpenVINS非最新版本,测试的版本为静态初始化,在一些数据集上会失败,其精度的评估不够充分,但由于采用滤波的方法,效率确实可以达到最优。

(2)Basalt的效率明显高于其他非滤波的方法,原因是采用了基于QR分解的边缘化策略,利用该方法可以实现比较好的并行计算。其精度稍低的一个原因是初始化采用了静态初始化的方法,如果采用动态初始化的方法,理论上精度可以更高。

(3)DM-VIO精度和效率都不错,该方法为稀疏直接法,对光照比较敏感,从测试的数据集上来看,整体效果不错。

(4)ORBSLAM3由于带有闭环和全局BA模块,整体精度最优,且其VIO模块精度次优,但由于有ORB特征提取和Altas地图维护,整体效率偏低。

注:高斯噪声下的最小均方误差MMSE(卡尔曼滤波)与最大后验估计MAP(最小二乘与贝叶斯网络)可认为等价,不同的是卡尔曼滤波无法像最小二乘等可多次线性化(观测一阶线性化),故两者可达到的精度理论相近,卡尔曼滤波会差一些。

参考文献:

[1] Geneva P, Eckenhoff K, Lee W, et al. Openvins: A research platform for visual-inertial estimation[C]//2020 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2020: 4666-4672.

[2] Campos C, Elvira R, Rodríguez J J G, et al. Orb-slam3: An accurate open-source library for visual, visual–inertial, and multimap slam[J]. IEEE Transactions on Robotics, 2021, 37(6): 1874-1890.

[3] Usenko V, Demmel N, Schubert D, et al. Visual-inertial mapping with non-linear factor recovery[J]. IEEE Robotics and Automation Letters, 2019, 5(2): 422-429.

[4] Demmel N, Sommer C, Cremers D, et al. Square root bundle adjustment for large-scale reconstruction[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 11723-11732.

[5] Rosinol A, Abate M, Chang Y, et al. Kimera: an open-source library for real-time metric-semantic localization and mapping[C]//2020 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2020: 1689-1696.

[6] von Stumberg L, Cremers D. DM-VIO: Delayed Marginalization Visual-Inertial Odometry[J]. IEEE Robotics and Automation Letters, 2022, 7(2): 1408-1415.

VIO主流SOTA算法介绍相关推荐

  1. 深度强化学习主流算法介绍(二):DPG系列

    之前的文章可以看这里 深度强化学习主流算法介绍(一):DQN系列 相关论文在这里 开始介绍DPG之前,先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值,使用时选择Q值 ...

  2. 安全系列之——主流 Hash 散列算法介绍和使用

    这里填写标题 1. 安全系列之--主流 Hash 散列算法介绍和使用 1.1. Hash 散列算法介绍 1.2. Hash 散列算法的特征 1.3. 散列算法的使用 1.3.1. 文件传输 1.3.2 ...

  3. 安全系列之——主流Hash散列算法介绍和使用

    其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...

  4. GitHub Trending第一之后,PaddleOCR再发大招:百度自研顶会SOTA算法正式开源!

    要说生活里最常见.最便民的AI应用技术,OCR(Optical Character Recognition,光学字符识别)当属其中之一.寻常到日常办理各种业务时的身份证识别,前沿到自动驾驶车辆的路牌识 ...

  5. 因果AI诊断模型登上nature:模拟专业医师思维,诊断罕见疾病,超越SOTA算法

    来源:AI科技评论 本文约2000字,建议阅读5分钟. 因果AI系统打破了传统的根据症状诊断疾病的诊断方式,通过使用"反事实问题"缩小患者可能出现状况的范围. 如何才能提高人工智能 ...

  6. 分布式块存储QoS限速算法介绍与实践以及对上层应用的影响

    分布式块存储QoS限速算法以及对上层应用的影响 QoS限速算法介绍 令牌桶 Token Bucket 漏桶 Leaky Bucket Leaky bucket as a meter Leaky buc ...

  7. 推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF/TDM/Airbnb Embedding/Item2vec等)、召回路径简介、多路召回融合]

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  8. 活动报名 | 北京交通大学魏云超:连续学习下像素理解的相关算法介绍

    活动议程 日期:11月24日(周四) 时间 主题 14:30-14:35 开场简介 穆亚东  北京大学研究员.长聘副教授.博士生导师.北大博雅青年学者,青源会会员 14:35-15:20 连续学习下像 ...

  9. 拐点检测常用算法介绍

    前言 最近在学习拐点检测的相关问题, 发现 C.Truong 的论文 对拐点检测的整个流程和目前主流的一些算法介绍的比较清楚,所以在这里进行了一些记录以及总结,并且对 Truong 发布的 ruptu ...

最新文章

  1. g-git 相关命令 及其 基本原理探索(二):git 在工作中的常用命令操作 ,超级实用!!!
  2. 爬虫之 xpath的节点关系
  3. nsis使用汇总(一)
  4. 接入Tinker热修复和踩坑
  5. Thinkphp 打印最近执行的一条SQL语句
  6. Python超详细的字符串用法大全
  7. 龙芯完成.NET移植稳步推进生态建设
  8. 做可交互的统计图表,这套图形语法不容错过
  9. C#读取文本文件和C# 写文本文件
  10. 浏览器中js的变量取名
  11. QT中如果出现: warning: 'nullptr' is incompatible with C++98等类似警告
  12. Layout Management
  13. 工作中沟通和执行力的重要性-开发、项目经理、需求之间的矛盾冲突
  14. 使用Arduino实现一个简易倒车雷达
  15. nginx-proxy-manager在线申请证书
  16. 信息系统项目管理师考点之上午理论知识点总结
  17. 腾讯与阿里巴巴投资可编程芯片公司Barefoot Networks
  18. 计算机win7如何加快开机速度,win7快速开机到八秒,怎么加快win7开机速度
  19. excel空白处自动填充内容怎么操作,excel空白处填充0或上行方法
  20. Rocket.Chat接收消息流程

热门文章

  1. asp 和 html 婚鞋,中国式婚鞋的讲究
  2. ANSYS静力学分析实例入门一
  3. 树莓派python编程入门先学什么_树莓派Python编程入门与实战
  4. unity动态读取外部音乐并播放
  5. Android移植speex部分问题解决
  6. js tree设置层级关系
  7. react + antd 实现一个音乐播放器
  8. Ubuntu云服务器搭建FTP环境
  9. Apache Yarn重启,历史任务可以永久保留的几个参数
  10. 某X建工OA系统上传附件插件丢失的问题解决方案