1. 程式人生 > 實用技巧 >SLAM十四講第二講

SLAM十四講第二講

第二章 初識 SLAM

1、相機分類
相機可以分為單目相機(Monocular)、雙目相機(Stereo)和深度相機(RGB-D)三大類。
1)單目相機
只使用一個攝像頭進行 SLAM 的做法稱為單目SLAM(Monocular SLAM)。這種感測器結構特別簡單,成本特別低,所以單目 SLAM 非常受研究者關注。
照片本質上是拍攝某個場景(Scene)在相機的成像平面上留下的一個投影。它以二維的形式記錄了三維的世界。顯然,這個過程丟掉了場景的一個維度,也就是所謂的深度(或距離)。在單目相機中,我們無法通過單張圖片來計算場景中物體與相機之間的距離(遠近)。
由於單目相機拍攝的影象只是三維空間的二維投影,所以,如果真想恢復三維結構,必須改變相機的視角。在單目 SLAM 中也是同樣的原理。我們必須移動相機,才能估計它的運動(Motion),同時估計場景中物體的遠近和大小,不妨稱之為結構(Structure)。

單目 SLAM 估計的軌跡和地圖將與真實的軌跡和地圖相差一個因子,也就是所謂的尺度(Scale)➀。由於單目 SLAM 無法僅憑影象確定這個真實尺度,所以又稱為尺度不確定性(Scale Ambiguity)。
2)雙目相機
雙目相機由兩個單目相機組成,但這兩個相機之間的距離﹝稱為基線(Baseline)﹞是已知的。我們通過這個基線來估計每個畫素的空間位置——這和人眼非常相似。我們人類可以通過左右眼影象的差異判斷物體的遠近,在計算機上也是同樣的道理。如果對雙目相機進行拓展,也可以搭建多目相機,不過本質上並沒有什麼不同。
計算機上的雙目相機需要大量的計算才能(不太可靠地)估計每一個畫素點的深度,相比於人類真是非常笨拙。雙目相機測量到的深度範圍與基線相關。基線距離越大,能夠測量到的就越遠,所以無人車上搭載的雙目通常會是個很大的傢伙。雙目相機的距離估計是比較左右眼的影象獲得的,並不依賴其他感測裝置,所以它既可以應用在室內,亦可應用於室外
。雙目或多目相機的缺點是配置與標定均較為複雜,其深度量程和精度受雙目的基線與解析度所限,而且視差的計算非常消耗計算資源,需要使用 GPU 和 FPGA 裝置加速後,才能實時輸出整張影象的距離資訊。因此在現有的條件下,計算量是雙目的主要問題之一
3)深度相機(RGB-D相機)
其最大的特點是可以通過**紅外結構光或 Time-of-Flight(ToF)**原理,像鐳射感測器那樣,通過主動向物體發射光並接收返回的光,測出物體與相機之間的距離。即通過物理手段測量,所以相對於雙目節省了大量的計算量。
不過,現在多數 RGB-D 相機還存在測量範圍窄、噪聲大、視野小、易受日光干擾、無法測量透射材質等諸多問題,在 SLAM 方面,主要用於室內,室外則較難應用。
2、經典視覺 SLAM 框架
經典視覺SLAM框架
整個視覺 SLAM 流程包括以下步驟。
1) 感測器資訊讀取。在視覺 SLAM 中主要為相機影象資訊的讀取和預處理。如果是在機器人中,還可能有碼盤、慣性感測器等資訊的讀取和同步。
2)視覺里程計(Visual Odometry,VO)。視覺里程計的任務是估算相鄰影象間相機的運動,以及區域性地圖的樣子。VO 又稱為前端(Front End)。
3)後端優化(Optimization)。後端接受不同時刻視覺里程計測量的相機位姿,以及迴環檢測的資訊,對它們進行優化,得到全域性一致的軌跡和地圖。由於接在 VO 之後,又稱為後端(Back
End)。
4) 迴環檢測(Loop Closing)。迴環檢測判斷機器人是否到達過先前的位置。如果檢測到迴環,它會把資訊提供給後端進行處理。
5) 建圖(Mapping)。它根據估計的軌跡,建立與任務要求對應的地圖。
3、SLAM 問題的數學表述
運動方程:uk 是運動感測器的讀數或者輸入,wk 為該過程中加入的噪聲。
運動方程
觀測方程:當小蘿蔔在 xk 位置上看到某個路標點 yj,產生了一個觀測資料 zk,j,vk,j 是這次觀測裡的噪聲。
觀測方程
根據系統的真實運動和感測器的種類,存在著若干種引數化方式(Parameterization)。
但我們保持通用性,把它們取成通用的抽象形式,那麼 SLAM 過程可總結為兩個基本方程:
在這裡插入圖片描述
4、kdevelop的安裝
https://blog.csdn.net/qq_27806947/article/details/80119294