在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LINS算法的框架與代碼分析

3D視覺工坊 ? 來源:ICRA 2020 ? 作者:ICRA 2020 ? 2022-10-09 14:57 ? 次閱讀

作者:Chao Qin1 Haoyang Ye Christian E. Pranata, Jun Han, Shuyang Zhang, and Ming Liu

來源:ICRA 2020

摘要

LINS是以濾波為主的IMU、激光雷達緊耦合的激光SLAM算法。該算法的主要創新點就是用以 IESKF(即迭代誤差卡爾曼)為框架,融合 IMU 與激光雷達。該算法于發表于 2020 年 ICRA, 由于網上已經有些同學對算法做了介紹,一些基礎的知識本文不再贅述,本文將詳細圍繞以下兩個問題介紹,希望對讀者理解算法有所幫助: 1、LINS 是如何將激光觀測融入濾波框架的? 2、濾波框架與優化框架有何不同?

算法框架

為了講述通暢還是先介紹下 LINS 算法的主要框架,算法流程圖如下:

38aeaae8-4335-11ed-96c9-dac502259ad0.png

結合代碼不難發現,算法的特征提取、以及 Mapping 部分都是直接沿用了 Lego-Loam 算法的,不再贅述。算法的核心創新點為前端激光里程計部分,對應代碼的 lins_fusion_node 節點。

39014780-4335-11ed-96c9-dac502259ad0.png

理論與代碼分析

(一)LINS 是如何將激光觀測引入濾波框架的?1、從代碼中可以看出,LINS只是前端里程計部分采用了濾波框架(即 scan-to-scan 估計幀間位姿),而后端 scan-to-map部分仍然采用優化方式求解(即用 LM 方法求解位姿)。2、將點線/點面距離殘差作為觀測方程引入到代價函數中。根據論文公式 12,可以看到代價函數分為兩個部分,前面是最小化誤差狀態(即最小化后驗與后先驗狀態之差),后面的復合函數 f(x)表示點線/面距離,即最小化點線/面距離。也就是說把點線/面距離殘差作為觀測方程,有了觀測方程,然后帶入卡爾曼濾波相關公式即可求解。不過,作為一個創新點,作者采用了 IESKF,即迭代誤差卡爾曼作為濾波框架。

394c56b2-4335-11ed-96c9-dac502259ad0.png

IESKF 與 ESKF 最大的區別就是,在做狀態更新時是采用迭代求解的方式計算的,類似高斯牛頓等優化方法求解時需要多次迭代直到收斂。通過迭代的求解的方式,與 ESKF 相比可以得到更精確的解。對應論文公式 16。

396339a4-4335-11ed-96c9-dac502259ad0.png

3、LINS 代碼實現。LINS 中濾波相關的核心部分在 include/StateEstimator.hpp 中的 performIESKF()函數中實現。

3986d54e-4335-11ed-96c9-dac502259ad0.png

代碼中基本是按照論文中的公式 12-18 實現的,比較好讀懂。代碼中的 findCorrespondingSurfFeatures(), findCorrespondingCornerFeatures() 函數即為 costfunction 中的點面/線距離殘差計算函數,基本沿用了loam的實現方式,其中jacobianCoffSurfs, jacobianCoffCorns 變量為點面/線距離殘差關于點的雅可比矩陣,該過程在之前推送的文章《泡泡點云時空 LOAM 專題-3】LOAM 代價函數設計與雅可比求解詳細推導(上)》有詳細的推導,感興趣的可以去看下。

39b20566-4335-11ed-96c9-dac502259ad0.png

代碼中,Hk_為點面/線距離殘差關于誤差狀態的雅可比矩陣,作者是用 BCH 近似求解的,其實含義上與 LOAM 算法在 Odometry,Mapping 部分最終求解得到的是一樣的,都是點面/線距離關于誤差狀態的雅可比矩陣,只不過求解方式表達形式不同,LOAM 中姿態是用歐拉角表示的,LINS 是四元數。

3a028798-4335-11ed-96c9-dac502259ad0.png

performIESKF()函數的剩余部分就是論文中公式 15-18 的實現,比較易懂就不贅述了。 (二)濾波與優化有何不同 其實,討論濾波框架與優化框架的不同是一個相對比較大的問題,為了更具體一些,我們僅就 LINS 算法使用的 IESKF 做的濾波的 LIO 前端與 LIO-SAM 等以高斯牛頓或LM優化為框架的 LIO 前端做對比(當然嚴格意義上來說,LIO-SAM 的前端其實只有預積分,省略了激光里程計,使用 scan-to-map 匹配校正 imu 零偏,但是不影響我們的分析過程)。 1、框架差異。從框架上說,LINS 使用的 IESKF 是將所有的狀態一起放到濾波框架里估計,而以 LIO-SAM 為代表的算法前端,是預積分+scan-to-map 算法,其中 scan-to-map 模塊使用 LM方法計算幀圖位姿,得到計算出的位姿后,輸入預積分模塊校正imu 零偏。也就是說 imu 零偏的估計與激光匹配位姿計算是分開的,而 LINS 使用了 IESKF 將二者當作狀態一起估計。 2、理論差異。其實在 1993 年的論文[2]中就已經證明了 IKF 的更新方程與 Gauss-Newton 理論上是等價的。詳細的推導過程可以參考論文,為了方便理解,我們在這里做一個簡化的推導。 參照 LINS 論文中公式 15-17

