1. 程式人生 > >ORB_SLAM2--迴環檢測執行緒

ORB_SLAM2--迴環檢測執行緒

迴環檢測執行緒主要由檢測迴環、計算Sim3,、閉環融合以及優化Essential Graph四個大的部分所組成。

void LoopClosing::Run()
{
    mbFinished =false;

    while(1)
    {
        // 檢測是否存在新的關鍵幀
        // Loopclosing中的關鍵幀是LocalMapping傳送過來的,LocalMapping是Tracking中發過來的
        // 在LocalMapping中通過InsertKeyFrame將關鍵幀插入閉環檢測佇列mlpLoopKeyFrameQueue
        // 閉環檢測佇列mlpLSearchBySim3oopKeyFrameQueue中的關鍵幀不為空
if(CheckNewKeyFrames()) { //檢測是否產生迴環 if(DetectLoop()) { // Compute similarity transformation [sR|t] // In the stereo/RGBD case s=1 if(ComputeSim3()) { // Perform loop fusion and pose graph optimization
CorrectLoop(); } } } // 檢測是否有復位請求 ResetIfRequested(); if(CheckFinish()) break; usleep(5000);//檢測週期大約5s } SetFinish(); }