對於人類來說眼睛是獲取外界信息的主要來源。通過眼睛我們不僅可以看到五彩繽紛的世界,還可以讓我們對事物產生聯繫判斷,規避自然界中相關障礙物。也正是通過眼睛接受到的信息傳遞給大腦,讓我們在這個世界上來去自如。其實對於機器來說也是同理,有了眼睛就能規避很多障礙,穿行於特定空間。比如視覺SLAM用於機器上就相當於人類的眼睛,它可以從環境中獲取海量的、富於冗餘的紋理信息,擁有超強的場景辨識能力。
現在我們就來聊一聊,相當於人類眼睛的視覺SLAM到底是什麼?
視覺SLAM主要是基於相機來完成環境的感知工作,相對而言,相機成本較低,容易放到產品硬體上,且圖像信息豐富,因此視覺SLAM也備受關注。
目前,視覺SLAM可分為單目、雙目(多目)、RGBD這三類,另還有魚眼、全景等特殊相機,但目前在研究和產品中還屬於少數,此外,結合慣性測量器件(Inertial Measurement Unit,IMU)的視覺SLAM也是現在研究熱點之一。從實現難度上來說,大致將這三類方法排序為:單目視覺>雙目視覺>RGBD。
單目相機SLAM簡稱MonoSLAM,僅用一支攝像頭就能完成SLAM。最大的優點是傳感器簡單且成本低廉,但同時也有個大問題,就是不能確切的得到深度。
一方面是由於絕對深度未知,單目SLAM不能得到機器人運動軌跡及地圖的真實大小,如果把軌跡和房間同時放大兩倍,單目看到的圖像是一樣的,因此,單目SLAM只能估計一個相對深度。另一方面,單目相機無法依靠一張圖像獲得圖像中物體離自己的相對距離。為了估計這個相對深度,單目SLAM要靠運動中的三角測量,來求解相機運動並估計像素的空間位置。即是說,它的軌跡和地圖,只有在相機運動之後才能收斂,如果相機不進行運動時,就無法得知像素的位置。同時,相機運動還不能是純粹的旋轉,這就給單目SLAM的應用帶來了一些麻煩。
而雙目相機與單目不同的是,立體視覺既可以在運動時估計深度,亦可在靜止時估計,不僅消除了單目視覺的許多麻煩,而且相關算法,運用功能絲毫未減。
RGBD相機是2010年左右開始興起的一種相機,它最大的特點是可以通過紅外結構光或TOF原理,直接測出圖像中各像素離相機的距離。
神秘的視覺SLAM是怎麼工作的呢?
大多數視覺SLAM系統的工作方式是通過連續的相機幀,跟蹤設置關鍵點,以三角算法定位其3D位置,同時使用此信息來逼近推測相機自己的姿態。簡單來說,這些系統的目標是繪製與自身位置相關的環境地圖。這個地圖可以用於機器人、無人機等系統在該環境中導航作用。與其他形式的SLAM技術不同,只需一個3D視覺攝像頭,就可以做到這一點。
通過跟蹤攝像頭視頻幀中足夠數量的關鍵點,可以快速了解傳感器的方向和周圍物理環境的結構。所有視覺SLAM系統都在不斷的工作,以使重新投影誤差(Reprojection Error)或投影點與實際點之間的差異最小化,通常是通過一種稱為Bundle Adjustment(BA)的算法解決方案。視覺SLAM系統需要實時操作,這涉及到大量的運算,因此位置數據和映射數據經常分別進行Bundle Adjustment,但同時進行,便於在最終合併之前加快處理速度。
明白了它的工作原理,那視覺SLAM到底有哪些優勢呢?
1、視覺SLAM的優點是它所利用的豐富紋理信息。例如兩塊尺寸相同內容卻不同的廣告牌,基於點雲的雷射SLAM算法無法區別他們,而視覺SLAM則可以輕易分辨。這帶來了重定位、場景分類上無可比擬的巨大優勢。
2、視覺信息可以較為容易的被用來跟蹤和預測場景中的動態目標,如行人、車輛等,對於在複雜動態場景中的應用這是至關重要的。
3、視覺的投影模型理論上可以讓無限遠處的物體都進入視覺畫面中,在合理的配置下(如長基線的雙目相機)可以進行很大尺度場景的定位與地圖構建。
視覺SLAM這麼厲害,那它目前在科技領域的發展狀況如何?
追溯歷史,對於定位、定向等需求人們其實在千年前就有了,最早時期,古人提出了夜觀天象,基於遙遠恆星的方位推斷自身所處的位置,進而演變出一門博大精深的學科「牽星術」,用牽星板測量星星實現緯度估計。直到1964年,美國建立了全球定位系統GPS,利用RTK的實時相位差分技術,甚至能實現釐米的定位精度,基本上解決了室外的定位問題。但針對室內定位就較為複雜,為了實現室內的定位,當時湧現出了一大批技術,而SLAM技術就在那時脫穎而出,很多專家學者也針對SLAM技術不斷提出新的算法與研究。
2007年A.J.Davison提出的MonoSLAM是第一個實時的單目視覺SLAM系統。
特點:擴展卡爾曼濾波為後端,追蹤前端非常稀疏的特徵點。
意義:之前的SLAM系統基本不能在線運行,只能靠機器人攜帶相機採集數據,再離線的定位和建圖。現在看來,應用場景窄,已經停止對其開發。
同年推出PTAM (單目 -非線性優化)實現了跟蹤與建圖過程的並行化;第一個使用非線性優化,而不是使用傳統的濾波器作為後端的方案。引入了關鍵幀機制,不必精細的處理每幅圖像,而是把幾個關鍵圖像串起來,然後優化其軌跡和地圖,在PTAM之後,視覺SLAM轉向以非線性優化為主導的後端。
PTAM同時是一個增強現實軟體,演示了炫酷的AR效果。根據PTAM估計的相機位姿,我們可以在一個虛擬的平面上放置虛擬物體,看起來就跟真實的場景中一樣。
2015年推出ORB-SLAM(單目為主-特徵點-圖優化)是現代SLAM系統中做得非常完善的系統之一。
為什麼說ORB-SLAM是比較完善的系統之一?
(1)支持單目、雙目、RGB-D三種模式;
(2)整個系統圍繞ORB特徵進行計算,包括視覺裡程計與迴環檢測ORB字典。ORB特徵不像SURF或SIFT費時,可在CPU上實時計算;相比Harris等簡單角點特徵,又具有良好的旋轉和縮放不變性;ORB提供描述子,使在大範圍運動時能夠迴環檢測和重定位。
(3)ORB的迴環檢測是它的亮點,優秀的迴環檢測算法保證了ORB-SLAM有效的防止累計誤差,並且在丟失後還能迅速找回。為此,ORB-SLAM在運行前需要加載一個很大的ORB字典文件。
(4)ORB創新使用了3個線程完成了SLAM:實時跟蹤特徵點的Tracking線程,局部Bundle Adjustment的優化線程(俗稱小圖),全局Pose Graph的迴環檢測與線性優化(俗稱大圖。)
Tracking線程:對每幅新來的圖像提取ORB特徵點,並與最近的關鍵幀進行比較,計算特徵點的位置並粗略的估計相機位姿。
小圖線程:求解一個Bundle Adjustment問題,包括局部空間內的特徵點與相機位姿,負責求解更精細的相機位姿與特徵點空間位置。前面的這兩個線程完成了比較好的視覺裡程計。
大圖線程:對全局的地圖與關鍵幀進行迴環檢測,消除累積誤差。由於全局中地圖點太多了,所以優化不包括地圖點,只有相機位姿組成的位姿圖。
SLAM技術目前應用於哪些行業?
SLAM技術目前主要用於解決機器人、無人機等在未知環境運動時的定位和地圖構建問題。先已入侵了多個行業,包括機器人、無人駕駛、無人機、AR/VR以及AGV等多領域。
在機器人定位導航領域,SLAM可以輔助機器人執行路徑規劃、自主探索、導航等任務。國內的科沃斯、塔米以及新晉品牌嵐豹都採用了SLAM結合雷射雷達或者攝像頭的方法,讓掃地機高效繪製室內地圖,智能分析和規劃掃地環境,從而成功讓自己步入了智能導航的陣列。
在無人駕駛領域,可以使用SLAM提供視覺裡程計功能,然後跟其他的定位方式融合。從而滿足無人駕駛精準定位的需求。例如,應用了基於雷射雷達技術Google無人駕駛車以及牛津大學MobileRoboticsGroup11年改裝的無人駕駛汽車野貓(Wildcat)均已成功路測。
在無人機領域,可以使用SLAM構建局部地圖,輔助無人機進行自主避障、路徑規劃。曾經刷爆美國朋友圈的Hovercamera無人機,就應用到了SLAM技術
隨著SLAM技術重要性的凸顯,國內越來越多的企業紛紛投入SLAM技術的研發中,在這些企業當中除了一些移動機器人廠商作為自用研發,也不乏一些有科研實力的企業,專門針對無人機教學研究這塊開發出基於視覺SLAM的教學應用平臺。平臺不僅集無人機、無人車、雙目視覺、機載AI視覺處理板卡於一體,形成全套的無人平臺控制、通訊鏈路、視覺圖像採集、圖像識別、三維重建、定位解算等軟體算法解決方案。而且具備立體視覺、運動估計、稠密重建、SLAM導航、路徑規劃、自主避礙等功能。還可提供全套的學科教學課程以及示例算法等,幫助老師快速展開相關課程設計,進行實際教學應用階段。基於視覺開發的教研平臺,硬體完善、功能齊全、開發環境完整、全系統全功能的開發測試環境,幫助各科研團隊更專注於slam導航避障算法研究。後續所開發出的這些教育應用平臺也將對上述文章中提到的ORB-SLAM,和目前比較熱門的VINS,ROVIO等SLAM算法進行試驗,屆時平臺將提供以上SLAM框架的實例,降低學校教師或學生學習SLAM的門檻。
SLAM技術將賦予為機器人、無人機和智能體前所未有的行動能力。作為當前SLAM框架的主要類型,視覺SLAM必將在相互競爭和融合中發展,必將帶來無人技術和人工智慧技術的真正革命。