cv::Mat ray1 = Rwc1*xn1; cv::Mat ray2 = Rwc2*xn2; 求出匹配点射线夹角的余弦值 const float cosParallaxRays = ray1.dot(ray2)/(cv::norm(ray1)*cv::norm(ray2)); 上面的cosParallaxRays的范围是[0, 1], 定义cosParallaxStereo: 为了给这个变量定义一个很大的值, 我们让cosParallaxRays...
局部建图线程会不断地定期对这些新增加的关键帧的位姿和地图点进行多次处理, 最终, 局部的关键帧位姿和局部地图点通过BA进行优化 流程 Step 1: 将LocalMapping线程置为繁忙状态, 拒绝Tracking线程发送新的关键帧 Step 2: 处理列表中的关键帧, 包括计算BoW, 更新观测, 描述子,共视图, 插入到地图等 Step 3: 根...
ORB-SLAM2初步--局部地图构建 一、局部地图构建简介 为什么叫“局部”地图构建,我的理解是这个线程的主要任务是像地图中插入关键帧(包括地图点等信息),以及需要进行LocalBA优化一个局部地图,这是相对于回环检测时进行的全局优化来说的,所以称为局部地图构建。而局部地图构建的主要任务就是上面说的,等待跟踪过程判断是...
ORB-SLAM2源码系列--局部建图线程详解MapPointCulling模块负责筛选新加入的地图点,确保地图质量。在ProcessNewKeyFrame函数中,新点被暂存于mlpRecentAddedMapPoints。筛选过程包括:根据相机类型设定不同的观测阈值遍历新点,若点已标记为坏点则直接从队列中移除若点的观察帧数少于预期值的25%,或者观察相机数...
1、本次直播系统梳理ORB-SLAM2前七章的重难点,包括:特征提取/匹配、图结构、地图初始化、跟踪、局部建图。帮助大家理清代码流程。参考下面大纲图。方便学习后续的章节。 2、统一回答一些常见的知识点疑问。 3、直播间答疑。 直播观看地址: 1、直播可以在「计算机视觉life」小鹅通、哔哩哔哩、视频号同步观看。微信扫描...
ORB-SLAM2初步--局部地图构建 ORB-SLAM2初步--局部地图构建 ⼀、局部地图构建简介 为什么叫“局部”地图构建,我的理解是这个线程的主要任务是像地图中插⼊关键帧(包括地图点等信息),以及需要进⾏LocalBA优化⼀个局部地图,这是相对于回环检测时进⾏的全局优化来说的,所以称为局部地图构建。⽽...
Step 2:提取每个共视关键帧的地图点 constvector<MapPoint*>vpMapPoints=pKF->GetMapPointMatches(); 设置观测次数阈值, 默认为3 intnObs=3;constintthObs=nObs; 定义nRedundantObservations : 记录冗余观测点的数目 定义nMPs: 记录有效的地图点数目 intnRedundantObservations=0;intnMPs=0; ...
局部建图线程中局部BA优化地图点和位姿 优化函数用于LocalMapping线程的局部BA优化 voidOptimizer::LocalBundleAdjustment(KeyFrame*pKF,bool*pbStopFlag,Map*pMap) 概述 Local Bundle Adjustment 1.Vertex: - g2o::VertexSE3Expmap(), LocalKeyFrames, 即当前关键帧的位姿, 与当前关键帧相连的关键帧的位姿 ...