ORB_SLAM2系统代码流程粗讲解(三)

本文详细解析ORB_SLAM2系统中回环检测线程的工作流程,主要关注在LoopClosing.cc文件的Run()函数。线程首先设置运行标志,然后进入无限循环,检查闭环检测队列,当有关键帧时,计算相似性并执行闭环矫正。同时,线程会检查复位请求和终止信号,确保系统稳定运行。最后,在线程结束时,确认mbFinished标志以终止线程。
摘要由CSDN通过智能技术生成

注:本文讲解的是整个系统的运行过程,不涉及具体代码的讲解。均假设系统运行没有重复构建现象

ORB_SLAM2系统代码流程粗讲解(一)
ORB_SLAM2系统代码流程粗讲解(二)

今天这篇文章,讲一下回环检测线程,具体的函数实现在LoopClosing.cc中,找到 Run () 函数。

1.首先需要将mbFinished 置为false,表示当前线程正在运行并未结束;
2.接着进入主循环,while(1) 表示一直处于运行状态;
3.检查闭环检测队列mlpLoopKeyFrameQueue中有没有关键帧,
(1)如果队列中不存在关键帧,就不需要进行回环检测,
(2)当队列中存在关键帧:

  • 则进行相似性计算,即计算当前关键帧和上一步闭环候选帧的相似性Sim3变换
  • 进行闭环矫正,利用上一步计算出来的相似变换

(3)检查是否有复位请求,复位当前回环检测线程;
(4)查看其他线程是否有终止当前线程的请求,如果有的话就跳出while,否则一直运行;
(5)最后跳出while循环后,如果mbFinished = true,说明需要终止这个线程。
至此整个ORB_SLAM2的三个线程结束
关于线程调度的文章:
ORB_SLAM2线程之间的调度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值