【视觉惯性SLAM:十一、ORB-SLAM2:跟踪线程】

news2025/1/1 22:09:48

跟踪线程是ORB-SLAM2的核心之一,其主要任务是实时跟踪相机的位姿变化和场景的变化,以维持地图的更新和相机轨迹的估计。ORB-SLAM2的跟踪线程通过多种方式(参考关键帧跟踪、恒速模型跟踪、重定位跟踪、局部地图跟踪)处理跟踪丢失、场景动态变化等问题,确保系统的鲁棒性和实时性。
以下从各个跟踪策略详细介绍ORB-SLAM2的跟踪线程工作原理。

跟踪线程流程

在这里插入图片描述

参考关键帧跟踪

背景及原理

  • 参考关键帧:
    • 当前帧通过与上一帧的特征点匹配可以获得初步的位姿估计。
    • 为进一步优化跟踪精度,需要与局部地图中最相关的关键帧进行匹配(即参考关键帧),通过参考关键帧的地图点与当前帧特征点的匹配来优化当前帧的位姿
  • 作用:
    • 通过与参考关键帧的匹配,获得更多约束,避免累积误差对跟踪精度的影响。
    • 参考关键帧提供地图点,当前帧通过投影这些地图点到图像平面来寻找匹配。

实现步骤

  • 从局部关键帧中选择一个最近或最优的关键帧作为参考关键帧。
  • 从参考关键帧中提取地图点(3D点),并将其投影到当前帧的图像中。
  • 根据投影位置在图像金字塔中搜索匹配点(利用ORB特征的描述子匹配)。
  • 使用匹配点对,通过优化方法(例如PnP)进一步优化当前帧的位姿。

恒速模型跟踪

背景及原理

  • 恒速模型假设相机在连续两帧之间以恒定速度运动。
  • 在刚体运动的约束下,如果上一帧的位姿已知,则可以推测当前帧的初始位姿。
  • 通过此预测,可以缩小搜索范围,提高匹配效率和跟踪精度。

实现步骤

  • 利用上一帧的位姿和速度预测当前帧位姿:
    根据上一帧的位姿 T t − 1 T_{t-1} Tt1和速度𝑉,预测当前帧的位姿 T t = T t − 1 ⋅ V T_{t}=T_{t-1}\cdot V Tt=Tt1V
  • 临时地图点的创建:
    • 基于恒速模型,预测上一帧中的地图点在当前帧图像中的位置,生成临时地图点用于匹配。
    • 这些地图点可通过三角化与当前帧进行验证和更新。
  • 优化位姿:
    使用匹配的特征点对,利用最小二乘方法优化预测的位姿,确保跟踪的精确性。

重定位跟踪

背景及原理

  • 场景丢失或跟踪失败的情况:
    • 当相机出现快速运动、剧烈旋转或动态遮挡时,跟踪可能丢失。
    • 此时,重定位机制能够恢复跟踪状态。
  • 原理:
    • 基于倒排索引的词袋模型,将当前帧的特征描述子与地图中已有关键帧的描述子进行快速匹配,从中找到候选关键帧。
    • 利用这些候选关键帧恢复当前帧的位姿。

实现步骤

  • 倒排索引:
    • 词袋模型提前对所有关键帧进行特征向量的编码(离线训练的字典)。
    • 当前帧通过ORB特征的描述子生成词袋向量,并快速匹配候选关键帧。
  • 搜索重定位候选关键帧:
    • 在数据库中,找到与当前帧最相似的关键帧作为重定位候选。
  • 利用EPnP算法估计位姿:
    • 对候选关键帧进行投影匹配,找到共视特征点对。
    • 使用EPnP(Efficient Perspective-n-Point)算法计算当前帧的初始位姿。
  • 位姿优化:
    • 将初始位姿作为输入,通过BA优化,恢复跟踪。

局部地图跟踪

