orb-slam2(学习笔记)+相机
單目(Monocular)、雙目(Stereo)、深度相機(RGB-D)
深度相機能夠讀取每個像素離相機的距離 ,單目相機 只使用一個攝像頭進行SLAM的做法叫做單目SLAM(Monocular SLAM),結構簡單,成本低。
照片拍照的本質,就是在相機平面的一個投影,在這個過程當中丟失了這個場景的一個維度,就是深度(距離信息)
單目視覺丟失深度? 導致無法判斷場景物體的具體情況
單目SLAM 估計的軌跡和地圖,與真實的軌跡和地圖之間相差一個因子,這就是所謂的尺度(scale)由于,單目SLAM無法憑借圖像來確定真實的尺度,又稱為尺度不確定
單目SLAM 的缺點:1、只有平移后才能計算深度????? 2、無法確定真實的尺度。
雙目相機:雙目相機數據:通過左眼和右眼的差異,判斷場景中的物體離相機的距離
雙目相機和深度相機的目的是,通過某種手段測量物體離我們之間的距離。如果知道這個距離,場景的三維結構就可以通過這個單個圖像恢復出來,消除了尺度不確定性。
雙目相機是由于兩個單目相機組成,這兩個相機之間的距離叫做基線(baseline)這個基線的值是已知的,我們通過這個基線的來估計每個像素的空間位置(就像是人通過左右眼的圖像的差異,來判斷物體的遠近)
但是計算機雙目相機需要大量的計算才能估計出每個像素點的深度。雙目相機的測量到的深度范圍與基線相關,基線的距離越大,能夠檢測到的距離就越遠。
雙目的相機的缺點是:配置和標定都比較復雜,其深度測量和精度受到雙目的基線和分辨率的限制,而且視差的計算非常消耗計算機的資源。因此在現有的條件下,計算量大是雙目相機的主要問題之一。
深度相機是2010年左右開始興起的一種相機,他的最大的特點就是采用紅外結構光或者(Time-of-Flight)ToF原理,像激光傳感器那樣,主動向物體發射光并且接受返回的光,測量出物體離相機的距離。這部分并不像雙目那樣通過計算機計算來解決,而是通過物理測量的手段,可以節省大量的計算量。目前RGBD相機主要包括KinectV1/V2, Xtion live pro,Realsense,目前大多數的RGBD相機還存在測量范圍小,噪聲大,視野小,易受到日光干擾,無法測量透射材質等諸多問題。
經典視覺SLAM框架
視覺slam的路程分成以下幾步:
1、傳感器信息的讀取。
2、視覺里程計(Visual Odometry,VO)視覺里計的任務是,估算相鄰圖像之間相機的運動,以及局部地圖。VO也稱為前端(Front End).
3、后端優化(Optimization)后端是接受不同時刻視覺里程計測量的相機位姿,以及回環檢測的信息。(Back End)
4、回環檢測(loop Closing)。回環檢測是判斷機器人是否或者曾經到達過先前的位置。如果檢測到回環,它會吧信息提供給后端進行處理
5、建圖(Mapping),他根據估計出的軌跡,建立與任務要求的對應的地圖。
?
視覺里程計
視覺里程計關心的是,相鄰圖像之間相機的移動,最簡單的情況就是計算兩張圖像之間的運動關系。
為了定量的估計相機的運動,必須了解相機與空間點的幾何關系。
如果僅僅用視覺里程計來計算軌跡,將不可避免的出現累計漂移,注意,這個地方說的是累計漂移,
為了解決漂移問題。我們還需要兩種檢測技術:后端優化和回環檢測的。回環檢測負責吧“”機器人回到原來的位置“”這件事情給檢測出來。而后端優化則是根據這個信息,優化整個軌跡形狀
后端優化
后端優化主要是指在處理SLAM噪聲問題,雖然我希望所有的數據都是準確的,但是在現實當中,再精確的傳感器也是有一定噪聲的。后端只要的考慮的問題,就是如何從帶有噪聲的數據中,估計出整個系統的狀態,以及這個狀態估計的不確定性有多大(最大后驗概率(MAP))
視覺里程計(前端)給后端提供待優化的數據。
后端負責整體的優化過程,后端面對的只有數據,并不關心數據到底是來自哪個傳感器。
在視覺SLAM當中,前端和計算機視覺領域更為相關,例如:圖像的特征提取與匹配。
后端只要是濾波和非線性優化算法。
回環檢測
回環檢測(閉環檢測(Loop Closure Detection))主要是解決位置估計隨時間漂移的問題。為了實現回環檢測,我們需要讓機器人具有識別曾經到達過場景的能力。通過判斷圖像之間的相似性,來完成回環檢測。如果回環檢測成功,可以顯著地減小累計誤差。所以視覺回環檢測,實際上是一種計算圖像數據相似性的算法。
建圖
建圖(Mapping)是指構建地圖的過程。地圖是對環境的描述,但是這個描述并不是固定。(如果是激光雷達的地圖,就是一個二維的地圖,如果是其他視覺slam 三維的點云圖)
地圖可以分成度量地圖和拓撲地圖兩種。
1、度量地圖(Metric Map)
度量地圖強調的是精確表示出地圖中物體的位置關系,通常我們用稀疏(Sparse)與稠密(Dense)對他們進行分類。稀疏地圖進行了一定程度的抽象,并不需要表達所有物體。例如:我們需要一部分有代表意義的東西(簡稱為路標landmark),
2D柵格地圖???? 2D拓撲地圖
這里的稀疏地圖,就是又路標組成的地圖。
相對于稀疏地圖而言,稠密地圖將建模所看到的所有的東西
3D點云地圖?? 3D網格地圖
對于定位而言:稀疏的路標地圖就足夠了。而要用于導航,我們往往需要稠密地圖。
稠密地圖通常按照分辨率,由許多個小塊組成。二維的度量地圖是許多小格子(Grid),三維則是許多小方塊(Voxel)。一般而言,一個小方塊,有占據,空閑,未知三種狀態,來表達這個格子內是不是有物體。
一些用于視覺導航的算法 A*, D*,算法這種算法需要地圖能夠存儲每個格點的狀態,浪費了大量的存儲空間。而且大多數情況下,地圖的很多細節是無用的。另外,大規模度量地圖有的時候回出現一致性問題。很小的一點轉向誤差,可能會導致兩間屋子之間的墻出現重疊,使得地圖失效。
2、拓撲地圖(Topological Map)
相比于度量地圖的精準性,拓撲地圖則更強調了地圖元素之間的關系。拓撲地圖是一個圖。這個圖是由節點和邊組成,只考慮節點間的連通性。它放松了地圖對精確位置的需要,去掉了地圖的細節問題,是一種更為緊湊的表達方式。
如何在拓撲圖中,進行分割形成結點和邊,如何使用拓撲地圖進行導航和路徑規劃。
?
總結
以上是生活随笔為你收集整理的orb-slam2(学习笔记)+相机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 明星都是怎么谈恋爱的???
- 下一篇: TermCriteria模板类