從零開始學習SLAM|技術路線

概念

視覺SLAM(Simultaneous Localization and Mapping)系統中,整個過程通常分為 前端后端 兩個主要部分。前端處理的是從傳感器數據(如相機圖像、激光雷達等)中提取和處理信息,用于實時定位建圖,而后端則負責全局優化地圖生成和精確化。

SLAM前端

前端的核心任務是處理傳感器數據(如圖像、IMU等)并生成與位姿相關的局部信息。主要包括 特征提取、匹配、位姿估計 和 局部優化。

前端 有時被稱為 視覺里程計(Visual Odometry,VO)。在 視覺SLAM 系統中,前端的任務通常包括 從相機圖像中估計相機的相對運動,這正是視覺里程計的核心任務。

1.1 視覺里程計(VO):
視覺里程計是指通過連續的圖像序列來估計相機的 相對運動(即位移和旋轉)。它只關注相機的運動估計,而不依賴于全局地圖或回環檢測,通常用于短期、局部的運動估計。是前端的一部分,負責估計相機的相對運動。

前端除了執行視覺里程計(估計相機相對運動)外,還會進行一些其他任務,例如:特征提取與匹配、位姿估計(通過方法如PNP等)、局部地圖構建(局部優化),滑動窗口優化等。

步驟
  1. 傳感器數據預處理
    點云濾波:點云數據通常包含噪聲和離群點,需要通過濾波方法進行清理。常見的濾波方法包括統計濾波(Statistical Outlier Removal)、體素濾波(Voxel Grid Filter)、直通濾波(Pass-through Filter)等。濾波之后還會進行點云平滑(沖裁樣)
    圖像預處理:對于視覺SLAM,圖像的預處理包括去畸變、灰度化、降噪等操作。
    利用圖像生成點云的代碼:可以看我這篇文章 點云濾波與重采樣可以看這篇文章
    1.1 特征提取
    關鍵點檢測:從圖像中提取關鍵點(如角點、邊緣、特征點等),常見的算法包括 SIFT、SURF、ORB、FAST、BRIEF 等。

特征描述符生成:為每個關鍵點生成描述符(特征向量),描述符用于匹配不同視角下的相同物理點。常見的描述符有 ORB、BRIEF 等。

1.2 特征匹配
局部匹配(粗匹配):通過描述符,在不同時間的圖像中找到相同或相似的特征點。例如,通過 暴力匹配(Brute-Force) 或 FLANN(Fast Library for Approximate Nearest Neighbors) 來匹配特征點。
精匹配:如ICP
外點剔除:使用 RANSAC 算法去除錯誤匹配點(外點),確保匹配點的準確性。

1.3 位姿估計
PnP (Perspective-n-Point):根據已知的3D點和其在圖像中的投影,估計相機的旋轉和位移,進而求得相機的 位姿(位置與朝向)。常用的方法包括 EPnP、UPnP。

光流法(Optical Flow):通過估計像素點在連續圖像幀之間的運動,來計算相機的相對位姿。

1.4 局部地圖構建
將多幀點云數據融合到一個統一的坐標系中,形成完整的環境地圖。
局部優化:根據前端估計的相機位姿,進行局部地圖的更新。通過 局部地圖(如特征點、深度圖、關鍵幀等)來幫助改進定位精度。

1.5 滑動窗口優化(Sliding Window Optimization)
滑動窗口:為了保持實時性,通常只處理一小部分最近的幀(例如,前幾幀或一段時間的幀)。滑動窗口優化能夠減少計算負擔,同時保證定位精度。

局部一致性:前端會維持一個 滑動窗口,隨著新幀的加入,窗口中只保留當前的幾幀,這樣能夠在局部范圍內進行優化,使得前端的估計更加精確。

SLAM后端

后端主要負責全局優化,包括 回環檢測、全局圖優化 和 地圖精細化。它主要是處理前端產生的數據,通過全局優化來糾正位姿的漂移和誤差。
2.0 多傳感器融合
IMU與視覺數據融合:通過時間戳對齊和姿態對齊(如四元數插值)將IMU數據與視覺數據融合,以提高定位精度
2.1 回環檢測(Loop Closure Detection)
回環檢測:當機器人回到已知的位置時,后端需要檢測到這個回環(即,識別該位置已經被之前的幀訪問過)。這有助于減少累積誤差,恢復全局一致性。

方法:常用的回環檢測算法包括基于 Bag of Words 的方法、 FabMap、 ORB-SLAM 的回環檢測等。

2.2 圖優化(Graph Optimization)
圖模型:后端通過構建 圖優化模型,將機器人位姿和地標視為圖的節點,而它們之間的相對約束(如運動約束、觀測約束)則是圖中的邊。圖的邊通常對應前端得到的相對位姿、地標觀測等約束。

