文章目錄
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全局優化。
雅克比矩陣代表了:
誤差函數對於位姿擾動的雅可比矩陣,決定着下一步最優迭代估計時,位姿增量的方向。