SLAM(Simultaneous Localization and Mapping)是業界公認視覺領域空間定位技術的前沿方向,中文譯名爲「同步定位與地圖構建」,它主要用於解決機器人在未知環境運動時的定位和地圖構建問題。本次閱面科技資深研究員趙季也將從SLAM方向着手,爲你們展示更深層次的技術乾貨。前端
趙季:閱面科技資深研究員。2012年獲華中科技大學博士學位,2012年至2014年在CMU機器人研究所作博士後。曾在三星研究院從事深度相機、SLAM、人機交互方面的研究。目前專一於空間感知技術的研發。算法
目前科技發展速度飛快,想讓用戶在AR/VR、機器人、無人機、無人駕駛領域體驗增強,仍是須要更多前沿技術作支持,SLAM就是其中之一。實際上,有人就曾打比方,如果手機離開了WIFI和數據網絡,就像無人車和機器人,離開了SLAM同樣。後端
SLAM主要解決的是相機在空間中的定位、以及建立環境的地圖。在當前比較熱門的一些創業方向中,均可以看到它的身影:網絡
在VR/AR方面,根據SLAM獲得地圖和當前視角對疊加虛擬物體作相應渲染,這樣作可使得疊加的虛擬物體看起來比較真實,沒有違和感。app
在無人機領域,可使用SLAM構建局部地圖,輔助無人機進行自主避障、規劃路徑。框架
在無人駕駛方面,可使用SLAM技術提供視覺里程計功能,而後跟其餘的定位方式融合。dom
機器人定位導航方面,SLAM能夠用於生成環境的地圖。基於這個地圖,機器人執行路徑規劃、自主探索、導航等任務。oop
SLAM技術的發展距今已有30餘年的歷史,涉及的技術領域衆多。因爲自己包含許多步驟,每個步驟都可以使用不一樣算法實現,SLAM技術也是機器人和計算機視覺領域的熱門研究方向。性能
SLAM技術大解析學習
SLAM的英文全程是Simultaneous Localization and Mapping,中文稱做「同時定位與地圖建立」。SLAM試圖解決這樣的問題:一個機器人在未知的環境中運動,如何經過對環境的觀測肯定自身的運動軌跡,同時構建出環境的地圖。SLAM技術正是爲了實現這個目標涉及到的諸多技術的總和。
SLAM技術涵蓋的範圍很是廣,按照不一樣的傳感器、應用場景、核心算法,SLAM有不少種分類方法。按照傳感器的不一樣,能夠分爲基於激光雷達的 2D/3D SLAM、基於深度相機的RGBD SLAM、基於視覺傳感器的visual SLAM(如下簡稱vSLAM)、基於視覺傳感器和慣性單元的visual inertial odometry(如下簡稱VIO)。
基於激光雷達的2D SLAM相對成熟,早在2005年,Sebastian Thrun等人的經典著做《機率機器人學》將2D SLAM研究和總結得很是透徹,基本肯定了激光雷達SLAM的框架。目前經常使用的Grid Mapping方法也已經有10餘年的歷史。2016年,Google開源了激光雷達SLAM程序Cartographer,能夠融合IMU信息,統一處理2D與3D SLAM 。目前2D SLAM已經成功地應用於掃地機器人中。
2006年使用激光雷達生成的實驗室地圖
基於深度相機的RGBD SLAM過去幾年也發展迅速。自微軟的Kinect推出以來,掀起了一波RGBD SLAM的研究熱潮,短短几年時間內相繼出現了幾種重要算法,例如KinectFusion、Kintinuous、Voxel Hashing、DynamicFusion等。微軟的Hololens應該集成了RGBD SLAM,在深度傳感器能夠工做的場合,它能夠達到很是好的效果。
視覺傳感器包括單目相機、雙目相機、魚眼相機等。因爲視覺傳感器價格便宜,在室內室外都可以使用,所以vSLAM是研究的一大熱點。早期的vSLAM如monoSLAM更多的是延續機器人領域的濾波方法。如今使用更多的是計算機視覺領域的優化方法,具體來講,是運動恢復結構(structure-from-motion)中的光束法平差(bundle adjustment)。在vSLAM中,按照視覺特徵的提取方式,又能夠分爲特徵法、直接法。當前vSLAM的表明算法有ORB-SLAM、SVO、DSO等。
視覺SLAM
視覺傳感器對於無紋理的區域是沒有辦法工做的。慣性測量單元(IMU)經過內置的陀螺儀和加速度計能夠測量角速度和加速度,進而推算相機的姿態,不過推算的姿態存在累計偏差。視覺傳感器和IMU存在很大的互補性,所以將兩者測量信息進行融合的VIO也是一個研究熱點。按照信息融合方式的不一樣,VIO又能夠分爲基於濾波的方法、基於優化的方法。VIO的表明算法有EKF、MSCKF、preintegration、OKVIS等。Google的Tango平板就實現了效果不錯VIO。
總的來講,相比於基於激光雷達和基於深度相機的SLAM,基於視覺傳感器的vSLAM和VIO還不夠成熟,操做比較難,一般須要融合其餘傳感器或者在一些受控的環境中使用。
Visual SLAM爲何比較難?
咱們經過分析傳感器的測量信息作個定性的分析。激光雷達或者RGBD相機能夠直接獲取環境的點雲。對於點雲中的一個點,它告訴咱們在某個方位和距離上存在一個障礙點。而視覺傳感器獲取的是灰度圖像或者彩色圖像。對於圖像中的一個像素,它只能告訴咱們在某個方位有障礙點、障礙點周圍的表觀(local appearance)如何,但它不能告訴咱們這個障礙點的距離。要想計算該點的距離,須要把相機挪動一個位置再對它觀察一次,而後按照三角測量的原理進行推算。
原理上很清晰,實際作起來並不簡單。首先須要在兩幅圖像中尋找點的對應,這涉及到特徵點的提取和匹配、或者準稠密點之間的匹配。計算機視覺發展到今天,其實還不存在性能和速度上很好知足vSLAM的特徵提取和匹配算法。常見的特徵點提取算法,性能上大體能夠認爲SIFT>SURF>ORB>FAST,效率上能夠認爲FAST>ORB>SURF>SIFT(大於號左邊表明更優。性能主要包括匹配精度、特徵點的數量和空間分佈等)。爲了在性能和效率上取得折中,一般採用FAST或者ORB,只能捨棄性能更好的SIFT、SURF等。
其次,匹配點的圖像座標與空間座標之間的關係是非線性的,例如2D-2D點的對應知足對極幾何、2D-3D點的對應知足PnP約束。這些匹配數量較多,先後兩幀圖像中通常有幾十至數百的匹配。這些匹配會引入衆多約束關係,使得待估計變量的關係錯綜複雜。爲了獲得一個較優的估計,一般須要創建優化問題,總體優化多個變量。提及來這無非是一個非線性最小二乘優化問題,但實現起來並不簡單,由於存在非線性約束、約束數量不少、存在偏差和野值點,而且要將計算時間控制在容許範圍。目前普遍採用關鍵幀技術,而且經過不少方法來控制問題規模、保持問題的稀疏性等。
非線性優化問題的形象圖示。圓餅表明待優化的變量(相機姿態、特徵點的空間座標),杆子表明約束(對線幾何、PnP等)。
前面分析了vSLAM的兩個困難。前者致使了前端的特徵跟蹤不易,後者致使了後端的優化不易。想作出一個高效率、魯棒的vSLAM系統仍是一個很是有挑戰的任務。效率方面,SLAM必須是實時運行的。若是不能作到實時,就不能稱做SLAM。不考慮實時性,採用從運動恢復結構(structure-from-motion)效果會更好。魯棒性方面,一個脆弱的系統會致使用戶體驗不好,功能有限。
使用structure-from-motion對玲瓏塔進行三維重建
vSLAM的核心算法
預備階段,包括傳感器的選型和各類標定。Visual SLAM自PTAM算法以來,框架基本趨於固定。一般包括3個線程,前端tracking線程、後端mapping優化線程、閉環檢測(loop closure)線程。
前端tracking線程主要涉及到:
(1) 特徵的提取、特徵的匹配;
(2) 多視圖幾何的知識,包括對極幾何、PnP、剛體運動、李代數等。
後端優化線程涉及到非線性最小二乘優化,屬於數值優化的內容。閉環檢測線程涉及到地點識別,本質上是圖像檢索問題。對於VIO,還涉及到濾波算法、狀態估計等內容。
將SLAM算法拆解了看,用到的技術是偏傳統的。與當前大熱的深度學習「黑箱模型」不一樣,SLAM的各個環節基本都是白箱,可以解釋得很是清楚。但SLAM算法並非上述各類算法的簡單疊加,而是一個系統工程,裏面有不少tradeoff。若是僅僅跑跑開源程序,沒有什麼核心競爭力。不管是作產品仍是作學術研究,都應當熟悉各類技術,纔能有所創造。
SLAM的將來發展趨勢
VSLAM的發展感受是中規中矩,各個環節在前人的基礎上一點點優化,同時不斷吸取其餘方向的最新成果。短時間內確定會在現有框架下不停地改進。至於長遠一些的趨勢,IEEE TRO 2016有一篇綜述文章Past, present, and future of SLAM: towards the robust-perception age。幾位有聲望的學者在文中對SLAM的趨勢作了很是好的總結。這裏僅就本身感興趣的點提一些我的感想。
新型傳感器的出現會不停地爲SLAM注入活力。若是咱們可以直接獲取高質量的原始信息,SLAM的運算壓力就能夠減輕不少。舉例來講,近幾年在SLAM中逐漸有使用低功耗、高幀率的event camera(又稱 dynamic vision system, DVS)。若是這類傳感器的成本能降下來,會給SLAM的技術格局帶來許多變化。
自從深度學習在諸多領域所向披靡,很多研究者試圖用深度學習中end-to-end的思想重構SLAM的流程。目前有些工做試圖把SLAM的某些環節用深度學習代替。不過這些方法沒有體現出壓倒性優點,傳統的幾何方法依然是主流。在深度學習的熱潮之下,SLAM涉及的各個環節應該會逐漸吸取深度學習的成果,精度和魯棒性也會所以提高。也許未來SLAM的某些環節會總體被深度學習取代,造成一個新的框架。
SLAM本來只關注環境的幾何信息,將來跟語義信息應該有更多的結合。藉助於深度學習技術,當前的物體檢測、語義分割的技術發展很快,能夠從圖像中能夠得到豐富的語義信息。這些語義信息是能夠輔助推斷幾何信息的,例如已知物體的尺寸就是一個重要的幾何線索。