loam演算法 LINS演算法分析

2021-10-11 14:45:15 字數 2071 閱讀 6959

lins採用了非常特別的迭代誤差狀態卡爾曼濾波(ieskf)技術,對位姿誤差狀態進行估計和更新。誤差狀態卡爾曼濾波(eskf)已經足夠複雜,lins還用上了迭代卡爾曼濾波(iekf),兩者合起來就是ieskf,恐怕是目前複雜度最高的loam演算法之一了。關於eskf參見**:

quaternion kinematics for the error-state kalman filte​arxiv.org

eskf**詳細介紹了四元數、李群李代數和eskf的相關概念和推導過程,完全可以當做相關方面的教材來仔細研讀和學習,比某高數教材強千百倍。

lins的位姿誤差狀態估計部分與eskf**幾乎完全一致,主要是利用imu的資料實現位姿估計,這裡不再贅述。lins最特別的地方在位姿狀態更新部分,下面重點介紹。

在iskf中,狀態更新可以看成是乙個優化問題,即對位姿狀態先驗

表示第幀資料到第

幀資料的位姿變換。其中包含了位移、速度、旋轉、加速度偏差和角速度偏差。

在給定從第

幀資料到第

幀資料的位姿變換

的前提下,基於觀測模型引入的觀測方程

定義如下:

熟悉loam演算法的話可以馬上看出來,這個觀測方程求殘差的方法與典型的loam演算法(例如loam,lego-loam,以及lio-sam)並無二致,這裡不再贅述。其中:

從到的變換方法如下:

其中 和

是從 分解得來,分別表示位姿變換的旋轉和平移部分。

和 分別表示雷射雷達和imu之間的外參,也就是將點雲從雷達座標系轉換到imu座標系的旋轉和平移,如果令他們分別為

和 ,則有:

在lins的**中

和 實際上也是

和 ,因此下面以公式(4)進行推導,而不是公式(3),簡化推導過程。

在eskf的更新過程中,最重要的步驟就是計算觀測方程

對誤差狀態求導的雅可比

,如下所示:

corner殘差對特徵點求導

corner雅可比的前一部分求解如下:

su***ce殘差對特徵點求導

su***ce雅可比的前一部分求解如下:

特徵點對誤差狀態求導

在求解觀測方程雅可比的過程中,corner和suface共有部分是特徵點對誤差狀態求導。公式(4)兩邊同時對誤差狀態求導:

其中第4步到第5步用到了兩個李代數指數對映乘積的bch公式,詳細參見《視覺slam十四講》第4.3.1節:

其中第8到第9步用到了左乘近似和右乘近似之間的轉換關係,詳細參見《視覺slam十四講》第4.3.1節:

求解後的觀測方程雅可比

從公式(5),(6),(7),(8)得到最終的觀測方程雅可比如下:

有了觀測方程雅可比

就可以按照eskf的一般過程進行狀態更新了,獲得位姿誤差狀態的後驗。在eskf中,誤差狀態的估計值(也就是先驗)為零,其原理是在引入觀測值之前,imu系統的誤差是看不到的,只有在更新過程中引入了觀測值之後,誤差才顯現出來,也就是誤差狀態的後驗。

lins的特別之處在於,將loam的後端優化放在了ieskf的更新過程中實現,也就是用ieskf的迭代更新過程代替了loam的高斯牛頓法:

基於位姿變換

和觀測方程

計算殘差;

計算出觀測方程

的雅可比

;按照eskf的更新過程求得誤差狀態的後驗;

用誤差狀態的後驗去更新位姿變換

;如果誤差狀態的後驗趨近於0則停止迭代,否則回到第1步繼續迭代。

作為程式設計師,對於常規數學公式中符號的上標和下標極其反感,尤其是卡爾曼濾波這種用

和 表示前後狀態的公式。對程式設計師來說從前一狀態到後一狀態的變遷是極其自然的過程,乙個"="號就說明了一切問題,不需要畫蛇添足,平添複雜性。

因此平日裡看數學公式一律先把上標下標刪乾淨了再看,無往不利,但是到了lins這裡就行不通了,也足見lins的複雜性,去掉了上下標就無法區分了。

演算法和演算法分析

一 演算法的基本概述 演算法是為了解決某類問題而規定的乙個有限長的操作序列。乙個演算法必須滿足以下五個重要特性 1 有窮性2 確定性3 可行性 4 有輸入5 有輸出 二 設計演算法的原則 1.正確性 2.可讀性 3 健壯性 4.高效率與低儲存量需求 三 演算法的時間複雜度簡介 語句頻度 語句重複執行...

演算法和演算法分析

演算法是為了解決某類問題而規定的乙個有限長的操作序列。五個特性 1.有窮性2.確定性3.可行性4.輸入5.輸出 1.正確性2.可讀性3.健壯性4.高效性 1.問題規模和語句頻度 不考慮計算機的軟硬體等環境因素,影響演算法時間代價的最主要因素是問題規模。問題規模是演算法求解問題輸入量的多少,是問題大小...

演算法和演算法分析

1.定義 是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作。2.特徵 1 有窮性 乙個演算法必須在執行有窮步之後結束,即演算法中的每個步驟在有限的時間內完成。2 確定性 每條指令必須有確定的含義,無二義性,在任何條件下,演算法都只有一條執行路徑。3 可行性 乙個演...