经典文献阅读之--VIP-SLAM(紧耦合RGB-D视觉惯性平面SLAM)

news2024/10/7 10:24:42

0. 简介

现有的视觉SLAM很多的算法让仍然是基于特征提取的方法来完成地图的建立,而RGB-D传感器的算法仍然是主要基于稀疏点的SLAM系统,这就导致在构建稠密点云地图的时候需要保持大量的地图点来建模环境。大量的地图点给我们带来了很高的计算复杂性,使其难以部署在移动设备上。另一方面,平面是人造环境中常见的结构,特别是在室内环境中。我们通常可以使用少量的平面来表示一个大的场景。《VIP-SLAM: An Effificient Tightly-Coupled RGB-D Visual Inertial Planar SLAM》一文就解决了这一问题,通过降低基于稀疏点的SLAM的高复杂性。我们建立了一个由几个平面和地图点组成的轻量级后端建图,以实现具有相同或更好精度的高效捆集调整(BA)。在优化过程中,利用单应性约束消除了多个平面点的参数,降低了BA的复杂性。对单应性约束和点到平面约束中的参数和测量值进行分离,并对测量部分进行压缩,进一步有效地提高BA的速度。我们还将平面信息集成到整个系统中,以实现鲁棒的平面特征提取、数据关联和全局一致的平面重建。

1. 主要贡献

在本文之前,有很多融合IMU的工作表明,IMU有助于提高系统的鲁棒性,而结构化平面有助于提高系统的精度和鲁棒性。此外,与线和点特征相比,平面可以使用更少的参数来模拟环境。基于此,我们充分利用多个传感器的特点,提出了一种高度鲁棒和精确的系统,它集成了IMU,RGB,Depth和Plane信息。本文有三个贡献:

  1. 我们首先提出了一个完整的紧耦合的多传感器融合SLAM系统,以融合RGB、深度、IMU和结构化平面信息。将所有信息集成到一个统一的非线性优化框架中,共同优化关键帧姿态、IMU状态、点和平面的参数;

  2. 我们引入平面信息来减少地图点的数量,加快BA的优化。我们使用单应性去除优化过程中该点的状态,并将多个约束同时压缩为一个约束。这些措施减少了优化时间,图4(a)和图4(b)显示了这个过程;

  3. 平面信息集成到整个SLAM系统中,实现高精度跟踪。我们使用纯几何单帧点到平面约束来提高无纹理场景平面估计的精度和稳定性。此外,我们将平面点的重投影转换为单应性约束,以建立多帧与平面之间的关系,以进一步纠正漂移。

2. 系统概述

图2显示了所提出系统的概述。我们的系统以RGB,深度和IMU为输入,具有三个主要组件,包括前端,平面模块和后端。
前端模块是基于滑动窗口的VIO系统,可实时估计6-DoF姿态。我们的VIO类似于[7],只是我们不考虑SLAM特征并添加额外的深度测量。
平面模块接收前端和后端数据作为输入。高频前端信息仅用于扩展平面。低频但高精度后端信息用于新平面检测,平面扩展,点到平面关联和平面到平面合并。由于室内环境的大多数平面是水平的或垂直的,因此我们只考虑水平和垂直平面的检测。然而,关于平面的融合优化适用于一般平面。
后端模块使用局部束调整(LBA)或全局束调整(GBA)来联合优化平面、点、IMU状态和关键帧姿态,并纠正前端姿态的漂移。
在这里插入图片描述

3. 文章中各种符号标记

我们首先定义本文中使用的符号。我们将 ( ⋅ ) W (·)^W ()W视为世界坐标系。 ( ⋅ ) C (·)^C ()C是相机坐标系, ( ⋅ ) I (·)^I ()I是IMU坐标系。我们用 T ∈ S E ( 3 ) T∈SE(3) TSE(3)表示姿态,其由旋转 R ∈ S O ( 3 ) R∈SO(3) RSO(3)和平移 t ∈ R 3 t∈R^3 tR3组成。我们使用 π = [ n ; d ] T π=[n;d]^T π=[n;d]T表示平面,其中 n n n是平面法线, d d d是原点与平面之间的距离。我们采用CP[28]向量来参数化平面 π π π,即 η = n d η=nd η=nd X X X是需要估计的状态,包括姿态,速度,IMU偏差,点和平面地标。

4. 前端

当收到新图像时,我们检测ORB特征[1]点并计算相应的描述符。首先,我们使用KLT将它们从上一幅图像跟踪到当前图像。然后,我们将具有3D信息的特征投影到当前图像上,并使用汉明距离来找到最近的ORB特征点。其余的特征通过使用KLT跟踪的结果作为初始值来找到最佳观察来匹配。最后,我们使用基于RANSAC的基本矩阵来去除异常值。
运动估计是基于滑动窗口的VIO,它紧密地集成了RGB,深度和IMU。我们的VIO类似于[7],它使用平方根逆滤波器来融合所有测量值。主要区别在于我们不考虑SLAM特征,并在视觉测量中添加深度信息。

