(秋招)闭环检测流程回顾

news2024/10/6 14:30:38

vins中的闭环检测和重定位

回环检测的关键就是如何有效检测出相机曾经经过同一个地方,这样可以避免较大的累积误差,使得当前帧和之前的某一帧迅速建立约束,形成新的较小的累积误差。由于回环检测提供了当前数据与所有历史数据的关联,在跟踪算法丢失后,还可以利用重定位。

在vins中重定位模块主要包含回环检测,回环候选帧之间的特征匹配,紧耦合重定位三个部分。

A.回环检测(只对关键帧)

1、采用DBoW2词袋位置识别方法进行回环检测。经过时间空间一致性检验后,DBoW2返回回环检测候选帧。

2、除了用于单目VIO的角点特征外,还添加了500个角点并使用BRIEF描述子,描述子用作视觉词袋在数据库里进行搜索。这些额外的角点能用来实现更好的回环检测。

3、VINS只保留所有用于特征检索的BRIEF描述子,丢弃原始图像以减小内存。

4、单目VIO可以观测到滚动和俯仰角,VINS并不需要依赖旋转不变性。

这部分回环检测的内容是在进行完回环候选帧匹配之后做的事情。

B.回环候选帧之间的特征匹配

1、检测到回环时,通过BRIEF描述子匹配找到对应关系。但是直接的描述子匹配会导致很多外点。

2、本文提出两步几何剔除法:

1)2D-2D:使用RANSAC进行F矩阵测试,

2)3D-2D:使用RANSAC进行PnP,基于已知的滑动窗特征点的3D位置,和回路闭合候选处图像的2D观测(像素坐标)。

当内点超过一定阈值时,我们将该候选帧视为正确的循环检测并执行重定位。

在vins中角点使用的是harris角点,然后这个地方的创新版本是Shi-To啥啥啥的一个角点,然后这里进行了brief描述子的计算,这个地方就是为了进行回环检测才进行的描述子的相关操作。同时需要注意,在回环的时候,角点的数量是增加的,一般来说光流也就追踪100个左右角点来进行运动估计,这里的话角点的数量是需要注意的。然后这里还进行了一步外点剔除的操作。这里的使用RANSAC进行F矩阵或者pnp就是基于F矩阵或者pnp,然后首先根据它们之一的公式来计算出一个模型,把其他点带到这个模型里面,计算内点和外点的数量来对模型的参数进行调整,通过不断调整模型,使得内点的数量增加,然后模型逐渐稳健,此时便完成了外点剔除的操作。这个思想就是用RANSAC来实现的,也即叫做了使用RANSAC进行F矩阵或者PnP的外点剔除方法。

C.紧耦合重定位

1、重定位过程使单目VIO维持的当前滑动窗口与过去的位姿图对齐。

2、将所有回环帧的位姿作为常量,利用所有IMU测量值、局部视觉测量和从回环中提取特征对应值,共同优化滑动窗口。

重定位就是说当系统遇到异常的时候,然后根据当前帧与历史帧之间的关系来恢复出当前所在的位置,并继续进行建图。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

作者画的流程图,仅供参考

最后做个总结:

回环检测首先找到回环候选帧,然后针对局部地图进行回环匹配,将局部地图中的相关关键帧拉到对应的位置,最后针对全局地图进行闭环误差的传播,也即将误差加权到每个node上面,来调整全局地图的位置。这样就缓解了slam运行过程中产生的累积误差,使得建图和定位能够更加精确。针对不同的视觉slam系统,可能对闭环上面的处理多多少少有些区别,比如vins里面需要继续提取角点,并进行brief描述子匹配,同时还要引入ransac来对外点进行剔除。这都是一些提高闭环鲁棒性的做法,不同的视觉slam系统有不同的做法。(当然这些做法也是有目的性的,有的专门减少计算量,有的专门提升精度,反正各有各的目的,这个需要斟酌~)

 

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

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

相关文章

快速搭建node.js新项目和大事件后台项目

声明:参考https://zhuanlan.zhihu.com/p/464271490?utm_id0 参考:https://brucecai55520.gitee.io/bruceblog/notes/nodejs/ev_api_server.html#_1-4-%E5%88%9D%E5%A7%8B%E5%8C%96%E8%B7%AF%E7%94%B1%E7%9B%B8%E5%85%B3%E7%9A%84%E6%96%87%E4%BB%B6%E5…

Linux文件系统的缓冲区问题

目录 一.什么是缓冲区? 1.1实验案例1: 情况1:运行该程序 情况2:此时我将该程序运行的结果输出重定向到一个文本文件中: 二.为什么要有缓冲区? 于是引出了缓冲区的刷新策略: 三.缓冲区在哪…

【学习笔记】 科目一之计算题篇

【学习笔记】 科目一之计算题篇 三点估算PERT 三点估算期望:(悲观+4*最可能+乐观)/6三点估算标准差:(悲观-乐观)/6正态分布四个数:34.1%,13.65%,2.1%,0.15%决策树 分叉计算注意:成本越小越好投资回报:收益-投入投资回报率(ROI)=收益-投入/投入投资回收期 静态回…

算法--PageRank