非線性優化:使用 非線性最小二乘法 或 Levenberg-Marquardt 算法來優化圖中節點的位置,最小化邊約束的誤差。常見的優化框架包括 g2o、Ceres Solver。

2.3 地圖優化
地圖更新:后端根據優化后的位姿和地圖信息來更新全局地圖。隨著回環檢測的成功,地圖會得到糾正和優化。

圖優化:地圖的精細化不僅包括位姿優化,還包括 地標位置 的優化和重定位,確保整個地圖的一致性和精確度。 如Bundle Adjustment 方法,見文章中的代碼部分

2.4 姿態修正與全局一致性
姿態校正:由于前端的累積誤差,后端的全局優化會對機器人的姿態進行修正,確保地圖和軌跡的準確性。

全局一致性:圖優化后的結果不僅能修正回環檢測引入的誤差,還能確保地圖在全球范圍內的一致性。

2.5 地圖構建與精細化
地圖生成:通過前端和后端的共同工作,最終生成的地圖包含了機器人的位姿軌跡以及環境中的特征點或地標。

稀疏/密集地圖:根據所使用的算法和傳感器類型,地圖可以是 稀疏地圖(由特征點組成)或 密集地圖(如通過深度圖或語義分割得到的更豐富的地圖數據)。

前端與后端的協同工作

前端的作用:實時獲取傳感器數據,估計局部的位姿變化,并不斷更新局部地圖。前端通常依賴于滑動窗口優化、特征匹配和位姿估計,保證實時性和定位精度。

后端的作用:對前端的輸出進行全局優化,確保全局軌跡的一致性和精確性,尤其是在回環檢測和圖優化過程中,解決長期累積的誤差問題。

視覺SLAM的典型系統架構

ORB-SLAM:一個經典的視覺SLAM系統,使用 ORB 特征進行匹配,支持回環檢測和圖優化,適用于大規模的環境。

LSD-SLAM:密集SLAM系統,基于直接法(不依賴特征提取和匹配),直接使用圖像的像素強度進行位姿估計和地圖構建。

VINS-Mono:一個基于單目相機和IMU的視覺慣性SLAM系統,結合了視覺和慣性傳感器的數據進行位姿估計。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77100.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 解題思路 44(Hot 100)

解題思路: dp 數組的含義: 以 nums[i] 為結尾的最長遞增子序列的長度。遞推公式: dp[i] Math.max(dp[i], dp[j] 1)。dp 數組初始化: dp[i] 1。遍歷順序: 從小到大去遍歷,從 i 1 開始,直到 …

精益數據分析(22/126):解鎖創業增長密碼與長漏斗分析

精益數據分析(22/126):解鎖創業增長密碼與長漏斗分析 在創業與數據分析的探索旅程中,我們都在不斷尋求新的知識和方法,以提升創業的成功率。我一直期望能和大家共同學習、共同進步,今天就讓我們繼續深入研…

大模型應用開發之LLM入門

一、大模型概述 1、大模型概念 LLM是指用有大量參數的大型預訓練語言模型,在解決各種自然語言處理任務方面表現出強大的能力,甚至可以展現出一些小規模語言模型所不具備的特殊能力 2、語言模型language model 語言建模旨在對詞序列的生成概率進行建模…

Vue 計算屬性 VS 偵聽器:從原理到性能的深度對比

在 Vue 開發中,computed(計算屬性)和watch(偵聽器)是響應式系統的兩大核心工具。 它們看似都能處理數據變化,實則設計理念和應用場景大相徑庭。 一、核心區別:數據驅動的兩種范式 1. 觸發機制…

特斯拉宣布啟動自動駕駛網約車測試,無人出租車服務進入最后準備階段

特斯拉公司于4月24日正式宣布,已在美國得克薩斯州奧斯汀和加利福尼亞州舊金山灣區啟動自動駕駛網約車服務的員工內部測試。這項測試將為今年夏季計劃推出的完全無人駕駛出租車服務進行最后的驗證和準備。 此次測試使用約200輛經過特殊改裝的Model 3車型,…

基于springboot的在線教育系統

一、系統架構 前端:vue | element-ui | html | jquery | css | ajax 后端:springboot | mybatis 環境:jdk1.8 | mysql | maven | nodejs | idea 二、代碼及數據 三、功能介紹 01. web端-首頁1 02. web端-首頁2 03. w…

文檔編輯:reStructuredText全面使用指南 — 第四部分 高級主題

文檔編輯:reStructuredText全面使用指南 — 第四部分 高級主題 reStructuredText(簡稱RST或ReST)是一種輕量級的標記語言,用于編寫結構化的文檔。它由Python社區開發,并廣泛應用于技術文檔、書籍、博客文章等。reStruc…

git Http改用戶下載

