SLAM: Orb_SLAM的使用小综述
??????? Orb_SLAM被業(yè)內(nèi)人士稱為第一個現(xiàn)代SLAM方法,不僅是因為其工程化良好,簡單易用。OrbSLAM更是對PTAM的改進(jìn),PTAM分離了追蹤和地圖構(gòu)建過程。OrbSLAM走的更遠(yuǎn),把閉環(huán)檢測和世界地圖的優(yōu)化從局部地圖優(yōu)化中獨立出來,另辟一個線程,使在線SLAM過程應(yīng)用到了更大的場景中。
??????? 作為傳統(tǒng)在線SLAM算法的濾波器算法,使用EM同時完成追蹤和地圖構(gòu)建;PTAM引入BA,把地圖構(gòu)建從追蹤中獨立出來,增大在線SLAM的使用場景;OrbSLAM工程方法,把閉環(huán)檢測和世界地圖優(yōu)化獨立出來,使在線SLAM應(yīng)用到更大的場景,并可以應(yīng)用到室外。
??????? OrbSLAM應(yīng)用廣泛的一個前提是其開源工程做的不錯,方法論和設(shè)計模式有可圈可點之處。引發(fā)全員SLAM。
0.ORB_SLAM的官方網(wǎng)站:http://webdiis.unizar.es/~raulmur/orbslam/
1. 參考知乎上對 orb-slam?的評價:orb-slam在眾多SLAM方法中處于怎樣的地位
2. 評價說是 PTAM 的改進(jìn)版:PTAM主頁
3. Orb_SLAM的 GitHub 頁面:此頁面有詳細(xì)的使用方法
4. 使用Orb_SLAM的一些實用參考工程:視覺SLAM實戰(zhàn)(一):RGB-D SLAM V2、Orb_SLAM
?? ? "RGBDSLAMv2 is based on the ROS project, OpenCV, PCL, OctoMap, SiftGPU and more – thanks!" 你還在等什么?裝裝裝!好在這些東西在Ubuntu下安裝,就是幾句話搞定的事。
???? ROS hydro安裝指南: http://wiki.ros.org/cn/hydro/Installation/Ubuntu (加ppa源后直接安裝)
?? ? Linux OpenCV安裝指南:http://blog.sciencenet.cn/blog-571755-694742.html (從源代碼編譯)
? ?? PCL:http://www.pointclouds.org/downloads/linux.html (加ppa后安裝)
5. Orb_SLAM的使用方法中文介紹:ORB-SLAM(1) --- 讓程序飛起來
?
?????? 本文給出了一些注意事項和排錯方法,值得沒有時間讀詳細(xì)文檔的使用者參考一下。
6.? SLAM:ORB_SLAM源代碼中的設(shè)計模式分析
??????? 此文分析了ORB_SLAM的設(shè)計模式的由來。原文鏈接:SLAM代碼(設(shè)計模式)
??????? 若要讀取代碼之前先觀其思路,看看這個系列的不錯:http://blog.csdn.net/wendox/article/month/2016/12
?
一部分摘抄
??????? 引入一個Frame結(jié)構(gòu),為了實現(xiàn)上述的跟蹤器,第一步是讀取圖像,通過圖像的數(shù)據(jù)估計當(dāng)前幀對應(yīng)的位姿狀態(tài)。場景中相同的點在不同的視角中構(gòu)成一個基礎(chǔ)矩陣的關(guān)系,一個圖像幀的圖像平面和另一幀的圖像的平面之間構(gòu)成單應(yīng)矩陣的關(guān)系。使用最小二乘法通過圖像點可以計算得到單應(yīng)矩陣和基礎(chǔ)矩陣,,使用矩陣奇異值分解(SVD)可將單應(yīng)矩陣或者基礎(chǔ)矩陣分解恢復(fù)出位姿變化。這些內(nèi)容的實現(xiàn)可以放到Frame結(jié)構(gòu),也可以像ORB那樣專門放到一個Initializer里邊。Frame需要和Map完成互動。除了需要計算當(dāng)前幀的位姿,還要完成特征點的三維重建。有的方法使用了一個深度濾波器,如SVO,LSD中考慮了極線與深度的夾角,這樣會得到一個半稠密的地圖。因為稠密的地圖點想要試試完成一般是需要使用GPU來完成的。圖像的上的特征點和空間中的三維點如何對應(yīng)呢?常用的方法是PnP。PnP是已知三維點計算相機(jī)位姿,三維重建是已知相機(jī)位姿計算三維點。
??????? PnP的計算中需要知道相機(jī)的內(nèi)參數(shù),這里引入第二個結(jié)構(gòu)相機(jī)模型Camera,他保存并管理相機(jī)的參數(shù),進(jìn)行一些圖像空間到世界空間的轉(zhuǎn)換,完成圖像點(關(guān)鍵特征點)的去畸變。
??????? 如何解決累計誤差問題,常用的方法是使用路標(biāo)點和當(dāng)前圖像點進(jìn)行匹配估計相機(jī)的運動,這時候需要存儲這些路標(biāo)點的描述子。另外一方面在LSD-SLAM, SVO等方法中,是怎樣存儲路標(biāo)點的呢?這里引入一個結(jié)構(gòu)叫做Mappoint。
??????? 如何評價一個路標(biāo)點的好壞程度?如何如何保存病管理這些路標(biāo)點呢?路標(biāo)點的添加刪除等管理工作可以放入另外一個結(jié)構(gòu)Map中進(jìn)行。地圖中以何種形式保存這些路標(biāo)呢,一種方法是路標(biāo)放在圖像幀里作為關(guān)鍵幀KeyFrame進(jìn)行保存和提取。關(guān)鍵幀串起來成為一個地圖。這樣做的好處就是我們使用了關(guān)鍵幀繼承了幀的性質(zhì),便于以后特征點匹配。在前邊累計相機(jī)運動的時候參考幀是前一幀圖像,這里的參考幀是關(guān)鍵幀的圖像。關(guān)鍵幀是相機(jī)運動過程中保留了重要信息的最小集合中的元素。理論上關(guān)鍵幀是沒有重疊的。后端優(yōu)化的對象主要是關(guān)鍵幀。
?
不足之處:
????? ORB-SLAM工程在設(shè)計數(shù)據(jù)關(guān)聯(lián)時關(guān)系鏈接極為復(fù)雜,應(yīng)該有一種能降低工程模塊耦合的方法。
總結(jié)
以上是生活随笔為你收集整理的SLAM: Orb_SLAM的使用小综述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑峡谷预热创键宇宙联名款机械键盘,采用紧
- 下一篇: QT显示框架嵌入Vs控制台工程