ORB-SLAM中除了第三方庫,基本沒有看到使用c++11的新特性(例如別的SLAM框架中常用的智能指針,拷貝控制,泛型算法等,基本沒有使用動態內存,棧內存讀取速度較快),因此非常適合初學,代碼很清晰。靜下心來一個月之內是肯定可以看完的,目前的想法是在看完ORB之后,對其中的典型算法再做一個總結~慢慢來
System.cc 系統入口文件
讀取詞典文件,攝像頭信息,以及View線程是否現實
System(const string &strVocFile, const string &strSettingsFile, const eSensor sensor, const bool bUseViewer = true);
Tracking線程:
分為三種攝像頭(雙目,RGBD以及單目)
均需要設置是否只使用定位模式
雙目入口:
雙目獲取的兩幀圖片必須時間對其並已經完成矯正;
無論是RGB (CV_8UC3) 還是灰度圖(CV_8U)均會轉換成灰度圖,拋棄顏色信息。
該函數中主要完成特征點提取與匹配
cv::Mat TrackStereo(const cv::Mat &imLeft, const cv::Mat &imRight, const double ×tamp);
返回相機位姿,若返回的Mat結構為空,表示跟蹤失敗
return mpTracker->GrabImageStereo(imLeft,imRight,timestamp);