用原先別人賬號,無權下更新 http方式設置自己賬號 例如 git fetch --all 提示沒有權限從 http://192.168.1.2/gitlab/項目路徑.git下載 git remote set-url origin http://your-username192.168.1.2/gitlab/項目路徑.git your-username修改成自己的git賬號 需要輸入一個Tok…

Cancer Cell|scRNA-seq + scTCR + 空間多組學整合分析,揭示CD8? T細胞在免疫治療中的“雙路徑” | 臨床問題的組學解答

Cancer Cell|scRNA-seq scTCR 空間多組學整合分析,揭示CD8? T細胞在免疫治療中的“雙路徑” 👋 歡迎關注我的生信學習專欄~ 如果覺得文章有幫助,別忘了點贊、關注、評論,一起學習 近日,《Cancer Cell》…

Python編程的真諦:超越語法,理解編程本質

你是否也曾陷入這樣的誤區:學了無數的 Python 語法、刷了幾十套題,寫起代碼卻仍然卡頓、舉步維艱?這時候你才發現,真正阻礙進步的,從不是語法,而是你對“編程本質”的理解。 如果你只是死記硬背Python的語…

Go協程的調用與原理

Goroutine Go不需要像C或者Java那樣手動管理線程,Go語言的goroutine機制自動幫你管理線程。 使用goroutine、 Go語言中使用goroutine非常簡單,只需要在調用函數的時候在前面加上go關鍵字,就可以為一個函數創建一個goroutine。 一個gorout…

自然語言處理(9)—— 共現詞矩陣及Python實現

共現詞矩陣 1. 概述2. 構建步驟3. 代碼實現(Python)結語 共現詞矩陣(Co-occurrence Matrix)是自然語言處理(NLP)中用于捕捉詞語間語義關系的重要工具。共現矩陣通過統計詞語在特定上下文窗口內的共現頻率&a…

Spark SQL核心解析:大數據時代的結構化處理利器

在大數據處理領域,Spark以其強大的分布式計算能力脫穎而出,而Spark SQL作為Spark生態系統的重要組成部分,為結構化和半結構化數據處理提供了高效便捷的解決方案。它不僅整合了傳統SQL的強大查詢功能,還深度集成到Spark的計算框架中…

多態以及多態底層的實現原理

本章目標 1.多態的概念 2.多態的定義實現 3.虛函數 4.多態的原理 1.多態的概念 多態作為面對三大特性之一,它所指代的和它的名字一樣,多種形態.但是這個多種形態更多的指代是函數的多種形態. 多態分為靜態多態和動態多態. 靜態多態在前面已經學習過了,就是函數重載以及模板,…

linux下開發NFC讀寫器

linux下使用NFC讀卡器,基于QT5開發 創建工程,引入lib開始編寫代碼 創建工程,引入lib 創建一個QT工程,如果是控制臺程序,則去掉gui QT - gui引入lib庫 LIBS -L$$PWD/lib -lyw60x這里需要將libyw60x.so庫文件放在工程…

Linux基礎使用-筆記

1. 文件和目錄操作 查看當前目錄:pwd 命令用于顯示當前工作目錄的完整路徑。 pwd切換目錄:cd 命令用于切換工作目錄。 # 切換到指定目錄 cd /home/user/Documents # 切換到上一級目錄 cd .. # 切換到用戶主目錄 cd ~列出目錄內容:ls 命令用…

DAG(有向無環圖)計算模型面試內容整理-拓撲排序(Topological Sort)和節點依賴與并行度

拓撲排序(Topological Sort) 拓撲排序(Topological Sort): 拓撲排序是針對有向無環圖(DAG)的一種線性排序方法。這種排序方法的特點是,對于DAG中的每一條有向邊 (A → B),在拓撲排序中節點A總是排在節點B之前。

23種設計模式-結構型模式之享元模式(Java版本)

Java 享元模式(Flyweight Pattern)詳解 🦋 什么是享元模式? 享元模式是一種結構型模式,它通過共享相同的對象來減少內存消耗,適用于大量細粒度對象的場景。關鍵思想是緩存重復出現的對象,避免…

瀏覽器訪問背后的秘密:從加載到關閉,數據是否會丟失?

? 一次瀏覽器訪問 www.xxx.com 背后發生了什么? —— 以及“我點了 ,數據會不會丟?”的深度剖析 適讀人群:Web 開發者、運維工程師、性能調優/安全從業者 1?? 打開瀏覽器敲下網址:鏈路是如何啟動的? 階…

【HDFS入門】深入解析DistCp:Hadoop分布式拷貝工具的原理與實踐

目錄 1 DistCp概述與應用場景 2 DistCp架構設計解析 2.1 系統架構圖 2.2 執行流程圖 3 DistCp核心技術原理 3.1 并行拷貝機制 3.2 斷點續傳實現原理 4 DistCp實戰指南 4.1 常用命令示例 4.2 性能優化策略 5 異常處理與監控 5.1 常見錯誤處理流程 5.2 監控指標建議…