【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统

2024-08-25 06:08

本文主要是介绍【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章:Inertial-Only Optimization for Visual-Inertial Initialization

作者:Carlos Campos, Jose M.M. Montiel and Juan D. Tard ´ os´

代码:https://github.com/bxh1/VIDO-SLAM.git

编译:点云PCL

本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。内容如有错误欢迎评论留言,未经允许请勿转载!

公众号致力于分享点云处理,SLAM,三维视觉,高精地图相关的文章与技术,欢迎各位加入我们,一起每交流一起进步,有兴趣的可联系微信:920177957。本文来自点云PCL博主的分享,未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

VIDO-SLAM是一种视觉惯性动态物体SLAM系统,能够估计相机姿态,使用单目相机进行视觉惯性SLAM,跟踪动态物体,算法无论是否使用IMU,都可以提供了使用单目相机在Kaist数据集中运行SLAM系统。

历史文章:【开源分享】VDO-SLAM:基于视觉的动态SLAM感知系统

实现了功能包括:

(1)将MonoDepth2、FlowNet和MaskRcnn与可在基于ROS的SLAM系统中实时运行

(2)实现了室外场景中的视觉惯导SLAM

(3)跟踪和估计动态对象的运动


主要内容及贡献

这篇文章在视觉惯导SLAM初始化中的工作的主要贡献有:

(1)考虑IMU噪声的概率模型的情况下,将视觉-惯性初始化问题表述为只考虑惯的最优估计问题。

(2)一次性求解了所有的惯性参数,避免了解耦估计所产生的不一致性,这使得所有的估计都是一致。

(3)不做任何初始速度和姿态的假设,这使得该方法适用于任何初始情况。

(4)不假设IMU偏差为零,且将它们的已知信息编码为被我们的MAP估计所利用的概率先验。

根据不同传感器初始化方法可以分为三个步骤:

仅视觉的最大后验估计:使用BA初始化并运行短时间的单目ORB-SLAM,以获得一个纯视觉MAP估算的 up-to-scale,同时,计算关键帧间的IMU预积分及其协方差。

仅惯导的最大后验估计:仅针对惯性的优化,使IMU轨迹与ORB-SLAM轨迹对齐,找到尺度,关键帧的速度、重力方向和IMU偏差 biases。

视觉-惯导的联合最大后验:将上一步的解作为完整VI-BA的种子,得到联合最优解。

具体细节可查看原文:

https://arxiv.org/pdf/2003.05766.pdf

实验

下表展示了EuRoC数据集中每0.5s进行一次初始化的结果统计:

视觉惯性BA前后,通过不同初始化方法沿EuRoC数据集的所有序列获得的比例因子(估计和真值比例之间的比率)的实验分布,总共启动了2248次初始化。如下图:

与原始ORBSLAM-VI和VINS Mono的比较结果。

代码依赖:

  • ROS

  • PyTorch (Version: 1.4.0)

  • GPU (at least 8GB of memory)

  • OpenCV

  • Pangolin

  • g2o

  • Eigen

相关文章:

Jun Zhang, Mina Henein, Robert Mahony and Viorela Ila. VDO-SLAM: A Visual Dynamic Object-aware SLAM System. Submitted to The International Journal of Robotics Research. IJRR (Under Review).

Carlos Campos, J. M. M. Montiel and Juan D. Tardós, Inertial-Only Optimization for Visual-Inertial Initialization, ICRA 2020.

总结

所提出的初始化方法比大多文献中的方法更精确,计算时间非常短,这证实了最优估计理论能够正确利用传感器噪声的概率模型,获得比求解线性方程组或使用非加权最小二乘法更精确的结果。

资源

三维点云论文及相关应用分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

3D目标检测:MV3D-Net

三维点云分割综述(上)

3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)

win下使用QT添加VTK插件实现点云可视化GUI

JSNet:3D点云的联合实例和语义分割

大场景三维点云的语义分割综述

PCL中outofcore模块---基于核外八叉树的大规模点云的显示

基于局部凹凸性进行目标分割

基于三维卷积神经网络的点云标记

点云的超体素(SuperVoxel)

基于超点图的大规模点云分割

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

SLAM综述之Lidar SLAM

基于鱼眼相机的SLAM方法介绍

如果你对本文感兴趣,请后台发送“知识星球”获取二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享及合作方式:微信“920177957”(需要按要求备注) 联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。

点一下“在看”你会更好看耶

这篇关于【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104754

相关文章

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文