ORB-SLAM2源码详解c++

所需积分/C币:41 2018-01-10 15:49:36 758KB PDF
202
收藏 收藏
举报

ORB-SLAM2源码详解尽管可以用于立体视觉,ORB-SLAM2主要是单目SLAM系统,也就是只有一个相机(摄像头)的系统,主要用于特征识别,自主导航。ORB-SLAM2的硬件传感器也就是这一种,当然也可以加入其它传感器,比如IMU,激光雷达,超声波等。它应用于机器人,无人驾驶,无人机,增强现实AR,这样的产品中。基本来说,ORB-SLAM2还是属于计算机视觉的一个类别。 然而,由相机拍出的照片进行分析用于导航,并不简单,单纯对于以单目RGB相机为传感器的系统来说,需要从平面图像中恢复3D场景,同时既然用于导航地图的构建又比不可少,最后还要评估前述工作的一系列结果。这并不是单一程序或算法能够完成的工作,SLAM更像是一系列软件系统的集成,中间涉及到各种方法和步骤。
System入口 GrabImageStero(imRectLeft, imRectRight) 输入图像 GrablmagerGBl)( imRectLeft, imRectRight GrabImageMonocular(im Stero: mImGray, imGrayright 转为灰度图 RGBD: mImGray, inDepth Mono: mImGray Stero: Frame(mImGray, imGrayRight, mpOrBextractorLeft mporBextractorRight) 构造 Frame RGBD: Frame(mImGray imDepth, mpORBextractorLeft) Mono(未初始化): Frame( mImgray, mp IniorBextractor) Mono(已初始化): Frame( tIgray, mpORBextractorLeft) Track 数据流进入 Tracking线程 注: miNi0 EXtractor相比 mpORBextractorLeft提取的特征点多一倍 32016/8/30 Tracking线程: rame SteroInivialization( 初始化 MonocularInitialization o TrackWithMotion Model( 位姿跟踪 mbOnly tracking(false) TrackReferenceKey O 相机位姿跟踪 Relocalization o mbOnly tracking(true):同时跟踪与定位,不插入关键帧,局部地图不工作 UpdatelocalkeyFrameso UpdaleLocalMap o Updatelocalpoints 局部地图跟踪 Searchlocalpoints():获得局部地图与当前帧的匹配 PoseOptimization C:最小化投影误差优化位姿 是否生成关键「很长时问没有插入关键顿、局部地图空闲、跟踪快要跪 跟踪地图 Mappoint的比例比较少 Key Frame(mCurrentFrame, mpMap, mpKey Frame DB) 生成关键帧 对于双目或RGB摄像头构造一些 Appoints,为 Mappoint添加属性 注: ebOny' racking默认为 false,用户可通过运行界面选择仅跟踪定位模式 42016/8/30 Localmapping线程 mINewKeyframes 检查队列 CheckNewKeyFrames( 更新 Mappoint与 Keyframe的关联 处理新关键帧| ProcessNewkey frame o UpdateConnections o 剔除地图中新添加的但质量不好的 Mappoint: 别除 AppOints a. IncreaseFound/ IncreaseVisible< 25% b观测到该点的关键帧太少 生成 Mappoint运动过程中和共视程度比较高的关键帧通过三角化恢复出一些 mappoint Mappoint融合检查当前关键帧与相邻帧(两级相邻)重复的 Mappoint Local ba 和当前关键帧相连的关键帧及 Mappoint做局部BA优化 关键帧剔除共90%以上的omt能被其它共视关键帧(至少3个)观测到的关键帧 62016/8/30 Localclosing线程(闭环检测) (pKF, minscore) 找出与当前帧有公共单词的关键帧 mlploopkey frameQueue 但不包括与当前帧相许的关键帧 队列中取一帧 1、三个阈值都是计算获得,鲁邦性好 IKFsharingwords mpcurrentKF minscore mincommons minscoretoretain 统计候选帧中与pKF具有共同单词最 判断距离上一次闭环检2、通过分组可以将单独得分很高 多的单词数 Ⅲ Xcommmionwor'ds 测是否超过10帧 的无匹配关键帧剔除 分组示意图 得到阈值 计算当前帧与相连关键 4 mincommons=0. 8*maxcommonwor ds axcommonword 恢的Bow最低得分 如图:1、2、3、4、10都是闭环候选帧。 mincommons npcurrentKF 节点1:与2、3相连,1与2、3分为一组 minscore minscore 节点2:与1、3相连,2与1、3分为一组 节点3:与1、2、4相连,3与1、2、4分为一组 筛选共有单词大于 mi commons且BoW 检测得到闭环候选帧 节点4:与3相连,4与3分为一组 得分大于 minscore的关键帧 vpLoop Candidates节点10:10自己单独一组 IscoreAndmauch 检测候选帧连续性 将存在相连的分为一组,计算组最高 连续性检测示意图 得分 bestAcc score,同时得到每组中 得分最高的关键帧 oO3, for(*sit, spcandidatekFs Result I sAceScoreAndmatch O<→ D.。● bestAccScore OO 1 for (i, vpcandidatcKF s)mvpEnoughConsistentcandidates 得到阈值 minScoretoretain 0.75米 bestAcc Score I sAceScoreAndMatch OCO0X0-0COOKO O%O OXo minscoretoretain Loop candidates Spreviousgroup vcurrentconslstenturoup 2, for(iG, mv ConsistentGroup) 62016/8/30 Localclosing线程(Sim3计算) mpCurrentKF for(pKF, mvpEnoughConsistentCandidates) SearchBy Bow oMapPointmatche 处构造Sim3求解器,对匹酝 成功的关键帧进行Sim3求解 mpCurrentKF, pKF >(R,t,s) vpMapPointMatches SearchBy Sim3得到更多匹配 (mpCurrentKF, pKF vpMappointmatches Opt im3 vpMapPointMatches -->mvpCurrentMatchedPoints KF->MatchedKF 将 Matched共视帧取出 pLoop ConnectedKFs ↓(包括 Matched 将 Matched共视帧取出 mvploopMappoints mpCurrentKF gscm ->mg ->mscw SearchBy Projection得到更 多匹配点 mvp CurrentMatchedPoints 7 Localclosing线程(Sim3计算) 三对匹配3D,分别对左右三个3D点建立坐标系: X轴 fi=x/xlll 其 2-7,1(1) Y轴:=y/y‖其中:y=(r23-n1)-[(r23-n1)·x1x(2) Z,3 Z轴:2=元×y(3) r,2 r,1 7L,1 l,2 右坐标系同理,且令:M1=|y2Mr=|x算分|(4 飞 x▲ 如果左边坐标系有一个向量72,那么:Mn可以得到n向量沿着坐标轴的值 左乘M可以变换到右坐标系,故可推导出旋转: r=MMin -+R=MMI (5) 计算平移量 质 ∑n=n∑n(5) 优化函数 ∑|-=2-1)+6P() L=1 1 i=1 1 厚点移到质心:=m一行6=一()=2782=262-8R)+ L=1 L=1 ∑h=02 ∑-sR(1)n与化量了无关 i=1 r;=SR(.a)-70 T+sR(7)(7) mn∑|e→6=0→t=70=7-sR()() i=0 Localclosing线程(Sim3计算) 计算尺度 由于7=0 ∑|P-=2>-sRG)n2(0) 2=2 Ir, i l2-2s)r/ iR(ri D+s 2>R(ii)ll =1 n n 12-2、2>不RG)+3∑P i=1 令 el‖2=Sr-2sD+s2S=(s√S-D/√S)+(SS1-D2)/S1(1) 如果公式10变为:已i SR (r4R(T1)/>a2(12) 则公式11变为 2 根据对称性:r=sR()+rn1=SR(r)+7 S-2D+sS,=√sS S)+2(S2S,-D) s s=1/s ro RrO R=R (13 可是:S=1/s≠(,rt·Rr4∥ L=1 L=1 L=1 Localclosing线程(Sim3计算) 如果对于大于三组匹配点: ∑hir ZX ZZ L=1 (Sxx+Syy+ sz) Syz zy ZX Cz y ozZy ZZ Sma t y Sax +s 飞Z Zx XZ sma t xy sy t yy ZZ s t s xy-少yx +s XZ yZ + s S t s ZZ 特征值分解N矩阵:N最小特征值对应的特征向量就是待求四元数 四元数转欧拉角:q=C0S(6/2)+nsin(6/2) 10

...展开详情
试读 26P ORB-SLAM2源码详解c++
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
ORB-SLAM2源码详解c++ 41积分/C币 立即下载
1/26
ORB-SLAM2源码详解c++第1页
ORB-SLAM2源码详解c++第2页
ORB-SLAM2源码详解c++第3页
ORB-SLAM2源码详解c++第4页
ORB-SLAM2源码详解c++第5页
ORB-SLAM2源码详解c++第6页

试读结束, 可继续读2页

41积分/C币 立即下载