手寫VIO第六講之前端

2021-10-02 21:46:56 字數 1784 閱讀 2341

1、slam的框架:

2、前端的具體步驟:

3、相機和路標的建模以及初始化

對於相機pose來說,一般以旋轉矩陣r和平移矩陣t來表示

對於路標點landmark來說,可能使用的引數主要有絕對座標xyz,逆深度p,灰度值等

4、關鍵幀的若干問題:

5、slam問題中前端重要還是後端重要:

前端能非常體現乙個slam的追蹤效果;

在實現中,儘管後端存在明顯的理論差異,很難直觀體驗在最終精度上

1、那種slam演算法效果好,可不可以比較???

orb_slam2使用covisibility-graph;dso使用帶邊緣化的滑動視窗;tango使用msckf

實驗效果:orb_slam2具有較好的全域性精度,但無回環時dso具有飄移較少,tango計算量明顯比較小。

2、演算法的結果與資料集關係很大

具體資料集由簡到難:kittikitti:視野開闊,動態物體少、標定準確

euroc:人工設定場景,紋理豐富,**方式有變化

tum-mono:場景多樣,主要為真實場景

實際工程中更多考慮的是計算量和精度的平衡

3、前端的差異導致最終的結果比較明顯

好的前端:追蹤效果好,不容易丟,計算速度快,累計誤差小

4、前端(視覺里程計,vo)的定性比較

直接法的耗時與效果主要依據提取特徵點的數目多少

1、乙個傳統的雙目光流前端

2、特徵點提取

fast/gftt角點提取的方式:

3、光流

光流可以追蹤乙個時刻的角點在下個時刻的影象位置

基於灰度不變假設

光流在slam中的作用:

光流的侷限性:

1、為什麼需要關鍵幀

2、如何選擇關鍵幀

關鍵幀之間不必太近(退化或者三角化問題)

關鍵幀之間不能太遠(共視點太少)

vio中,定期選擇關鍵幀(假設bgba在關鍵幀期間不變)

對於非關鍵幀,只執行前端演算法,不參與後端優化

所以,對於非關鍵幀,誤差會逐漸累積,直到該幀被作為關鍵幀插入後端,ba才會保證視窗內的一致性

3、選取關鍵幀的策略

在計算量允許範圍內,且不引起退化時,應該盡可能多地插入關鍵幀

4、典型slam系統關鍵幀插入策略

單目slam中,在插入關鍵幀時計算路標點的三角化:

理論推導:

第六講 if 語句

格式 單分支if 條件測試命令 then 命令序列 fi 多分支 if then 命令序列 else 命令序列 fi bin bash data new create if f file then echo exist file cat file wc l rm file else touch fi...

第六講感悟

方法是處理業務邏輯的 滿足使用者需求,有開發者設計的具有一定邏輯的 鄙人認為可以把方法看作是數學中的方程式,帶入因變數進行計算,得到所要求得的值 方法應盡可能單 一 簡單 容易理解。因此關於方法的返回值 有return語句的方法有可能還需被呼叫到其他方法中去使用 類似於三元一次方程兩兩相消後再求一次...

第六講 堆疊操作

本節中的例子其結構和例1一樣,僅改變mydisplay和myreshape。例4 利用堆疊繪製三個物體 乙個綠色的茶壺,乙個藍色的茶壺,乙個紅色的立方體 部分 void mydisplay void void myreshape glsizei w,glsizei h 執行後,我們可以看到左邊為乙個...