背景及原理

  • 局部地图跟踪是通过局部优化提升跟踪精度的过程。
  • 在局部地图跟踪中,ORB-SLAM2会利用与当前帧最近的局部关键帧及其相关的地图点进行跟踪。
  • 局部地图由当前帧的共视关键帧和这些关键帧的观测地图点组成。

实现步骤

  • 构建局部地图:
    • 获取当前帧的共视关键帧集合(共视图关系提供)。
    • 从共视关键帧中提取地图点,构建局部地图。
  • 投影匹配:
    • 将局部地图点投影到当前帧的图像平面,预测其金字塔层级。
    • 在投影位置附近搜索匹配点,获取更多的特征点匹配对。
  • 优化当前帧位姿:
    • 使用匹配点对,通过光束法平差(BA)优化当前帧的位姿。

ORB-SLAM2中的跟踪策略特点

  • 多层次跟踪:
    • 针对不同的场景(跟踪正常、丢失、重定位),采用不同的策略,保证系统鲁棒性。
  • 实时性:
    • 跟踪线程与局部建图、回环检测线程分离,并采用高效的投影匹配和优化算法,保证实时性。
  • 鲁棒性:
    • 通过恒速模型预测、局部地图跟踪和重定位机制,ORB-SLAM2能够应对遮挡、快速运动等挑战。

总结

跟踪方式关键作用方法概要
参考关键帧跟踪提供额外约束,提升跟踪精度利用局部关键帧提供地图点进行投影匹配
恒速模型跟踪提供初始位姿预测,缩小搜索范围根据上一帧位姿和速度预测当前帧位姿
参考关键帧跟踪恢复跟踪,防止因丢失而中断通过词袋模型快速匹配候选关键帧并估计位姿
局部地图跟踪提高局部跟踪精度,增加约束构建局部地图,进行投影匹配和优化当前帧位姿

以上是ORB-SLAM2中跟踪线程的详细介绍。通过多种策略,ORB-SLAM2确保了跟踪的精度、实时性和鲁棒性,是其高性能的关键之一。

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

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

相关文章

浙江肿瘤医院病理库存储及NAS共享存储(磁盘阵列)方案-Infortrend普安科技

Infortrend金牌代理-燊通智联信息科技发展(上海)有限公司与院方多轮沟通,详细讨论性能与容量要求,最终决定采用GSe统一存储设备,与现有病理系统服务器无缝对接,每台设备配1.92T SSD作缓存加速原数据读写&am…

解决GPT公式复制到Word之后乱码问题

chat辅助确实很有用。不论是出文稿还是代码。如何把chatgpt中的公式直接复制到word中且保持原样格式呢?下面的方法经过我的验证确实好用,成功解决了最近的论文报告写公式的问题。 一、首先复制chatgpt里面的公式 二、粘贴在下面网站 网站:Mat…

Spring Boot教程之四十:使用 Jasypt 加密 Spring Boot 项目中的密码

如何使用 Jasypt 加密 Spring Boot 项目中的密码 在本文中,我们将学习如何加密 Spring Boot 应用程序配置文件(如 application.properties 或 application.yml)中的数据。在这些文件中,我们可以加密用户名、密码等。 您经常会遇到…

Quartz任务调度框架实现任务动态执行

说明:之前使用Quartz,都是写好Job,指定一个时间点,到点执行。最近有个需求,需要根据前端用户设置的时间点去执行,也就是说任务执行的时间点是动态变化的。本文介绍如何用Quartz任务调度框架实现任务动态执行…

Scala_【1】概述

第一章 语言特点环境搭建(Windows)idea编写scalaHelloWorld注意事项 Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言 语言特点 Scala是一门多范式的编程语言,Scala支持面向对象和函…

StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成

文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)提取人脸(这个也可以先不看)进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…

最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解LRMOP1-LRMOP6及工程应用---盘式制动器设计,提供完整MATLAB代码

一、麋鹿优化算法 麋鹿优化算法(Elephant Herding Optimization,EHO)是2024年提出的一种启发式优化算法,该算法的灵感来源于麋鹿群的繁殖过程,包括发情期和产犊期。在发情期,麋鹿群根据公麋鹿之间的争斗分…

