日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORB-SLAM2 学习1

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORB-SLAM2 学习1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

申明:本文只是作者為方便知識積累,總結了很多SLAM大牛的文章要點。


ORB-SLAM源碼地址:https://github.com/raulmur/ORB_SLAM2.git

ORB-SLAM項目組網址:http://webdiis.unizar.es/~raulmur/orbslam/


ORB-SLAM是一個基于特征點的實時單目檢測和重定位SLAM系統,在大規模、小規模、室內室外的環境中都可以運行。該系統對于劇烈運動也很魯棒,支持寬基線的閉環檢測和重定位,包括全自動初始化。該系統包含了所有SLAM系統的共有模塊:跟蹤(Tracking)、建圖(Mapping)、重定位(Relocalization)、閉環檢測(Loop closing)。由于ORB-SLAM是基于特征點的,故其能夠實時計算出相機的軌跡,并生成場景的稀疏三維重建結果。ORB-SLAM2在ORB-SLAM基礎上還支持標定后的雙目相機和RGB-D相機。


ORB-SLAM的優勢與貢獻:

1. 使用ORB特征描述,不用GPU加速就可以實時,具有視點不變性和光照不變性。

2. 使用Covisibility Graph,使跟蹤和建圖聚焦在局部共視區域。


此處補充下Covisibility Graph的概念

以下內容參考自高博在知乎上的回答:https://www.zhihu.com/question/42050992/answer/93630213

首先,圖優化是目前視覺SLAM里主流的優化方式。其思想是把一個優化問題表達成圖(Graph),以便我們理解、觀察。

一個圖中有很多頂點,以及連接各頂點的邊。當它們表示一個優化問題時,頂點是待優化的變量,而邊是指誤差項。我們把各個邊的誤差加到一起,就得到了整個優化問題的誤差函數。頂點的參數化形式可以有很多不同的樣子,例如某些頂點可以表示相機的Pose,另一些頂點可以表示三維空間點,同理,邊也有不同的形式。除了個別的頂點和邊,我們也關心整個圖的結構,例如連通性等。

Covisibility Graph, Essential Graph,是不同圖的形式,Spanning Graph為生成樹。

如果我們考慮所有的相機Pose和所有點的空間位置,構造出來的圖將會非常復雜,而難以直接進行實時優化。因此,通常我們會構建一些帶有特殊結構的圖,以滿足實時性需求。

最簡單的是Pose Graph,如果我們對特征點的空間位置并不關心,就可以構建只帶有Pose結點以及Pose-Pose邊這樣的圖。由于一個照片中常常有上千個特征點,這樣做可以節省許多計算量。

Covisibility Graph的頂點是相機的Pose,而邊是Pose-Pose的變換關系,所以也算是Pose Graph的一種。當兩個相機看到相似的空間點時,它們對應的Pose就會產生聯系(我們就可以根據這些空間點在照片上的投影計算兩個相機間的運動)。根據觀測到的空間點的數量,給這個邊加上一個權值,度量這個邊的可信程度。

Essential Graph比Covisibility Graph更簡單,ORB-SLAM主要用它來進行全局優化。為了限制優化的規模,ORB-SLAM試圖盡量減少優化邊的數量。而盡量減少邊,又保持連通性的方法,就是做一個最小生成樹。

Covisibility是一直在用的概念,而Essential Graph是orb-slam自己提出的概念,為了減少全局會還的計算量,當你自己實現slam時,也會碰到這些困難,并設計一些應對的策略,這些就是你的創新性,事實上,隨著SLAM時間的增長,如何控制圖的結構和優化的規模,仍是現在SLAM有待解決的一個問題。


3. 使用the Essential Graph來優化位姿實現回環檢測。

4. 相機重定位,視點和光照改變都適用。

5. 根據對平面和非平面選擇不同模型,實現自動初始化。

6. 舍棄多余的關鍵幀,提高跟蹤魯棒性,加強長時間操作。


ORB-SLAM的系統架構:

(1)特征提取的方法:ORB特征提取

(2)三個線程。線程1:跟蹤,通過每一幀圖像定位相機,選擇是否加入關鍵幀;線程2:局部建圖:處理新的關鍵幀,使用local BA完成重建;線程3:閉環檢測,對每一個新加進的關鍵幀進行回環檢測。

(3)地圖點和關鍵幀。

(4)Covisibility Graph 和 Essential Graph

(5)用于場景識別的詞袋。


以下對三個線程的內容進行說明:

1. 跟蹤(Tracking)

這一部分主要工作是從圖像中提取ORB特征,根據上一幀進行姿態估計,或者進行通過全局重定位初始化位姿,然后跟蹤已經重建的局部地圖,優化位姿,再根據一些規則確定新的關鍵幀。

2. 建圖(LocalMapping)

這一部分主要完成局部地圖構建,包括對關鍵幀的插入,驗證最近生成的地圖點并進行篩選,然后生成新的地圖點,使用局部捆集調整(Local BA),然后再對插入的關鍵幀進行篩選,去除多余的關鍵幀。

3. 回環檢測(LoopClosing)

這一部分主要分為兩個過程:閉環檢測和閉環校正,閉環檢測先使用WOB進行探測,然后通過Sim3算法計算相似變換。閉環校正主要是閉環融合和Essential Graph的圖優化。






總結

以上是生活随笔為你收集整理的ORB-SLAM2 学习1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。