3a390796-4335-11ed-96c9-dac502259ad0.png

當我們使用 Gauss-Newton 求解待估狀態時,通常用到的公式是:

3a941424-4335-11ed-96c9-dac502259ad0.png

其實從方程的形式上,怎么看這個方程也與 LINS 中的公式 16 差別挺大。下面我們嘗試盡量直白的解釋下 Gauss-Newton 與 IESKF 更新方程的等價性。 對于一些剛接觸SLAM的同學來說,可能有一個疑問是Gauss-Newton 求解時很少用到協方差矩陣,但是卡爾曼的更新方程中的卡爾曼增益是需要計算協方差矩陣的,如何理解? 其實 Gauss-Newton 只是一個公式,當我們設計誤差函數時帶有協方差矩陣,那么 Gauss-Newton 求解過程中就會有協方差矩陣的計算,實際上論文[2]中也正是通過這種方式證明的等價性。由于我們實際在用 Gauss-Newton 求解時基本不考慮協方差矩陣(指點云匹配求解位姿時),為了更好的理解,我們假設噪聲相關的矩陣都為單位矩陣,那么 LINS 論文中的公式 15 變為:

3aa78b26-4335-11ed-96c9-dac502259ad0.png

那么公式 16 變為

3ac59b3e-4335-11ed-96c9-dac502259ad0.png

到這一步可以看到跟 Gauss-Newton 的方程不一致。這個時候要借助一個重要的公式實現轉換,即 matrix inversion lemma,即矩陣求逆引理,即如果 A,C 為非奇異矩陣,那么有

3add292a-4335-11ed-96c9-dac502259ad0.png

那么公式 16 可以變為:

3af0b9ea-4335-11ed-96c9-dac502259ad0.png

到這里,其實我們看這個形式跟優化的方法已經很像了,但是跟標準的高斯牛頓求解方程還是不一致。現在我們定義如下觀測方程:

3b0c8080-4335-11ed-96c9-dac502259ad0.png

則其對應的雅可比矩陣為,

3b231e6c-4335-11ed-96c9-dac502259ad0.png

因此,

3b3c0166-4335-11ed-96c9-dac502259ad0.png

可以看到此時方程出現了我們熟悉的高斯牛頓的公式。因為濾波的框架里面其實是同時考慮狀態方程與觀測方程,因此使用最小二乘的框架構建的時候需要構建成如上形式。 個人的觀點是,如果單從最終的公式來看,使用高斯牛頓求解兩幀點云的相對位姿,與 LINS 中使用 IESKF 求解結果并不完全相等,因為求解出來的狀態更新方程并不是完全一樣,但是從理論上說,IESKF 的更新方程可以統一到最小二乘的框架里,因此效果上二者應該是近似的。

算法效果

38774fe4-4335-11ed-96c9-dac502259ad0.png

3b7b9150-4335-11ed-96c9-dac502259ad0.png

根據論文提供的實驗結果,如果考慮前端+后端的整體處理效果,算法在公園與林間場景表現較好,但是在城區以及港口效果不及 LIOM。如果只考慮前端激光里程計,算法在除了港口場景外都是最優的,畢竟論文的主要貢獻在前端。

總結

本文通過理論分析與代碼對比介紹了 LINS 算法,其中主要介紹了 LINS 如何使用濾波框架做激光 SLAM,以及優化與濾波的區別。主要是把前端激光里程計部分改為了濾波框架,并且引入了 IMU 做緊耦合。同時,我們也推導了濾波的更新方程其實可以由高斯牛頓法推導而來。希望對讀者有所幫助,如果錯誤煩請指出。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 激光雷達
    +關注

    關注

    970

    文章

    4116

    瀏覽量

    191398

原文標題:LINS算法與代碼解析