螺杆支撑座在运用中会出现哪些问题?

螺杆支撑座是一种用于支撑滚珠螺杆的零件,通常用于机床、数控机床、自动化生产线等高精度机械设备中。在运用中可能会出现多种问题,这些问题源于多个方面,以下是对可能出现的问题简单了解下: 1、安装不当:安装过程中没…

Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)

前言 Unity3d的UGUI系统与Web前端开发中常见的数据绑定和属性绑定机制有所不同。UGUI是一个相对简单和基础的UI系统,并不内置像Web前端(例如 Vue.js或React中)那样的双向数据绑定或自动更新UI的机制。UGUI是一种比较传统的 UI 系统&#xff…

从0入门自主空中机器人-2-2【无人机硬件选型-PX4篇】

1. 常用资料以及官方网站 无人机飞控PX4用户使用手册(无人机基本设置、地面站使用教程、软硬件搭建等):https://docs.px4.io/main/en/ PX4固件开源地址:https://github.com/PX4/PX4-Autopilot 飞控硬件、数传模块、GPS、分电板等…

Windows上缺少xaudio2_9.dll是什么原因?

一、文件丢失问题:Windows上缺少xaudio2_9.dll是什么原因? xaudio2_9.dll是DirectX音频处理库的一个组件,它支持游戏中的音频处理功能。当你在Windows系统上运行某些游戏或音频软件时,如果系统提示缺少xaudio2_9.dll文件&#xf…

冥想的实践

这是我某一天的正念和冥想实践,我对正念练习、冥想练习进行了分别的统计。 正念练习:1分钟**5次 冥想:15分钟10分钟 正念练习,基本在工作休息时间练习。当然,工作过程中,也有一部分时间会有正念的状态&am…

一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类

机器学习实战通常是将理论与实践结合,通过实际的项目或案例,帮助你理解并应用各种机器学习算法。下面是一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的…

Redis 实战篇 ——《黑马点评》(上)

《引言》 在进行了前面关于 Redis 基础篇及其客户端的学习之后,开始着手进行实战篇的学习。因内容很多,所以将会分为【 上 中 下 】三篇记录学习的内容与在学习的过程中解决问题的方法。Redis 实战篇的内容我写的很详细,为了能写的更好也付出…

Intent--组件通信

组件通信1 获取子活动的返回值 创建Activity时实现自动注册!【Activity必须要注册才能使用】 默认 LinearLayout 布局,注意 xml 中约束布局的使用; 若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可,记得 设置线性布局…

word参考文献第二行缩进对齐

刚添加完参考文献的格式是这样: ”段落“—>缩进修改、取消孤行控制 就可以变成

UE(虚幻)学习(一) UE5.3.2和VS2022的安装以及遇到的问题和一些CS8604、CA2017报错问题.

最近工作很多东西是UE搞的,工作安排上也稍微缓口气,来学学UE,因为同事都用的UE5.3,所以就从UE5.3开始吧,之前学习过UE4,放上两年什么都不记得了。还是需要做一些记录。 本来安装不想写什么,谁知…

【YOLOv3】源码(train.py)

概述 主要模块分析 参数解析与初始化 功能:解析命令行参数,设置训练配置项目经理制定详细的施工计划和资源分配日志记录与监控 功能:初始化日志记录器,配置监控系统项目经理使用监控和记录工具,实时跟踪施工进度和质量…

systemverilog语法:assertion summary

topics assertion 介绍 Property在验证中的应用 ended表示sequence执行结束。 property 立即断言不消耗时间,好像if…else…,关键字不含property. 并发断言消耗时间,关键字含property. 立即断言 并发断言

blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质

描述:在blender中合并的模型导出为glb,在threejs中导入仍显示多个mesh,并不是统一的整体,导致需要整体高亮或者使用DragControls等不能统一控制。 原因:模型有多个材质,在blender中合并的时候,…