視覺slam14講之後端優化

     前端視覺里程計能給出一個短時間內的軌跡和地圖,但不可避免的誤差累積,這個地圖在長時間內是不準確的。要想構建一個尺度,規模更大的優化問題,以考慮長時間內的最優軌跡和地圖,這時後端優化就出現了。

1.濾波器模型

     a. 馬爾可夫性,當前狀態只和上一個時刻有關。 P(Xk| Xk-1,X0, U1:k,Z1:k-1) = P(Xk| Xk-1, Uk)。把K-1時刻的狀態分佈推導至k時刻,也就是說,在程序運行期間,我們只要維護一個狀態量,對它不斷地進行迭代和更新即可。
     b. 線性高斯系統,運動方程可以由線性方程來描述。
這裏寫圖片描述
     利用馬爾可夫性,假設我們知道了k-1時刻的後驗狀態估計及協方差,現在根據k時刻的輸入和觀測數據,確定Xk的後驗分佈。
     c. 卡爾曼濾波。其第一步是通過運動方程確定Xk的先驗分佈。這一步稱爲預測,它顯示瞭如何從上一個時刻的狀態,根據輸入信息(但有噪音)推斷當前時刻的狀態分佈,這個分佈叫做先驗。(後驗在b中說過了,可以對比一下)。在線性高斯系統中,卡爾曼濾波器構成了該系統的最大後驗概率估計,而且由於高斯分佈經過線性變換後仍服從高斯分佈,所以整個過程中我們沒有進行任何的近似。卡爾曼濾波器構成了線性系統最大無偏估計。

2.非線性系統和EKF

     slam中的運動方程和觀測方程通常是非線性函數,尤其是視覺slam中的相機模型,需要使用相機內參模型及李代數表示位姿,更不太可能是一個線性系統。我們往往希望把卡爾曼濾波器的結果擴展到非線性系統中,稱爲擴展卡爾曼濾波器(EKF)。通常在某個點附近考慮運動方程及觀測方程的一階泰勒展開,只保留一階項,即線性的部分,然後按照線性系統進行推導。
     a. 運動方程與觀測方程進行線性化(相當於一階泰勒展開),再進行預測步驟,最後根據貝葉斯展開式,推導出Xk的後驗概率形式。
      b. EKF的侷限性
         首先,濾波器方法一定程度上假設了馬爾可夫性,也就是k時刻的狀態只與k-1時刻相關,而與k-1之前的狀態和觀測都無關。如果當前幀確實與很久之前的數據有關(例如迴環),那麼濾波器就會很難處理。
         其次,EKF濾波器僅在Xk-1處做了一次線性化,然後根據這次線性化結果,把後概率給算出來。這默認該點處的線性化近似在後概率處仍然是有效的。而實際上,當我們離工作點較遠時,一階泰勒展開與整個函數區別其實很大。
         最後,EKF需要對存儲狀態量的均值和方差,並對它們進行維護和更新。如果把路標也放進狀態,由於視覺slam中路標數量很大,這個存儲量相當可觀,且與狀態量呈平方增長,因此EKF SLAM普遍認爲不適合大型場景。

3. BA與圖優化

     a. Bundle Adjustment,是指從視覺重建中提取出最優的3D模型和相機參數(內參數和外參數)。從每一個特徵點反射出來的幾束光線,在我們把相機姿態和特徵點空間位置做出最優的調整之後,最後收束到相機光心的這個過程。在圖優化框架的視覺slam算法中,BA起核心作用。
     b. 投影模型和BA代價函數。

4.後端優化之位姿圖與因子圖

     a. BA爲主的圖優化,能精確的優化每個相機位姿與特徵點位置。但缺陷卻十分明顯,大量的特徵點的存在嚴重降低計算效率,導致計算量越來越大以至於無法實時化。
     b. 位姿圖-完全不管路標而只管軌跡,只構建只有軌跡的圖優化,而位姿節點之間的邊由兩個關鍵幀通過特徵匹配之後得到的運動估計來給定初始值。一旦初始估計完成,我們就不再優化哪些路標點的位置,而只關心所有的相機位姿之間的聯繫。省去大量的特徵點優化的計算,只保留了關鍵幀的軌跡,從而構建了所謂的位姿圖(Pose Graph)。
      c. *因子圖。從貝葉斯網絡的角度來看,SLAM可以自然地表達成一個動態貝葉斯網路。它是一種無向圖,由兩種節點組成:表示優化變量大的變量節點,以及表示因子的因子節點。這裏寫圖片描述
用圓圈表示變量節點。與上述貝葉斯網絡不同,這裏的變量是SLAM中待優化的部分,即相機位姿x和路標L。

發佈了63 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章