5. 平面识别与关联

5.1 平面检测和合并

平面检测 平面模块只能使用后端数据检测平面。检测到平面后,平面模块使用前端和后端数据扩展平面并将平面与地图地标相关联。类似于[17],我们使用Delaunay三角剖分来创建3D网格和直方图来检测平面。我们只检测垂直和水平平面,通过检查网格法向量是否垂直或平行于重力。我们的平面模块采用一些额外的方法来提高平面精度。当从直方图中检测到平面时,我们将使用数据和直方图中的3D平面点来细化其参数,而不是直接使用直方图的比例值。对于水平平面,我们只需设置 n = [ 0 , 0 , 1 ] T n = [0,0,1]^T n=[0,0,1]T并将平面距离设为平面点的z轴的平均值。对于垂直平面,我们设置 n = [ n x , n y , 0 ] T n = [n_x,n_y,0]^T n=[nx,ny,0]T,并使用以下方程细化垂直平面参数:
在这里插入图片描述
其中, n n n是平面点的数量, P f k W P^W_{f_k} PfkW 是世界坐标系下第 k k k个地标的位置, P ˉ f k W = [ P f k W ( 0 ) , P f k W ( 1 ) ] T \bar{P}^W_{f_k} =[P^W_{f_k}(0),P^W_{f_k}(1)]^T PˉfkW=[PfkW(0),PfkW(1)]T。我们使用QR分解来解决方程(1)。当检测到平面参数时,平面可以通过角度和距离与3D网格相关联。我们的角度和距离阈值约为10度和5厘米。图3显示了这个过程。
在这里插入图片描述

图3.平面检测:(a)2D网格。(b)3D网格,其中红色和蓝色区域分别表示水平网格和垂直网格。©垂直平面为黄色,水平平面为灰色。

5.2 点与平面关联

我们使用3D网格将更多的地图点与平面相关联。 一旦深度图中的3D网格与一个平面相关联,我们就会找到它的2D网格。如果地图点的2D坐标在2D网格内并且地图点与平面的距离小于10厘米,则将地图点添加到与平面相关联的候选集合中。如果候选集合上的点在3个关键帧以上被观察到,我们将检查其几何一致性。我们计算点的重投影误差,强制将点与平面相关联,然后计算另一个重投影误差。如果两个重投影误差相似,并且最大重投影误差低于某个阈值,则认为该点是平面点。如果一个点多次未能通过几何一致性检查,则将其从候选点集合中删除。
在这里插入图片描述

图4.我们的优化问题。(a)和(b)是压缩单应性约束前后的因子图。©是我们的全局BA问题。

6. 后端优化

6.1 测量值

IMU和点特征测量:连续两个关键帧之间的IMU数据使用预积分方法处理[8],[9]。我们定义了基于预积分的IMU数据的代价项,与[9]相同。由于深度图有效,我们将深度信息集成到视觉点特征测量中。

…详情请参照古月居

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

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

相关文章

Python 进阶(二):Python使用ORM框架peewee操作MySQL数据库

Python使用ORM框架peewee操作数据库 前言1. 安装Peewee库并初始化数据库2. 创建数据库连接3. 定义数据表模型类4. 连接数据库并创建表5. 操作数据库5.1 插入数据5.2 查询数据5.3 更新数据5.4 删除数据 6. 聚合查询 前言 本文基于MySQL8.x版本的学习,python版本基于…

美客多、Newegg卖家如何提高店铺销量?测评自养号的重要性

作为美客多和Newegg平台上的卖家,提高店铺销量是卖家取得商业成功的关键。珑哥今天来说一些有效的策略,帮助卖家增加销售额并提升店铺的知名度和竞争力。 优化产品页面: 优秀的产品页面可以吸引更多买家并促进销售。确保产品标题准确、吸引人…

经典文献阅读之--NICE-SLAM(SLAM的神经隐含可扩展编码)

0. 简介 对于深度学习而言,NeRF一定是最近两年最火的工作之一了,**NeRF(Neural Radiance Fields)**是最早在2020年ECCV会议上的Best Paper,其将隐式表达推上了一个新的高度,仅用 2D 的 posed images 作为监…

stm32配置基本定时功能

Clock Source参数说明 内部时钟源是由STM32F103芯片内部的RC振荡器提供的。它的频率为8MHz,可以通过PLL倍频器进行倍频,最高可达到72MHz。 Internal clock Division No Division:不分频,即系统时钟直接作为时钟信号。Divided by 2…

ModaHub AI模型社区:向量数据库CPU 版 Milvus和GPU 版 Milvus 版本比较

目录 CPU 版 Milvus 版本比较 概述 CPU 版 Milvus 支持的索引类型 浮点型向量 二值型向量 GPU 版 Milvus 版本比较 概述 GPU 版 Milvus 支持的索引类型 浮点型向量 二值型向量 CPU 版 Milvus 版本比较 概述 Milvus 提供两个发行版本:CPU 版本和 GPU 版本…