文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    瑞芯微rv1126 SDK代碼基礎分析---rkmedia框架分析

    瑞芯微rv1126 SDK代碼基礎分析---rkmedia框架分析誰知道???能否告知一下呢http://blgxb.qiuyi.cn/gxb/http://blgxb.qiuyi.cn
    發表于 07-16 15:49

    VxWorks BSP框架代碼包含頭文件和驅動

    VxWorks BSP框架代碼包含頭文件和驅動
    發表于 03-26 15:58 ?114次下載

    MapReduce框架下的Skyline結果優化算法_馬學森

    MapReduce框架下的Skyline結果優化算法_馬學森
    發表于 03-19 11:41 ?0次下載

    基于元學習推薦的優化算法自動選擇框架

    算法選擇的目的是從眾多可用優化算法中自動地選出最適用于當前問題的算法。針對算法選擇問題提出了基于元學習推薦的優化算法自動選擇
    發表于 12-04 15:28 ?0次下載
    基于元學習推薦的優化<b class='flag-5'>算法</b>自動選擇<b class='flag-5'>框架</b>

    基于等角緊框架的稀疏信號重構算法

    在1993年,Mallat和Zhang在研究了小波分析后,提出將信號在過完備原子庫上進行分解,然后根據信號本身特點自適應的選取,從而得到信號的稀疏表示。但與之發展起來的重構算法具有的高計算復雜度使其
    發表于 12-12 11:00 ?0次下載
    基于等角緊<b class='flag-5'>框架</b>的稀疏信號重構<b class='flag-5'>算法</b>

    WIFI指紋定位算法的基本框架

    的基本框架,并將K均值算法、近鄰傳播算法、自適應傳播算法應用到Wi-Fi指紋定位;然后以一個實驗室為例,分析室內POI劃分與空間區域的關系,
    發表于 12-23 09:43 ?0次下載
    WIFI指紋定位<b class='flag-5'>算法</b>的基本<b class='flag-5'>框架</b>

    多項式插值算法框架

    多項式近似理論為圖像的多項式插值算法提出一個統一的理論框架。密切多項式近似的理論框架包括采樣點數目、密切階數和導數近似規則三個部分,它既可以用于分析現有的多項式插值
    發表于 01-05 13:55 ?0次下載

    SHARC音頻模塊:裸機框架代碼的結構及功能

    概述裸機框架代碼的結構以及框架各部分的整體功能
    的頭像 發表于 06-27 06:05 ?3035次閱讀
    SHARC音頻模塊:裸機<b class='flag-5'>框架</b>源<b class='flag-5'>代碼</b>的結構及功能

    TouchGFX代碼框架以及如何添加用戶代碼

    1. 摘要 本文檔主要介紹,TouchGFX代碼框架以及如何添加用戶代碼。 2. 準備工作 可以正常運行的TouchGFX工程 3. 代碼結構 TouchGFX的
    的頭像 發表于 01-18 11:28 ?2818次閱讀
    TouchGFX<b class='flag-5'>代碼</b><b class='flag-5'>框架</b>以及如何添加用戶<b class='flag-5'>代碼</b>

    在單片機中使用的RTOS代碼框架

    在這次開發中,也是遇到了很多的問題,主要的感想是關于代碼框架。在單片機開發中,特別是使用了RTOS的時候,一個良好的代碼框架真的是相當的必要的。
    的頭像 發表于 02-10 14:21 ?1308次閱讀

    大學課程 數據分析 實戰之K-means算法(2)算法代碼

    分組成! %% 尋找聚類中心 while 1 ? ? count = zeros(2,1); 原文標題:大學課程 數據分析 實戰之K-means算法(2)算法代碼 文章出處:【微信公眾
    的頭像 發表于 02-11 07:20 ?544次閱讀

    [源代碼]Python算法詳解

    [源代碼]Python算法詳解[源代碼]Python算法詳解
    發表于 06-06 17:50 ?8次下載

    Linux Led子系統代碼框架分析

    代碼框架分析 led-class.c (led 子系統框架的入口) 維護 LED 子系統的所有 LED 設備,為 LED 設備提供注冊操作函數: led_classdev_regist
    的頭像 發表于 07-20 10:36 ?932次閱讀

    深度學習算法框架學習

    深度學習算法框架學習 深度學習是一種非常強大的機器學習方法,它可以用于許多不同的應用程序,例如計算機視覺、語言處理和自然語言處理。然而,實現深度學習技術需要使用一些算法框架。在本文
    的頭像 發表于 08-17 16:11 ?857次閱讀

    基于Django89的web框架代碼

    基于Django89的web框架代碼,超詳細
    發表于 02-10 15:38 ?0次下載
    主站蜘蛛池模板: 久久视频免费 | 日日爱网站 | 俺去操| 欧美69xx性欧美 | 国产资源在线免费观看 | 日本色黄视频 | 亚洲成色www久久网站 | 手机在线看a | 嘿嘿嘿视频在线观看网站 | 一级特级女人18毛片免费视频 | 久久久五月 | 手机看片神马午夜 | 成人国产精品一级毛片视频 | 日日操天天操夜夜操 | 国产精品麻豆va在线播放 | 天堂最新版 | 黄色免费看网站 | 偷偷鲁影院手机在线观看 | 在线成人aa在线看片 | 大黄网站在线观看 | 黄色在线播放网址 | 日本一级高清不卡视频在线 | 99精品在免费线视频 | 欧美午夜一区 | 福利视频一区二区三区 | 日本动漫天堂 | 午夜影视啪啪免费体验区入口 | 六月丁香六月婷婷 | 黄视频网站在线观看 | 欧美天堂视频 | 桃色婷婷| 天天干天天操天天玩 | 好大好硬好长好爽a网站 | 天堂网在线最新版www中文网 | 亚洲不卡视频在线观看 | 中文字幕精品一区二区三区视频 | 一区二区三区四区五区 | 欧美一区二区三区视频在线观看 | 毛片又大又粗又长又硬 | 天天摸天天碰色综合网 | 国产午夜在线观看视频 |