在LSD-SLAM深刻學習(2)中咱們已經對算法進行分析,此處假設讀者對於ros的基本操做都已經很熟悉,並且已經編寫了必定量的的代碼,咱們直接上乾貨。此處分析的程序以下html
main_live_odometry.cpp,這個能夠實時讀取視頻的主函數算法
我的理解錯誤的地方還請不吝賜教,轉載請標明出處,內容若有改動更新,請看原博:http://www.cnblogs.com/hitcm/多線程
若有任何問題,feel free to contact me at robotsming@gmail.comapp
XInitThreads();用於多線程顯示imshow();dom
實時數據流參考下面的,利用每一張圖片的能夠參考main_on_images.cpp函數
而後劃定輸入輸出,把輸入輸出傳遞到一個slam對象中去。學習
monoodometry初始化中開啓了下面的線程,mapping、constraint以及optimization線程
要開啓其餘線程,完成tracking的任務。Tracking的主要目的是配準兩幅圖,獲得位姿變化。視頻
相對位姿能夠經過最小化方差歸一化的光學偏差來計算。地圖剛開始會隨機進行深度信息的初始化,而後才能進行跟蹤幀。htm
跟蹤幀的任務以下
這個是se3的tracker,執行trackframe的任務……函數比較大,也很重要,主要求解李羣下面的問題。
具體的doMappingIteration()內容以下
Mapping的不少工做都是在下面的updatekeyframe函數中實現的……
一個很重要的函數是dolinestereo,就是在極線上進行立體匹配。
改變bool變量doFinalOptimization的值是在最後完成的,和其餘線程不要緊的……也就是採集不到新的圖時……