VINS代碼結構

文章目錄

1.總體框架

  • ar_demo:AR上層應用
  • benchmark_publisher:發佈數據集中參考值
  • camera_mode:各類相機模型
  • config:硬件、系統配置文件
  • support_files
  • feature_trackers :圖像接收和特徵點提取與跟蹤
  • pose_graph
  • vins_estimator

在ros運行中,只運行三個節點:

feature_trackers: 主要用於圖像特徵點提取跟蹤。
vins_estimator:主要的類爲Estimator

  • 開啓了新的線程名稱爲measurement_process,函數名爲process(),來做前端VI里程計。裏面調用了process_image(),來進行初始化,當solver_flag=INITIAL時,進行初始化。
    滑窗中的(0, 1, …, N)關鍵幀,0是時間最長的關鍵幀,N是最新關鍵幀
    pose_graph:主要的類爲Pose_graph
  • 開啓第0個新的線程,在創建Posegraph類的時候進行初始化時開啓,名稱爲t_optimazation,函數爲optimaza4DoF(),用來全局四自由度的優化。
  • 開啓第一個新的線程名稱爲keyboard_command_process,函數名爲command(),來做鍵盤控制。
  • 開啓第二個新的線程名稱爲measurement_process,函數名爲process(),用來閉環檢測

Pose_graph類
重要的成員:

list<KeyFrame *> keyframelist;  //關鍵幀數據庫
BriefDatabase db;
BriefVocabulary* voc;

進行重定位流程:
(1).在滑窗中取最新的關鍵幀,進行loop_detection()。如果檢測出loop,就向Estimator發送Pose_graph/match_points(裏面包含了閉環前後的變換矩陣),並且關鍵幀裏面的數據結構has_loop會被置爲True,loop_index設置爲與之閉環的舊關鍵幀的序號。
(2).同步的Estimator節點,會接收到閉環幀的特徵點空間位置,將這些約束加入當前的滑窗進行局部的BA優化。
(3).當時此時Pose_graph的關鍵幀數據並沒有記錄這個有閉環的關鍵幀。
(4).當Estimator中滑窗繼續滑動,邊緣掉了一個關鍵幀,而這個關鍵幀的has_loop
,就進行4Dof全局優化。

雅克比矩陣代表了:
誤差函數對於位姿擾動的雅可比矩陣,決定着下一步最優迭代估計時,位姿增量的方向。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章