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