学生成绩管理系统(Python+数据库)

文章目录 前言MySQL部分1. 导入信息2. 演示说明 Python程序设计部分1. 连接数据库2. 登录界面3. 注册界面4. 主界面5. 查询信息6. 修改密码7. 成绩分析7.1 通过学号查询成绩7.2 通过课程号查询成绩 7. 主函数 尾声 前言 用Python和数据库一起实现了一个简单的学生成绩管理系统…

GPDB-内核特性-UDP流量控制

GPDB-内核特性-UDP流量控制 GPDB是在开源PostgreSQL基础上,采用MPP架构的关系型分布式数据库,具有强大的大规模数据分析任务处理能力。采用Shared-Nothing架构,整个集群由多个数据节点(segment)和控制节点(…

Python爬虫 从小白到高手 各种最新案例! Urllib Xpath

Urllib 1.什么是互联网爬虫? 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据 解释1:通过一个程序,根据Url(http…

实训五:数据库安全控制 - 创建用户

创建用户 第1关:创建用户任务描述相关知识增加用户修改用户名修改用户密码删除用户 编程要求测试说明参考代码 第2关:创建用户-练习任务描述相关知识编程要求测试说明参考代码 第1关:创建用户 任务描述 本关任务:创建用户 user1…

你不知道的HTML属性,让你的网页更加响应式

前言 当我们谈论 HTML 时,通常会想到一些常见的属性,如 class、id、href 等等。但是,HTML 还有许多你可能从未听说过的属性,这些属性可以让你的网页更加丰富多彩。在本文中,我将介绍一些你可能不知道的 HTML 属性&…

SPI通信协议SPI通信外设

目录 SPI 介绍 硬件电路 移位示意图 软件SPI SPI时序基本单元 SPI时序​编辑 W25Q64 硬件电路 W25Q64框图 Flash操作注意事项 指令集 硬件SPI SPI框图 主模式全双工连续传输 非连续传输 SPI 介绍 硬件电路 推挽输出,高低电平都有很强的驱动能力&…

基于Python数据分析的详细讲解+实战(含代码)

名字:阿玥的小东东 学习:Python、C/C 主页链接:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 载入数据集 数据预处理 探索性数据分析 发现相关性 开发模型 模型部署 Python数据分析代码实…

Vue基础(一)

前言: Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。 …

【Vue2.0源码学习】内置组件篇-keep-alive

文章目录 1. 前言2 用法回顾3. 实现原理propscreateddestroyedmountedrender 4. 生命周期钩子5. 总结 1. 前言 <keep-alive> 是 Vue 实现的一个内置组件&#xff0c;也就是说 Vue 源码不仅实现了一套组件化的机制&#xff0c;也实现了一些内置组件&#xff0c;关于<k…

区块链系统探索之路:比特币核心的编译和探索

前几节我们研究了椭圆曲线&#xff0c;有限域等比特币和区块链所依赖的底层算法。问题在于这些算法不是独立存在&#xff0c;而是作为模块嵌入到整个区块链的体系之中。因此不了解区块链的体系组成或应用场景&#xff0c;那么我们就很难理解这些算法衍生出来的概念或者基于他们…

【硬件1】platform/i2c总线

文章目录 1.platform总线&#xff1a;相对于USB/PCI/I2C/SPI等物理总线来说&#xff0c;platform总线是一种虚拟的总线&#xff0c;实际并不存在&#xff0c;总线的工作就是就是完成总线下的设备和驱动之间的匹配。也就是在左手中找到与右手相匹配的设备驱动&#xff0c;并完成…

基于Java+Springboot的智能图书馆座位管理系统设计和实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

MySQL实战解析底层---为什么只查一行的语句,也执行这么慢

目录 前言 第一类&#xff1a;查询长时间不返回 第二类&#xff1a;查询慢 前言 一般情况下&#xff0c;如果说查询性能优化&#xff0c;首先会想到一些复杂的语句&#xff0c;想到查询需要返回大量的数据但有些情况下&#xff0c;“查一行”&#xff0c;也会执行得特别慢这…

第11讲:BootService 核心实现解析,Agent 的“地基”原来是这样的

之前介绍了 ServiceManager 加载并初始化 BootService 实现的核心逻辑。下图展示了 BootService 接口的所有实现类&#xff0c;本课时将深入分析这些 BootService 实现类的具体逻辑&#xff1a; 网络连接管理 在前面的介绍中提到 SkyWalking Agent 会定期将收集到的 JVM 监控和…

基于Java+Swing实现雷电小游戏

基于JavaSwing实现雷电小游戏 一、系统介绍二、功能展示三、其他系统四、获取源码 一、系统介绍 基于java的雷电游戏基本功能包括&#xff1a;敌方飞机随机飞行、我方飞机手动控制飞行&#xff0c;射击比拼&#xff0c;游戏闯关等。本系统结构如下&#xff1a; &#xff08;1&…