這是我們 SLAM 組同事高洪臣寫的文章,感謝分享??????~

  • 論文: SVO: Fast Semi-Direct Monocular Visual Odometry
  • 代碼(注釋版):cggos/svo_cg

SVO 結合了直接法和特徵點法,稱為 半直接單目視覺里程計

初始化

獲取第一關鍵幀和第二關鍵幀的相對位姿,並建立初始地圖,代碼主要在 initialization.cpp 中。

1)處理第一幀FrameHandlerMono::processFirstFrame

  • 第一幀位姿為單位陣 new_frame_->T_f_w_ = SE3(Matrix3d::Identity(), Vector3d::Zero())
  • addFirstFrame
    • detectFeatures: 獲取 Shi-Tomas得分較高 且 均勻分佈 的 FAST 角點,並創建 Features
    • 初始化 px_vec(Coordinates in pixels on pyramid level 0) 和 f_vec(Unit-bearing vector of the feature)
  • 將當前幀設置為關鍵幀,並檢測 5 個對應的關鍵點
  • 添加關鍵幀到地圖 map_.addKeyframe(new_frame_);

2)處理第二幀 FrameHandlerMono::processSecondFrame

  • addSecondFrame
    • 光流跟蹤trackKlt
    • 計算 單應性矩陣(假設局部平面場景),估計相對位姿T_cur_from_ref_
    • 創建初始地圖
  • BA 優化 ba::twoViewBA
  • 添加關鍵幀到地圖 map_.addKeyframe(new_frame_);
  • 添加關鍵幀到深度濾波器 depth_filter_->addKeyframe

更多學習筆記:

小覓智能:乾貨 | 一起快速上手 VINS-Fusion?

zhuanlan.zhihu.com
圖標

點贊??和分享??是對我們的最大鼓勵呀~??????


推薦閱讀:
相關文章