因此,如何实现高效、稳定的长期视觉定位系统便成了本项目尝试解决的问题。 本项目以ORB-SLAM3的双目模式为基础,首先构建ORB特征地图并获得运动轨迹。然后基于目前主流的深度学习特征如SuperPoint、D2-Net等离线构建深度学习特征视觉地图。最后,实现在OBR-SLAM3系统中的定位模式修改,在关键帧中添加深度学习特征约束,实现长...
跟踪模块作为整个系统的入口,其接收从感知传感器捕获的环境数据,如图像数据,IMU,Lidar等,这里将以单目(+imu)场景,且以跟踪+定位(也有只跟踪的模式)的模式为例来进行分析介绍。 一、接收图像并进行处理的函数调用路径(以mono_euroc的example为例)为mono_euroc.cc文件中的SLAM.TrackMonocular(im,tframe)->system.cc...
在VIO的模式下,机体的速度和IMU的bias利用惯导的参差来=进行优化。当跟踪线程跟丢的时候,跟踪线程尝试在所有的Alats中完成当前帧的重定位,如股票重定位成功,跟踪就被拉回来了,否则过一段时间activate就会重新存储为non-active,一个新的active map就会被初始化。 局部建图线程添加关键帧和点到active map中,删除多余...
需要注意的是, 在mbOnlyTracking模式下, 也就是在已有固定地图上进行定位时, 通常认为给定的外部地图是相对精确的, 因此, 定位可以采用帧间相对位姿, 也可以采用重定位,前者用视觉里程计也就是帧间的特征点匹配实现, 后者则基于特征描述子与BoW数据库中的匹配并与潜在关键帧进行位姿估计实现. 视觉里程计方式主要...
//纯定位模式不插入关键帧,因为局部建图线程不工作 if(mbOnlyTracking) return false; // If Local Mapping is freezed by a Loop Closure do not insert keyframes //如果Local Mapping被Loop Closure请求停止了,则不插入关键帧 if(mpLocalMapper->isStopped() || mpLocalMapper->stopRequested()) ...
在VI模式下,机体的速度以及IMU的bias被通过优化惯导残差被估计。当系统追踪丢失后,会触发重定位模式,即当前帧在所有的Altas进行重定位;若重定位成功,当前帧恢复追踪状态;否则,经过一段时间(超过5秒),当前的active map会被存储为non-active map,同时开启新的建图过程。 2.3 Local Mapping thread(局部建图线程) 向...
在单目或者双目的系统中,Atlas代表的是一系列不连续的地图,而且可以把他们应用到所有的建图过程中:场景重识别、相机重定位、闭环检测和精确的地图融合。 这就允许地图是在不同的时间构建的(增量的SLAM系统),纯视觉的Atlas是参考的2019年IROS的一篇文章:ORBSLAM-atlas: a robust andaccuratemulti-map system,本文又...
在跟踪线程方面,两者在第一阶段(参考关键帧跟踪、恒速模型跟踪、重定位跟踪)和第二阶段(局部地图跟踪)的基本流程相似,但ORB-SLAM3在IMU模式下跟踪成功的判断标准更宽松,且在重定位跟踪失败后,会根据时间进入短期跟踪丢失或长期跟踪丢失状态,并采取相应的措施进行恢复。 三、语义信息 ORB-SLAM2:主要依赖于视觉信息进行...
ORBSLAM3跟踪线程的核心功能及工作流程如下:一、核心功能 相机定位:跟踪线程负责对每帧图像进行相机定位,即确定相机在当前环境中的位置和方向。关键帧插入判断:根据一定的条件判断是否需要插入新的关键帧,以便后续构建和维护地图。二、工作流程 初始特征匹配:与前一帧图像进行初始特征匹配,为后续的位姿...
判断当前帧是否为关键帧;实时处理传感器信息并计算当前姿态;最大限度地减少匹配地图特征的(eprojection error)投影误差;在VI模式中,通过加入(bias)残差来估计物体速度以及惯性测量单元偏差.地图跟丢时,跟踪Atlas进行重定位,成功则继续跟踪,在必要的时候切换active map(动地图)失败,短暂延时后将当前地图存储为non-active...