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