本文重點分享了SLAM原理、視覺SLAM框架、開源SLAM分類及傳感器選擇等方面內容。
01SLAM的引入
1.1定義
SLAM 是 Simultaneous Localization and Mapping 的縮寫,中文譯作“同時定位與地圖構建”。它是指搭載特定傳感器的主體,在沒有環境先驗信息的情況下,于運動過程中建立環境的模型,同時估計自己的運動。如果這里的傳感器主要為相機,那就稱為“視覺 SLAM”。
1.2開發背景
圖1-1 SLAM中建圖的分類與作用
引入SLAM的主要目的如下:
1)建圖
使用SLAM可在傳感器具有良好表現的環境下建立精度較高的全局地圖,建立好的地圖會為后面的定位、導航等功能提供服務。
2)定位
視覺SLAM中可通過幀間數據匹配計算相機的相對變換,對應的就是機器人的位姿信息,不過該計算結果中存在累計誤差的影響;利用SLAM建立的全局地圖,通過相機采集到的環境信息與地圖進行匹配可以減小累積誤差的影響,獲得更加精準的機器人位姿。
3)導航
如果我們建立的地圖中包含了“哪些地方可以通過,哪些地方不能通過”的信息,那么我們可以以此實現機器人在地圖中從某一起點到某一終點的路徑規劃與跟蹤,并能夠對地圖中固定障礙物實現避障。但這對我們能夠建立的地圖有要求,需要是“稠密”地圖。
02視覺SLAM
2.1 經典視覺SLAM框架
SLAM至今已歷經三十多年的研究,這里給出經典視覺SLAM框架,這個框架本身及其包含的算法已經基本定型,并且已經在許多視覺程序庫和機器人程序庫中提供。
圖2-1 經典視覺SLAM框架
我們把整個視覺 SLAM 流程分為以下幾步:
1)傳感器信息讀取,在視覺 SLAM 中主要為相機圖像信息的讀取和預處理。如果在機器人中,還可能有碼盤、慣性傳感器等信息的讀取和同步。
2)視覺里程計(Visual Odometry, VO),視覺里程計任務是估算相鄰圖像間相機的運動,以及局部地圖的樣子,VO 又稱為前端(Front End)。
3)后端優化(Optimization),后端接受不同時刻視覺里程計測量的相機位姿,以及回環檢測的信息,對它們進行優化,得到全局一致的軌跡和地圖。由于接在 VO 之后,又稱為后端(Back End)。
4)回環檢測(Loop Closing),回環檢測判斷機器人是否曾經到達過先前的位置。如果檢測到回環,它會把信息提供給后端進行處理。
5)建圖(Mapping),它根據估計的軌跡,建立與任務要求對應的地圖。
某些使用場合中,我們只截取SLAM的部分功能應用到實際場景中。舉例來說只使用VO部分我們可以得到連續的相機相對運動信息,雖然該運動信息存在累計誤差,但應用中對此要求不高甚至不做要求,譬如VR頭顯中計算頭顯設備運動時的位姿。
不過一般在機器人應用場景中,個人認為建圖功能也是不可或缺的。因為前端包括后端優化得到的運動信息始終包含累積誤差,該累積誤差在SLAM中只能通過回環檢測(機器人回到某一處曾經經過的地方且系統識別出來)或者與事先建立好的具有較高精度的全局地圖匹配來消除。但是機器人在實際運動中,不能保證全局路徑一定會有重疊處,也就是說在SLAM計算中很可能出現不存在回環的情況,此時累積誤差只能通過與全局地圖匹配來消除,因此SLAM的建圖功能也不可或缺。
圖2-2 回環檢測消除累積誤差
這一點在VINS開源項目(香港科技大學團隊基于單目+IMU開發的開源SLAM方案)中的測試視頻(見“視頻/VINS/[Open Source] VINS-Mono_ Monocular Visual-Inertial System in EuRoC MAV Dataset (MH_05 V1_03).mp4”)中也有體現。在回環檢測前,SLAM計算得到的位姿與真實位姿之間已經產生了很大的偏差,如圖2-3所示;該偏差只有在相機回到了曾經經過的地方且SLAM成功執行了回環檢測后才得到了消除,如圖2-4所示。
圖2-3 未進行回環檢測前的位姿累積誤差
圖2-4 回環檢測消除累計誤差
2.2視覺SLAM方案的分類
視覺SLAM方案可按照傳感器的不同(單目、雙目、RGBD、與IMU的組合等)、前端方法的不同(主要分為直接法和特征點法)、后端優化方案的不同(濾波或者非線性優化)、生成地圖形式的不同(稀疏地圖、稠密地圖等)具有不同的劃分。這里主要以傳感器的不同對slam方案進行簡單的介紹。
1)單目slam
只使用一個攝像頭采集信息,在尺度完成初始化的情況下(即相機初始階段進行了一段位移且確定了該段位移的實際大小作為參考),能夠完成連續圖像間相機位姿的計算與建圖。優點在于設備簡單,成本低。缺點在于存在尺度漂移現象;圖像的深度信息只能通過三角測量計算得到,對環境適應性差;在相機位移較小時計算誤差較大,建圖精度不高。
2)雙目slam
使用雙目相機采集信息,雙目相機可以通過立體視覺原理計算得到像素深度,這樣就不存在單目slam中深度未知的情況。優點在于對環境的適應性要高于單目slam,且能夠計算得到像素真實深度;缺點在于像素深度計算量較大,一般通過FPGA或者GPU加速實現實時計算輸出。
3)RGBD SLAM
RGBD相機是指能夠同時輸出RGB圖像和對應的深度圖的相機,其測量像素深度不再通過耗時的被動雙目匹配計算,而是通過激光散斑增加圖像紋理加速計算或者硬件測量(結構光、TOF等)實現。因此它可以看做減小了計算量的雙目SLAM,但是RGBD相機普遍在室外表現效果不佳,更多用于室內環境。
4)近年來有學者提出單目/雙目+IMU的slam方案,其中IMU主要起到的作用包括:
(1)解決單目slam的初始化尺度問題
(2)追蹤中提供較好的初始位姿
(3)提供重力方向
(4)提供一個時間誤差項以供優化。理論上來說IMU提供了冗余的運動信息,通過數據融合可以得到更加精確的運動估計。
從實現難度上來看:單目SLAM>雙目SLAM>RGBD SLAM。
2.3 開源視覺SLAM方案匯總
目前比較流行的開源視覺SLAM方案如表2-1所示:
方案名稱 | 傳感器形式 | 地址 |
MonoSLAM | 單目 | https://github.com/hanmekim/SceneLib2 |
PTAM | 單目 | http://www.robots.ox.ac.uk/~gk/PTAM/ |
ORB-SLAM2 | 單目/雙目/RGBD | https://github.com/raulmur/ORB_SLAM2 |
LSD-SLAM | 單目為主 | http://vision.in.tum.de/research/vslam/lsdslam |
SVO | 單目 | https://github.com/uzh-rpg/rpg_svo |
DTAM | RGB-D | https://github.com/anuranbaka/OpenDTAM |
DVO | RGB-D | https://github.com/tum-vision/dvo_slam |
DSO | 單目 | https://github.com/JakobEngel/dso |
RTAB-MAP | 雙目/RGB-D | https://github.com/introlab/rtabmap |
RGBD-SLAM-V2 | RGB-D | https://github.com/felixendres/rgbdslam_v2 |
Elastic Fusion | RGB-D | https://github.com/mp3guy/ElasticFusion |
OKVIS | 多目+IMU | https://github.com/ethz-asl/okvis |
ROVIO | 單目+IMU | https://github.com/ethz-asl/rovio |
VINS | 單目+IMU | https://github.com/HKUST-Aerial-Robotics/VINS-Mono |
表2-1 開源SLAM方案匯總
03
視覺SLAM設備選型
3.1 設備選型的重要性
設備選型的重要性不言而喻,畢竟“好模型架不住壞數據”,SLAM模型建立得再好,如果設備采集的數據本身誤差過大,計算結果必定也不夠理想。先以VINS項目為例,根據論文內容他們的設備型號和具體信息如下。
相機模塊:單目相機,型號為MatrixVision的mvBlueFOX-MLC200w,具有全局快門;cmos型號為MT9V034,單色,分辨率為752X480,幀率20Hz。
IMU:該模塊使用的是大疆的集成飛控模塊A3的內置IMU模塊,芯片型號為ADXL278和ADXRS290(都為工業級IMU芯片);可以確定A3內置對IMU的校準去躁等處理算法。
圖3-1 VINS中設備型號
由此看來VINS選用的硬件是具有一定要求的,其采集數據的精度也對SLAM算法最終的效果產生正向作用。
3.2 設備類型選擇
以RGBD相機為例,很多基于結構光或者ToF方案的深度攝像頭在室外表現不佳,主要原因是室外自然光的影響。個人初步傾向于選用雙目或者RGBD(雙目某些情況下可視為RGBD)+IMU的方案,主要理由如下:
1)雙目/RGBD+IMU的硬件,可在此基礎上嘗試基于單目/雙目/RGBD/單目+IMU/雙目+IMU等多種開源SLAM方案;反之單目+IMU的設備對開源方案的限制較大(只能是單目/單目+IMU)。
INDEMIND雙目慣性模組(點擊原文鏈接了解詳情)
2)單目SLAM在建圖方面,尤其是深度估計方面,對場景適應性不好且精度較差。雙目/RGBD因為可以計算得到深度,在建圖方面相對具有優勢,更容易建立“稠密”地圖。
3)SLAM定位實現中,基于單目的方案其計算量也要比基于雙目/RGBD要大,且因為引入了三角測量部分,對于環境適應性較差。
所以在選型方面,可主要聚焦在雙目/RGBD類型;同時為了加快開發進程,可選擇類似INDEMIND雙目慣性模組提供開發SDK等工具的產品,可以省去對于相機的標定、數據同步等開發工作。
審核編輯 :李倩
-
傳感器
+關注
關注
2552文章
51353瀏覽量
755609 -
機器人
+關注
關注
211文章
28607瀏覽量
207884 -
SLAM
+關注
關注
23文章
426瀏覽量
31890
原文標題:干貨丨視覺SLAM開源方案匯總及設備選型建議
文章出處:【微信號:gh_c87a2bc99401,微信公眾號:INDEMIND】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論