概念 PageRank是Google提出的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。是Google创始人拉里佩奇和谢尔盖布林于1997年创造的PageRank实现了将链接价值概念作为排名因素。 GOOGLE PageRank并不是唯一的链接相关的排名算法,而…

如何提升 MySQL 的查询速度?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言优化数据库结构1 使…

QT(一) 安装 QT(二)

第一章 : Qt 安装 下载地址安装 打开 cmd 运行镜像 : qt-unified-windows-x64-4.6.0-online.exe --mirror https://mirrors.aliyun.com/qt Hello 因为是qmake 所以是.proCtrl R 直接运行 第二章 GUI程序设计基础 main文件 *.ui : 有UI设计器自动生成…

【工具】Spring 历史官方文档理解(持续更新)

文章目录 [1] Spring Framework 5.2.24CoreAOP 概念AspectJoin pointAdvicePointcutIntroductionTarget objectAOP proxyWeaving Spring AOPAspectJ官方 demo 学习 Pointcut 表达式官方 demo 学习 Advice 声明官方 demo 学习 Introductions (接口拓展)AO…

0004Java程序设计-SSM+JSP医院挂号系统

摘 要 医院挂号,一直以来就是困扰医院提高服务水平的重要环节,特别是医疗水平高、门诊访问量高的综合型医院,门诊拥挤就成了普遍现象。因此,本文提出了医院挂号系统。预约挂号,是借助信息化的技术,面向全社…

代码随想录二刷 day32 | 贪心之 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

这里写目录标题 122.买卖股票的最佳时机II55. 跳跃游戏45.跳跃游戏II 122.买卖股票的最佳时机II 题目链接 解题思路: 首先要清楚两点: 只有一只股票!当前只有买股票或者卖股票的操作 想获得利润至少要两天为一个交易单元。 代码如下&#x…

【Unity每日一记】时间Time类-做时间管理大师

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

独立开发变现周刊(第92期):创建一个年收入350万美元的小工具,1000万至1500万美元出售...

分享独立开发、产品变现相关内容,每周五发布。 目录 1、Vercel AI: 使用React, Svelte和Vue快速构建 AI 驱动的应用2、Novel:AI自动补全功能的Notion风格所见即所得编辑器3、Notionbase: 通过Notion轻松建立你的AI聊天机器人4、Plasmo: 一款功能强大的浏…

Python入门教程+项目实战-14.1节-程序实战-二分查找算法

目录 14.1.1 理解函数类型 14.1.2 函数的定义 14.1.3 函数的形参,实参,以及调用 14.1.4 函数的返回值 14.1.5 函数的命名规范 14.1.6 知识要点 14.1.7 系统学习python 14.1.1 理解函数类型 在Python中,函数也是一种数据类型。在理解函…

C++——详解类模板与友元函数

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 类模板与友元函数1️⃣非模板友元函数2️⃣约束模板友元函数3️⃣非约束模板友元函数 类模板与友元函数 模板类的友元函数有三类: …

Qt/C++编写手机版本视频播放器和Onvif工具(可云台和录像)

一、前言 用Qtffmpeg写播放器很多人有疑问,为何不用Qt自己的多媒体框架来写,最重要的原因是Qt自带的目前都依赖具体的本地解码器,如果解码器不支持,那就是歇菜的,最多支持个MP4格式,而且在手机上也都是支持…

C国演义 [第七章]

第七章 最长重复子数组题目理解步骤dp含义递推公式初始化为啥dp数组如此奇怪 遍历顺序 代码 最长公共子序列题目理解步骤dp含义递推公式初始化遍历顺序 代码 总结 最长重复子数组 力扣链接 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子…

设计模式之中介者模式笔记

设计模式之中介者模式笔记 说明Mediator(中介者)目录中介者模式示例类图抽象中介者类抽象同事类租房者类房主类具体的中介者角色类测试类 说明 记录下学习设计模式-中介者模式的写法。JDK使用版本为1.8版本。 Mediator(中介者) 意图:用一个中介对象来封装一系列的对象交互。…

剑指 Offer 68 - II. 二叉树的最近公共祖先 / LeetCode 236. 二叉树的最近公共祖先(搜索与回溯)

题目: 链接:剑指 Offer 68 - II. 二叉树的最近公共祖先;LeetCode 236. 二叉树的最近公共祖先 难度:中等 上一题博客:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 / LeetCode 235. 二叉搜索树的最近公共祖先&#xf…

python:并发编程(二十四)

前言 本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇六,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并…

Pandas进阶修炼120题-第二期(Pandas数据处理,21-50题)

文章目录 Pandas进阶修炼120题第二期 Pandas数据处理21.读取本地EXCEL数据22.查看df数据前5行23.将salary列数据转换为最大值与最小值的平均值方法一:正则表达式(分别使用apply(),applymap(),map()来实现)方法二:apply…

wifi芯片原理

一、在系统中的位置 基带(baseband) 基带的作用有三个: 1、队列包的管理 2、调试解调 3、CSMA/CA机制 CSMA/CA的全称是Carrier Sense Multiple Access with Collision Avoidance,即载波侦听多路访问/冲突避免。 各…