LSD-SLAM深入學習(3)-代碼解析



前言

     在LSD-SLAM深入學習(2)中我們已經對算法進行分析,此處假設讀者對於ros的基本操作都已經很熟悉,而且已經編寫了一定量的的代碼,我們直接上干貨。此處分析的程序如下

main_live_odometry.cpp,這個可以實時讀取視頻的主函數

image

     個人理解錯誤的地方還請不吝賜教,轉載請標明出處,內容如有改動更新,請看原博:http://www.cnblogs.com/hitcm/

     如有任何問題,feel free to contact me at robotsming@gmail.com


主函數

XInitThreads();用於多線程顯示imshow();

實時數據流參考下面的,利用每一張圖片的可以參考main_on_images.cpp

image

然后划定輸入輸出,把輸入輸出傳遞到一個slam對象中去。

image

monoodometry初始化中開啟了下面的線程,mapping、constraint以及optimization

image

image


tracking線程

要開啟其他線程,完成tracking的任務。Tracking的主要目的是配准兩幅圖,得到位姿變化。

相對位姿可以通過最小化方差歸一化的光學誤差來計算。地圖剛開始會隨機進行深度信息的初始化,然后才能進行跟蹤幀。

image

跟蹤幀的任務如下

image

這個是se3的tracker,執行trackframe的任務……函數比較大,也很重要,主要求解李群下面的問題。

image


map線程

image

具體的doMappingIteration()內容如下

image

Mapping的很多工作都是在下面的updatekeyframe函數中實現的……

image

一個很重要的函數是dolinestereo,就是在極線上進行立體匹配。


constrait線程

image


optimization線程

改變bool變量doFinalOptimization的值是在最后完成的,和其他線程沒關系的……也就是采集不到新的圖時……

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM