前端視覺里程計能給出乙個短時間內的軌跡和地圖,但不可避免的誤差累積,這個地圖在長時間內是不準確的。要想構建乙個尺度,規模更大的優化問題,以考慮長時間內的最優軌跡和地圖,這時後端優化就出現了。
slam中的運動方程和觀測方程通常是非線性函式,尤其是視覺slam中的相機模型,需要使用相機內參模型及李代數表示位姿,更不太可能是乙個線性系統。我們往往希望把卡爾曼濾波器的結果擴充套件到非線性系統中,稱為擴充套件卡爾曼濾波器(ekf)。通常在某個點附近考慮運動方程及觀測方程的一階泰勒展開,只保留一階項,即線性的部分,然後按照線性系統進行推導。
a.運動方程與觀測方程進行線性化(相當於一階泰勒展開),再進行**步驟,最後根據貝葉斯展開式,推導出xk的後驗概率形式。
b.ekf的侷限性
首先,濾波器方法一定程度上假設了馬爾可夫性,也就是k時刻的狀態只與k-1時刻相關,而與k-1之前的狀態和觀測都無關。如果當前幀確實與很久之前的資料有關(例如回環),那麼濾波器就會很難處理。
其次,ekf濾波器僅在xk-1處做了一次線性化,然後根據這次線性化結果,把後概率給算出來。這預設該點處的線性化近似在後概率處仍然是有效的。而實際上,當我們離工作點較遠時,一階泰勒展開與整個函式區別其實很大。
最後,ekf需要對儲存狀態量的均值和方差,並對它們進行維護和更新。如果把路標也放進狀態,由於視覺slam中路標數量很大,這個儲存量相當可觀,且與狀態量呈平方增長,因此ekf slam普遍認為不適合大型場景。
a.bundle adjustment,是指從視覺重建中提取出最優的3d模型和相機引數(內引數和外引數)。從每乙個特徵點反射出來的幾束光線,在我們把相機姿態和特徵點空間位置做出最優的調整之後,最後收束到相機光心的這個過程。在圖優化框架的視覺slam演算法中,ba起核心作用。
b.投影模型和ba代價函式。
a.ba為主的圖優化,能精確的優化每個相機位姿與特徵點位置。但缺陷卻十分明顯,大量的特徵點的存在嚴重降低計算效率,導致計算量越來越大以至於無法實時化。
b.位姿圖-完全不管路標而只管軌跡,只構建只有軌跡的圖優化,而位姿節點之間的邊由兩個關鍵幀通過特徵匹配之後得到的運動估計來給定初始值。一旦初始估計完成,我們就不再優化哪些路標點的位置,而只關心所有的相機位姿之間的聯絡。省去大量的特徵點優化的計算,只保留了關鍵幀的軌跡,從而構建了所謂的位姿圖(pose graph)。
c.*因子圖。從貝葉斯網路的角度來看,slam可以自然地表達成乙個動態貝葉斯網路。它是一種無向圖,由兩種節點組成:表示優化變數大的變數節點,以及表示因子的因子節點。
用圓圈表示變數節點。與上述貝葉斯網路不同,這裡的變數是slam中待優化的部分,即相機位姿x和路標l。
視覺slam14講 第1234講總結
slam主要完成的兩個問題是 完成slam依賴sensor 機械人本體上的sensor 主流方向,限制少 完整的乙個slam流程圖 slam中的數學描述包括兩個方程 描述剛體在空間中的旋轉有如下幾種方式 可以使用eigen庫進行相互轉換 對於描述剛體的運動我們已經可以使用李群 lie group 來...
視覺slam14講之相機與框架
以下粗略介紹 1.視覺里程計 visual odometry 視覺里程計的任務是估算相鄰影象間相機的運動,以及區域性地圖的樣子。vo通過相鄰幀間的影象估計相機運動,並恢復場景的空間結構。它只計算相鄰時刻的運動,而和之前的資訊沒有關聯。但硬體計算肯定是有誤差的,也就是說把相鄰時刻的運動 串 起來,構成...
slam14講 slam的環境搭建
一.物理機的環境 win10 虛擬機器的版本 vm 14 sudo apt get install cmake cmake gui安裝好之後可檢視版本 cmake version3 pcl的安裝 因為pcl的庫比較複雜,所以先安裝pcl,安裝之前請拍攝快照備份。1 安裝依賴庫 sudo apt ge...