1.ORB-SLAM2源码系列--局部建线程(MapPointCulling和KeyFrameCulling)
2.视觉SLAMORB-SLAM:让人Orz的SLAM
3.ORBSLAM系列|ORB-SLAM论文带读(一)(划重点)
4.基于ORB-SLAM3的多鱼眼摄像头MAVIS开源啦!
5.ORB SLAM2源码解读(二):MapPoint类
6.视觉slam实践之orbslam3
ORB-SLAM2源码系列--局部建线程(MapPointCulling和KeyFrameCulling)
ORB-SLAM2源码系列--局部建图线程详解
MapPointCulling模块负责筛选新加入的地图点,确保地图质量。在ProcessNewKeyFrame函数中,新点被暂存于mlpRecentAddedMapPoints。筛选过程包括:根据相机类型设定不同的driverload源码观测阈值
遍历新点,若点已标记为坏点则直接从队列中移除
若点的观察帧数少于预期值的%,或者观察相机数量少于阈值cnThObs,即使过了两个关键帧也会被删除
只有经过三个关键帧且未被剔除的点,才会被认定为高质量点,仅从队列移除
另一方面,KeyFrameCulling则针对共视图中的关键帧进行冗余检测。步骤如下:提取当前关键帧的共视关键帧,并遍历它们
对于每个共视关键帧,检查其地图点:若至少有3个其他关键帧观测到,被认为是冗余点
对于双目或RGB-D,仅考虑近距离且深度值大于零的地图点
若关键帧%以上的有效地图点被判断为冗余,该关键帧将被标记为冗余并删除
这样的筛选机制确保了地图数据的准确性和效率。视觉SLAMORB-SLAM:让人Orz的SLAM
ORB-SLAM,在视觉SLAM领域享有盛誉,其源码在GitHub上已有4.4K+Star,充分彰显了西班牙小哥的出色贡献。近期深入研究其论文并结合源码,体验了一番酸爽,发现它在SLAM领域确实有着独特的魅力与贡献。
ORB-SLAM的核心框架由三个并发进程组成:跟踪、局部建图和回环检测,系统结构清晰,功能分明。跟踪是主进程,负责定位和跟踪相机运动,通过特征匹配实现定位与优化。c# 斗地主源码局部建图则负责关键帧与地图点的插入、删除及局部优化。回环检测则通过搜索回环关键帧,实现位姿图优化,确保系统鲁棒性。
特征提取是ORB-SLAM的关键之一,它采用ORB特征,兼顾性能与效率。与SURF、SIFT等相比,ORB提取速度快,每张仅需.3ms,适用于实时操作。ORB在FAST角点基础上加入方向信息,使BRIEF描述子旋转不变,同时利用图像金字塔和灰度质心法提取特征,实现尺度不变性。此外,通过网格划分与四叉树结构,ORB-SLAM确保特征点分布均匀,即使特征点不足,也可通过调整FAST阈值增加。
单目初始化是ORB-SLAM的另一大亮点,它通过特征点匹配计算基础矩阵和单应矩阵,自动判断场景类型,无需人工设定模型。共视图与本质图结构则加强了关键帧间的联系,实现高效回环检测。相机重定位策略确保了系统在跟踪失败时能快速恢复,关键帧与地图点的删增策略则优化了系统性能。
ORB-SLAM提供多样化的网狐荣耀+源码+下载Bundle Adjustment方式,包括初始化阶段的全BA、跟踪过程的运动BA及局部建图阶段的局部BA,适应不同场景需求。整个系统庞大复杂,通过总结主要特性,虽有其精髓,但仍需深入研究,以充分理解其工作原理与优化策略。
总之,ORB-SLAM在视觉SLAM领域展现出了其独特魅力与贡献,从其高效的特征提取到灵活的系统框架,再到多样化的优化策略,无不体现其在SLAM技术中的卓越地位。向所有SLAM领域的先驱者致以崇高的敬意。
ORBSLAM系列|ORB-SLAM论文带读(一)(划重点)
本文介绍了一种名为ORB-SLAM的新型单目SLAM系统,该系统在各种环境条件下都能实时运行。ORB-SLAM具有鲁棒性,支持宽基线回环和重定位,并且提供全自动初始化。系统的核心设计是基于相同的特征用于跟踪、建图、重定位和回环,这使得系统高效、简单且可靠。ORB特征因其对视角和光照变化的鲁棒性而被采用,允许在不依赖GPU的情况下实现实时性能。系统在大环境下的实时运行能力归功于共视图的使用,跟踪和建图着重于局部共视区域,与全局地图尺寸无关。实时回环检测通过基于位姿图(本质图)的优化实现,而实时重定位则支持从跟踪失败中恢复位姿,s912+源码输出并增强地图重用性。系统还引入了一种新的基于模型选择的自动且鲁棒的初始化过程,允许创建平面和非平面场景的初始化地图。一种针对地图点和关键帧选择的适者生存策略提高了跟踪的鲁棒性,并且减少了冗余关键帧,增强了长时间运行的能力。
ORB-SLAM在广泛评估中证明了其优越性,特别是在室内和室外环境的主流公开数据集上的评估。与最先进的单目SLAM方法相比,ORB-SLAM实现了前所未有的性能。系统被设计为完整且可靠,提供了一种最高效、精确且易于实施的解决方案。出于造福SLAM社区的目的,源代码已公开,以便其他研究者和开发者能够利用和改进这一系统。演示视频和代码可以在项目网页上找到。
基于ORB-SLAM3的多鱼眼摄像头MAVIS开源啦!
基于ORB-SLAM3的多鱼眼摄像头MAVIS:一个先进的视觉-惯性SLAM框架
MAVIS, 一项由Yifu Wang, Yonhon Ng, Inkyu Sa等人开发的创新工作,提出了一种专门针对多摄像头系统优化的视觉惯性SLAM解决方案,其核心在于SE2(3)自同构的精确IMU预积分公式。这一框架利用了多摄像头系统广阔的视场和精确的IMU测量,提升运动估计的精度和对复杂环境的鲁棒性。 研究中,作者们改进了IMU预积分方法,解决了快速旋转和长时间积分带来的性能下降问题,同时扩展了多摄像头配置的前端跟踪和后端优化模块,以适应更广泛的应用场景。MAVIS在年Hilti SLAM挑战赛视觉-IMU赛道中表现出色,尤其在单次和多次SLAM中获得第一名,其得分是c++安卓源码第二名的1.7倍,验证了方法的有效性。 MAVIS的独特之处在于处理多摄像头系统,特别是前置立体摄像头,它们提供了比单目或侧向摄像头更广的共视区域。然而,增加摄像头带来了计算成本的挑战,因此,精准处理所有摄像头的数据至关重要,以实现高精度、鲁棒性和效率的平衡。 系统的关键组成部分包括IMU内参补偿,通过精确校准减少测量误差;基于SE2(3)的自同构指数函数的IMU预积分,提供了更准确的运动模型;以及多摄像头前端跟踪,通过特征匹配和局部地图优化,提高了在复杂环境下的定位性能。 在Hilti SLAM Challenge 的实验中,MAVIS在低光、无纹理等复杂条件下展示了优异的性能,尤其是在处理多会话挑战时,通过地图融合,生成了全局一致的高精度地图。这一成果证明了MAVIS在多摄像头视觉-惯性SLAM领域的领先地位。ORB SLAM2源码解读(二):MapPoint类
MapPoint是ORB SLAM2中地图中的特征点,其参数包括三维坐标和描述子。MapPoint的核心功能包括维护关键帧之间的共视关系,通过计算描述向量之间的距离在多个关键帧中查找最匹配的特征点,闭环完成修正后修正特征点的位置,以及在非关键帧中生成MapPoint供跟踪功能使用。
MapPoint主要通过构造函数初始化,关键帧相关的构造函数突出地图点与关键帧之间的观测关系,记录参考关键帧和观测到该点的关键帧。普通帧相关的构造函数用于生成非关键帧中的临时MapPoint。
MapPoint通过AddObservation函数增加观测关系,判断关键帧是否已存在关系并记录观测信息。EraseObservation函数删除观测关系,判断关键帧是否已移除,同时检查MapPoint的观测次数,若少于2次则删除该点。
SetBadFlag函数用于删除地图点,并清除所有与该点相关的关联关系。Replace函数替换地图点,用于闭环优化后调整点和关键帧关系。
MapPoint计算最匹配的描述子以更新点的描述符,通过计算描述子间的距离来选择距离中值最近的描述子。更新法向量和深度值以获取点在关键帧中的位置信息,预测尺度则是根据特征点距离和金字塔的ScaleFactor推测其在金字塔中的层级。
综上,MapPoint在ORB SLAM2中负责维护关键帧间的共视关系,管理特征点的观测历史,以及在不同帧中调整特征点的位置,实现地图的构建与维护。
视觉slam实践之orbslam3
一、概述
Orbslam3 是一款面向单目、双目、RGB-D相机的视觉 SLAM 解决方案。它在三维空间中实时构建环境地图,追踪相机运动。
二、依赖安装
2.1 Eigen3 安装(3.1.0以上版本)
确保安装了Eigen3的最新版本,否则可能遇到找不到Eigen/Dense文件的错误。解决办法是确保安装的Eigen3版本符合要求。
2.2 Pangolin 安装
安装Pangolin依赖并完成安装。使用sudo make install命令执行安装。
2.3 OpenCV 安装
安装编译/构建工具,下载源文件,编译并构建OpenCV。在Vscode中配置环境,通过运行example.cpp文件检查OpenCV安装是否成功。
三、Orb-slam3 安装
直接下载安装包,避免使用git clone操作。如遇错误,检查build.sh文件,调试安装过程。特别注意,使用Eigen3版本3.3.1时,安装较为顺利。避免使用3.3.0及以下版本,因其可能缺少eigen3config.cmake文件。
四、测试
下载数据库用于example测试,解压并按照指示操作。将所有文件放置于指定目录下。通过修改路径和运行example下的euroc_examples.sh文件,进行环境地图构建与相机运动追踪的测试。
[ORB-SLAM2] ORB-SLAM中的ORB特征(提取)
ORB-SLAM中的特征构建以其使用统一的ORB(Oriented FAST and Rotated BRIEF)为核心创新点,使得系统构建更为简洁稳定。本文旨在深入探讨ORB特征的提取流程及对ORB特征的优化改良,以提供直观解答。
提取流程概览如下:
第一步:构造金字塔。
金字塔的构建是理解关键点分布的基础,它通过不同尺度的图像层次化表示,以便在多尺度上寻找特征。金字塔的层级数量与特征的分配直接相关,每层图像面积的减小导致特征点数量的减少,分配策略需确保各层特征点的均衡。
第二步:提取FAST角点。
FAST(Features from Accelerated Segment Test)算法基于中心像素与周围像素的灰度对比,高效快速地识别关键点。通过设定阈值,判断像素是否为角点,FAST算法在每个像素点上执行,产生大量角点,再经过非极大值抑制处理以去除冗余点。
第三步:计算角度。
通过灰度质心与圆心的向量角度,ORB特征不仅提取了角点,还计算出了每个角点相对于坐标系的角度,这有助于确保每次描述子计算的方向一致性,实现了角度不变性。
第四步:计算旋转感知的BRIEF描述子。
BRIEF(Binary Robust Independent Elementary Features)描述子是一个二进制描述子,以其高速匹配速度著称。通过选定的点对对块内的像素进行比较,形成描述子序列。Steered BRIEF根据角点方向旋转描述子坐标点对位置,实现了旋转不变性。
最后一步:提升抗噪能力。
ORB在计算描述子时使用周围5×5的patch灰度信息,进行滤波处理,提高了描述子的抗噪性。
ORB-SLAM的改进主要集中在FAST角点提取步骤。该系统通过动态调整阈值、利用四叉树划分图像等方法,提高了特征分布的均匀性,有效避免了特征扎堆现象。此策略有助于提升SLAM精度、闭环识别性能,并确保全图特征量满足需求,避免了丢失追踪问题。
第四篇 ORB-SLAM2:一种单目、立体和 RGB-D 相机的开源 SLAM 系统
本篇介绍了ORB-SLAM2,一个适用于单目、立体和RGB-D相机的开源SLAM系统。
该系统具备地图重用、闭环和重新定位功能,可在各种环境中实现实时工作,包括小型手持室内序列、工业环境中的无人机飞行和城市周边的汽车行驶。
ORB-SLAM2的后端基于具有单目和立体观察的捆绑调整,允许使用公制尺度进行准确的轨迹估计。
系统还包含一个轻量级的定位模式,利用视觉里程计轨迹用于未建图的区域,并匹配允许零漂移定位的地图点。
在个流行的公共序列上的评估显示,ORB-SLAM2的方法达到了最先进的精度,在大多数情况下是最准确的SLAM解决方案。
本文提出了ORB-SLAM2,一个适用于单目、立体和RGB-D相机的开源SLAM系统。
该系统具备地图重用、闭环和重新定位功能,可在各种环境中实现实时工作。
ORB-SLAM2的后端基于具有单目和立体观察的捆绑调整,允许使用公制尺度进行准确的轨迹估计。
系统还包含一个轻量级的定位模式,利用视觉里程计轨迹用于未建图的区域,并匹配允许零漂移定位的地图点。
在个流行的公共序列上的评估显示,ORB-SLAM2的方法达到了最先进的精度,在大多数情况下是最准确的SLAM解决方案。
本文提出了ORB-SLAM2,一个适用于单目、立体和RGB-D相机的开源SLAM系统。
该系统具备地图重用、闭环和重新定位功能,可在各种环境中实现实时工作。
ORB-SLAM2的后端基于具有单目和立体观察的捆绑调整,允许使用公制尺度进行准确的轨迹估计。
系统还包含一个轻量级的定位模式,利用视觉里程计轨迹用于未建图的区域,并匹配允许零漂移定位的地图点。
在个流行的公共序列上的评估显示,ORB-SLAM2的方法达到了最先进的精度,在大多数情况下是最准确的SLAM解决方案。