運行官方Demo
以TUM數據集為例,運行Demo的命令:
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
rgbd_tum.cc的源碼:
運行程序rgbd_tum時傳入了一個重要的配置文件TUM1.yaml,其中保存了相機參數和ORB特征提取參數:
![poYBAGM0-jyAI7fXAAELEC16DeQ600.jpg](https://file.elecfans.com/web2/M00/6D/26/poYBAGM0-jyAI7fXAAELEC16DeQ600.jpg)
![poYBAGM0-kaAJXHhAABrtvyeWDY012.jpg](https://file.elecfans.com/web2/M00/6D/26/poYBAGM0-kaAJXHhAABrtvyeWDY012.jpg)
開兩個線程同時計算兩個矩陣,在多核處理器上會加快運算速度 2. 因為系統的隨機性,各步驟的運行順序是不確定的 . Tracking線程不產生關鍵幀時,LocalMapping和LoopClosing線程基本上處于空轉的狀態 . 而Tracking線程產生關鍵幀的頻率和時機不是固定的,因此需要3個線程同時運行,LocalMapping和LoopClosing線程不斷循環查詢Tracking線程是否產生關鍵幀,產生了的話就處理.
![poYBAGM0-siAG2huAAEV_81wYwY762.jpg](https://file.elecfans.com/web2/M00/6D/27/poYBAGM0-siAG2huAAEV_81wYwY762.jpg)
![pYYBAGM0-tCARGafAACXQYjc83I836.jpg](https://file.elecfans.com/web2/M00/6D/BE/pYYBAGM0-tCARGafAACXQYjc83I836.jpg)
一把鎖在某個時刻只有一個線程能夠拿到,如果程序執行到某個需要鎖的位置,但是鎖被別的線程拿著不釋放的話,當前線程就會暫停下來;直到其它線程釋放了這個鎖,當前線程才能拿走鎖并繼續向下執行. 什么時候加鎖和釋放鎖? unique_lock
SLAM主類System System類是ORB-SLAM2系統的主類,先分析其主要的成員函數和成員變量:
構造函數 System(const string &strVocFile, string &strSettingsFile, const eSensor sensor, const bool bUseViewer=true): 構造函數
LocalMapping和LoopClosing線程在System類中有對應的std::thread線程成員變量,為什么Tracking線程沒有對應的std::thread成員變量? 因為Tracking線程就是主線程,而LocalMapping和LoopClosing線程是其子線程,主線程通過持有兩個子線程的指針(mptLocalMapping和mptLoopClosing)控制子線程. (ps: 雖然在編程實現上三大主要線程構成父子關系,但邏輯上我們認為這三者是并發的,不存在誰控制誰的問題).
跟蹤函數
System對象所在的主線程就是跟蹤線程,針對不同的傳感器類型有3個用于跟蹤的函數,其內部實現就是調用成員變量mpTracker的GrabImageMonocular(GrabImageStereo或GrabImageRGBD)方法.
傳感器類型用于跟蹤的成員函數
審核編輯:劉清
-
傳感器
+關注
關注
2553文章
51407瀏覽量
756633 -
SLAM
+關注
關注
23文章
426瀏覽量
31931
原文標題:ORB-SLAM2代碼運行流程
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
代碼里的命名規則:錯誤的和正確的對比
請問用樹莓派運行ORB-SLAM2算法可行嗎?
javascript變量命名規則與規范
![javascript<b class='flag-5'>變量</b><b class='flag-5'>命名</b><b class='flag-5'>規則</b>與規范](https://file1.elecfans.com//web2/M00/A7/05/wKgZomUMQd6AU0_QAAAeNF8Khr4508.png)
編程代碼的書寫規則
簡析獲取單片機代碼運行時間的方法資料下載
![<b class='flag-5'>簡</b><b class='flag-5'>析</b>獲取單片機<b class='flag-5'>代碼</b><b class='flag-5'>運行</b>時間的方法資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ORB SLAM中涉及的一些基礎概念
ORB-SLAM3與ORB-SLAM2相比有哪些優勢呢?
OV2SLAM(高速視覺slam)簡析
工程實踐中VINS與ORB-SLAM的優劣分析
![工程實踐中VINS與<b class='flag-5'>ORB-SLAM</b>的優劣分析](https://file1.elecfans.com/web2/M00/C7/5B/wKgZomYTVBCAeCBcAAA2txCuZjg596.png)
基于多攝像頭的高魯棒性視覺SLAM系統設計
![基于多攝像頭的高魯棒性視覺<b class='flag-5'>SLAM</b>系統設計](https://file1.elecfans.com/web2/M00/D2/F1/wKgaomYjkI2AbuifAABBzhj13D0378.png)
評論