當(dāng)今科技發(fā)展速度飛快,想讓用戶在AR/VR、機(jī)器人、無人機(jī)、無人駕駛領(lǐng)域體驗(yàn)加強(qiáng),還是需要更多前沿技術(shù)做支持,SLAM就是其中之一。實(shí)際上,有人就曾打比方,若是手機(jī)離開了WIFI和數(shù)據(jù)網(wǎng)絡(luò),就像無人車和機(jī)器人,離開了SLAM一樣。
什么是SLAM
SLAM的英文全稱是 Simultaneous Localization and Mapping,中文稱作「同時(shí)定位與地圖創(chuàng)建」。
SLAM試圖解決這樣的問題:一個機(jī)器人在未知的環(huán)境中運(yùn)動,如何通過對環(huán)境的觀測確定自身的運(yùn)動軌跡,同時(shí)構(gòu)建出環(huán)境的地圖。SLAM技術(shù)正是為了實(shí)現(xiàn)這個目標(biāo)涉及到的諸多技術(shù)的總和。
SLAM通常包括如下幾個部分,特征提取,數(shù)據(jù)關(guān)聯(lián),狀態(tài)估計(jì),狀態(tài)更新以及特征更新等。
我們引用知乎上的一個解釋把它翻譯成大白話,就是:
當(dāng)你來到一個陌生的環(huán)境時(shí),為了迅速熟悉環(huán)境并完成自己的任務(wù)(比如找飯館,找旅館),你應(yīng)當(dāng)做以下事情:
a.用眼睛觀察周圍地標(biāo)如建筑、大樹、花壇等,并記住他們的特征(特征提?。?/p>
b.在自己的腦海中,根據(jù)雙目獲得的信息,把特征地標(biāo)在三維地圖中重建出來(三維重建)
c.當(dāng)自己在行走時(shí),不斷獲取新的特征地標(biāo),并且校正自己頭腦中的地圖模型(bundle adjustment or EKF)
d.根據(jù)自己前一段時(shí)間行走獲得的特征地標(biāo),確定自己的位置(trajectory)
e.當(dāng)無意中走了很長一段路的時(shí)候,和腦海中的以往地標(biāo)進(jìn)行匹配,看一看是否走回了原路(loop-closure detection)。實(shí)際這一步可有可無。
以上五步是同時(shí)進(jìn)行的,因此是simultaneous localization and mapping.
傳感器與視覺SLAM框架
智能機(jī)器人技術(shù)在世界范圍內(nèi)得到了大力發(fā)展。人們致力于把機(jī)器人用于實(shí)際場景:從室內(nèi)的移動機(jī)器人,到野外的自動駕駛汽車、空中的無人機(jī)、水下環(huán)境的探測機(jī)器人等等,均得到了廣泛的關(guān)注。
沒有準(zhǔn)確的定位與地圖,掃地機(jī)就無法在房間自主地移動,只能隨機(jī)亂碰;家用機(jī)器人就無法按照指令準(zhǔn)確到達(dá)某個房間。此外,在虛擬現(xiàn)實(shí)(Virtual Reality)和增強(qiáng)現(xiàn)實(shí)技術(shù)(Argument Reality)中,沒有SLAM提供的定位,用戶就無法在場景中漫游。在這幾個應(yīng)用領(lǐng)域中,人們需要SLAM向應(yīng)用層提供空間定位的信息,并利用SLAM的地圖完成地圖的構(gòu)建或場景的生成。
當(dāng)我們談?wù)揝LAM時(shí),最先問到的就是傳感器。SLAM的實(shí)現(xiàn)方式與難度和傳感器的形式與安裝方式密切相關(guān)。傳感器分為激光和視覺兩大類,視覺下面又分三小方向。下面就帶你認(rèn)識這個龐大家族中每個成員的特性。
1. 傳感器之激光雷達(dá)
激光雷達(dá)是最古老,研究也最多的SLAM傳感器。它們提供機(jī)器人本體與周圍環(huán)境障礙物間的距離信息。常見的激光雷達(dá),例如SICK、Velodyne還有我們國產(chǎn)的rplidar等,都可以拿來做SLAM。激光雷達(dá)能以很高精度測出機(jī)器人周圍障礙點(diǎn)的角度和距離,從而很方便地實(shí)現(xiàn)SLAM、避障等功能。
主流的2D激光傳感器掃描一個平面內(nèi)的障礙物,適用于平面運(yùn)動的機(jī)器人(如掃地機(jī)等)進(jìn)行定位,并建立2D的柵格地圖。這種地圖在機(jī)器人導(dǎo)航中很實(shí)用,因?yàn)槎鄶?shù)機(jī)器人還不能在空中飛行或走上臺階,仍限于地面。在SLAM研究史上,早期SLAM研究幾乎全使用激光傳感器進(jìn)行建圖,且多數(shù)使用濾波器方法,例如卡爾曼濾波器與粒子濾波器等。
激光的優(yōu)點(diǎn)是精度很高,速度快,計(jì)算量也不大,容易做成實(shí)時(shí)SLAM。缺點(diǎn)是價(jià)格昂貴,一臺激光動輒上萬元,會大幅提高一個機(jī)器人的成本。因此激光的研究主要集中于如何降低傳感器的成本上。對應(yīng)于激光的EKF-SLAM理論方面,因?yàn)檠芯枯^早,現(xiàn)在已經(jīng)非常成熟。與此同時(shí),人們也對EKF-SLAM的缺點(diǎn)也有較清楚的認(rèn)識,例如不易表示回環(huán)、線性化誤差嚴(yán)重、必須維護(hù)路標(biāo)點(diǎn)的協(xié)方差矩陣,導(dǎo)致一定的空間與時(shí)間的開銷,等等。
2.、傳感器之視覺SLAM
視覺SLAM是21世紀(jì)SLAM研究熱點(diǎn)之一,一方面是因?yàn)橐曈X十分直觀,不免令人覺得:為何人能通過眼睛認(rèn)路,機(jī)器人就不行呢?另一方面,由于CPU、GPU處理速度的增長,使得許多以前被認(rèn)為無法實(shí)時(shí)化的視覺算法,得以在10 Hz以上的速度運(yùn)行。硬件的提高也促進(jìn)了視覺SLAM的發(fā)展。
以傳感器而論,視覺SLAM研究主要分為三大類:單目、雙目(或多目)、RGBD。其余還有魚眼、全景等特殊相機(jī),但是在研究和產(chǎn)品中都屬于少數(shù)。此外,結(jié)合慣性測量器件(Inertial Measurement Unit,IMU)的視覺SLAM也是現(xiàn)在研究熱點(diǎn)之一。就實(shí)現(xiàn)難度而言,我們可以大致將這三類方法排序?yàn)椋簡文恳曈X>雙目視覺>RGBD。
單目相機(jī)SLAM簡稱MonoSLAM,即只用一支攝像頭就可以完成SLAM。這樣做的好處是傳感器特別的簡單、成本特別的低,所以單目SLAM非常受研究者關(guān)注。相比別的視覺傳感器,單目有個最大的問題,就是沒法確切地得到深度。這是一把雙刃劍。
一方面,由于絕對深度未知,單目SLAM沒法得到機(jī)器人運(yùn)動軌跡以及地圖的真實(shí)大小。直觀地說,如果把軌跡和房間同時(shí)放大兩倍,單目看到的像是一樣的。因此,單目SLAM只能估計(jì)一個相對深度,在相似變換空間Sim(3)中求解,而非傳統(tǒng)的歐氏空間SE(3)。如果我們必須要在SE(3)中求解,則需要用一些外部的手段,例如GPS、IMU等傳感器,確定軌跡與地圖的尺度(Scale)。
另一方面,單目相機(jī)無法依靠一張圖像獲得圖像中物體離自己的相對距離。為了估計(jì)這個相對深度,單目SLAM要靠運(yùn)動中的三角測量,來求解相機(jī)運(yùn)動并估計(jì)像素的空間位置。即是說,它的軌跡和地圖,只有在相機(jī)運(yùn)動之后才能收斂,如果相機(jī)不進(jìn)行運(yùn)動時(shí),就無法得知像素的位置。同時(shí),相機(jī)運(yùn)動還不能是純粹的旋轉(zhuǎn),這就給單目SLAM的應(yīng)用帶來了一些麻煩,好在日常使用SLAM時(shí),相機(jī)都會發(fā)生旋轉(zhuǎn)和平移。不過,無法確定深度同時(shí)也有一個好處:它使得單目SLAM不受環(huán)境大小的影響,因此既可以用于室內(nèi),又可以用于室外。
相比于單目,雙目相機(jī)通過多個相機(jī)之間的基線,估計(jì)空間點(diǎn)的位置。與單目不同的是,立體視覺既可以在運(yùn)動時(shí)估計(jì)深度,亦可在靜止時(shí)估計(jì),消除了單目視覺的許多麻煩。不過,雙目或多目相機(jī)配置與標(biāo)定均較為復(fù)雜,其深度量程也隨雙目的基線與分辨率限制。通過雙目圖像計(jì)算像素距離,是一件非常消耗計(jì)算量的事情,現(xiàn)在多用FPGA來完成。
RGBD相機(jī)是2010年左右開始興起的一種相機(jī),它最大的特點(diǎn)是可以通過紅外結(jié)構(gòu)光或Time-of-Flight原理,直接測出圖像中各像素離相機(jī)的距離。因此,它比傳統(tǒng)相機(jī)能夠提供更豐富的信息,也不必像單目或雙目那樣費(fèi)時(shí)費(fèi)力地計(jì)算深度。目前常用的RGBD相機(jī)包括Kinect/Kinect V2、Xtion等。不過,現(xiàn)在多數(shù)RGBD相機(jī)還存在測量范圍窄、噪聲大、視野小等諸多問題。出于量程的限制,主要用于室內(nèi)SLAM。
SLAM框架之視覺里程計(jì)
視覺SLAM幾乎都有一個基本的框架 。一個SLAM系統(tǒng)分為四個模塊(除去傳感器數(shù)據(jù)讀?。篤O、后端、建圖、回環(huán)檢測。
Visual Odometry,即視覺里程計(jì)。它估計(jì)兩個時(shí)刻機(jī)器人的相對運(yùn)動(Ego-motion)。在激光SLAM中,我們可以將當(dāng)前的觀測與全局地圖進(jìn)行匹配,用ICP求解相對運(yùn)動。而對于相機(jī),它在歐氏空間里運(yùn)動,我們經(jīng)常需要估計(jì)一個三維空間的變換矩陣——SE3或Sim3(單目情形)。求解這個矩陣是VO的核心問題,而求解的思路,則分為基于特征的思路和不使用特征的直接方法。
特征匹配
基于特征的方法是目前VO的主流方式。對于兩幅圖像,首先提取圖像中的特征,然后根據(jù)兩幅圖的特征匹配,計(jì)算相機(jī)的變換矩陣。最常用的是點(diǎn)特征,例如Harris角點(diǎn)、SIFT、SURF、ORB。如果使用RGBD相機(jī),利用已知深度的特征點(diǎn),就可以直接估計(jì)相機(jī)的運(yùn)動。給定一組特征點(diǎn)以及它們之間的配對關(guān)系,求解相機(jī)的姿態(tài),該問題被稱為PnP問題(Perspective-N-Point)。PnP可以用非線性優(yōu)化來求解,得到兩個幀之間的位置關(guān)系。
不使用特征進(jìn)行VO的方法稱為直接法。它直接把圖像中所有像素寫進(jìn)一個位姿估計(jì)方程,求出幀間相對運(yùn)動。例如,在RGBD SLAM中,可以用ICP(Iterative Closest Point,迭代最近鄰)求解兩個點(diǎn)云之間的變換矩陣。對于單目SLAM,我們可以匹配兩個圖像間的像素,或者像圖像與一個全局的模型相匹配。直接法的典型例子是SVO和LSD-SLAM。它們在單目SLAM中使用直接法,取得了較好的效果。目前看來,直接法比特征VO需要更多的計(jì)算量,而且對相機(jī)的圖像采集速率也有較高的要求。
SLAM框架之后端
在VO估計(jì)幀間運(yùn)動之后,理論上就可以得到機(jī)器人的軌跡了。然而視覺里程計(jì)和普通的里程計(jì)一樣,存在累積誤差的問題(Drift)。直觀地說,在t1和t2時(shí)刻,估計(jì)的轉(zhuǎn)角比真實(shí)轉(zhuǎn)角少1度,那么之后的軌跡就全部少掉了這1度。時(shí)間一長,建出的房間可能由方形變成了多邊形,估計(jì)出的軌跡亦會有嚴(yán)重的漂移。所以在SLAM中,還會把幀間相對運(yùn)動放到一個稱之為后端的程序中進(jìn)行加工處理。
早期的SLAM后端使用濾波器方式。由于那時(shí)還未形成前后端的概念,有時(shí)人們也稱研究濾波器的工作為研究SLAM。SLAM最早的提出者R. Smith等人就把SLAM建構(gòu)成了一個EKF(Extended Kalman Filter,擴(kuò)展卡爾曼濾波)問題。他們按照EKF的形式,把SLAM寫成了一個運(yùn)動方程和觀測方式,以最小化這兩個方程中的噪聲項(xiàng)為目的,使用典型的濾波器思路來解決SLAM問題。
當(dāng)一個幀到達(dá)時(shí),我們能(通過碼盤或IMU)測出該幀與上一幀的相對運(yùn)動,但是存在噪聲,是為運(yùn)動方程。同時(shí),通過傳感器對路標(biāo)的觀測,我們測出了機(jī)器人與路標(biāo)間的位姿關(guān)系,同樣也帶有噪聲,是為觀測方程。通過這兩者信息,我們可以預(yù)測出機(jī)器人在當(dāng)前時(shí)刻的位置。同樣,根據(jù)以往記錄的路標(biāo)點(diǎn),我們又能計(jì)算出一個卡爾曼增益,以補(bǔ)償噪聲的影響。于是,對當(dāng)前幀和路標(biāo)的估計(jì),即是這個預(yù)測與更新的不斷迭代的過程。
21世紀(jì)之后,SLAM研究者開始借鑒SfM(Structure from Motion)問題中的方法,把捆集優(yōu)化(Bundle Adjustment)引入到SLAM中來。優(yōu)化方法和濾波器方法有根本上的不同。它并不是一個迭代的過程,而是考慮過去所有幀中的信息。通過優(yōu)化,把誤差平均分到每一次觀測當(dāng)中。在SLAM中的Bundle Adjustment常常以圖的形式給出,所以研究者亦稱之為圖優(yōu)化方法(Graph Optimization)。圖優(yōu)化可以直觀地表示優(yōu)化問題,可利用稀疏代數(shù)進(jìn)行快速的求解,表達(dá)回環(huán)也十分的方便,因而成為現(xiàn)今視覺SLAM中主流的優(yōu)化方法。
SLAM框架之回環(huán)檢測
回環(huán)檢測,又稱閉環(huán)檢測(Loop closure detection),是指機(jī)器人識別曾到達(dá)場景的能力。如果檢測成功,可以顯著地減小累積誤差?;丨h(huán)檢測實(shí)質(zhì)上是一種檢測觀測數(shù)據(jù)相似性的算法。對于視覺SLAM,多數(shù)系統(tǒng)采用目前較為成熟的詞袋模型(Bag-of-Words, BoW)。詞袋模型把圖像中的視覺特征(SIFT, SURF等)聚類,然后建立詞典,進(jìn)而尋找每個圖中含有哪些“單詞”(word)。也有研究者使用傳統(tǒng)模式識別的方法,把回環(huán)檢測建構(gòu)成一個分類問題,訓(xùn)練分類器進(jìn)行分類。
回環(huán)檢測的難點(diǎn)在于,錯誤的檢測結(jié)果可能使地圖變得很糟糕。這些錯誤分為兩類:1.假陽性(False Positive),又稱感知偏差(Perceptual Aliasing),指事實(shí)上不同的場景被當(dāng)成了同一個;2.假陰性(False Negative),又稱感知變異(Perceptual Variability),指事實(shí)上同一個場景被當(dāng)成了兩個。感知偏差會嚴(yán)重地影響地圖的結(jié)果,通常是希望避免的。一個好的回環(huán)檢測算法應(yīng)該能檢測出盡量多的真實(shí)回環(huán)。研究者常常用準(zhǔn)確率-召回率曲線來評價(jià)一個檢測算法的好壞。
SLAM技術(shù)目前主要應(yīng)用在哪些領(lǐng)域?
目前,SLAM(即時(shí)定位與地圖構(gòu)建)技術(shù)主要被運(yùn)用于無人機(jī)、無人駕駛、機(jī)器人、AR、智能家居等領(lǐng)域,從各應(yīng)用場景入手,促進(jìn)消費(fèi)升級。
機(jī)器人
激光+SLAM是目前機(jī)器人自主定位導(dǎo)航所使用的主流技術(shù)。激光測距相比較于圖像和超聲波測距,具有良好的指向性和高度聚焦性,是目前最可靠、穩(wěn)定的定位技術(shù)。激光雷達(dá)傳感器獲取地圖信息,構(gòu)建地圖,實(shí)現(xiàn)路徑規(guī)劃與導(dǎo)航。
無人駕駛
無人駕駛是近年來較火的話題之一,Google、Uber、百度等企業(yè)都在加速研發(fā)無人駕駛相關(guān)技術(shù),搶占先機(jī)。
隨著城市物聯(lián)網(wǎng)和智能系統(tǒng)的完善,無人駕駛必是大勢所趨。無人駕駛利用激光雷達(dá)傳感器(Velodyne、IBEO等)作為工具,獲取地圖數(shù)據(jù),并構(gòu)建地圖,規(guī)避路程中遇到的障礙物,實(shí)現(xiàn)路徑規(guī)劃。跟SLAM技術(shù)在機(jī)器人領(lǐng)域的應(yīng)用類似,只是相比較于SLAM在機(jī)器人中的應(yīng)用,無人駕駛的雷達(dá)要求和成本要明顯高于機(jī)器人。
無人機(jī)
無人機(jī)在飛行的過程中需要知道哪里有障礙物,該怎么規(guī)避,怎么重新規(guī)劃路線。顯然,這是SLAM技術(shù)的應(yīng)用。但無人機(jī)飛行的范圍較大,所以對精度的要求不高,市面上其他的一些光流、超聲波傳感器可以作為輔助。
AR
AR通過電腦技術(shù),將虛擬的信息應(yīng)用到真實(shí)世界,真實(shí)的環(huán)境和虛擬的物體實(shí)時(shí)地疊加到了同一個畫面或空間同時(shí)存在。這一畫面的實(shí)現(xiàn),離不開SLAM技術(shù)的實(shí)時(shí)定位。雖然在AR行業(yè)有很多可代替技術(shù),但是,SLAM技術(shù)是最理想的定位導(dǎo)航技術(shù)。
相較于SLAM在機(jī)器人、無人駕駛等領(lǐng)域的應(yīng)用,在AR行業(yè)的應(yīng)用則有很多不同點(diǎn)。
1、精度上:AR一般更關(guān)注于局部精度,要求恢復(fù)的相機(jī)運(yùn)動避免出現(xiàn)漂移、抖動,這樣疊加的虛擬物體才能看起來與現(xiàn)實(shí)場景真實(shí)地融合在一起。但在機(jī)器人和無人駕駛領(lǐng)域則一般更關(guān)注全局精度,需要恢復(fù)的整條運(yùn)動軌跡誤差累積不能太大,循環(huán)回路要能閉合,而在某個局部的漂移、 抖動等問題往往對機(jī)器人應(yīng)用來說影響不大。
2、效率上:AR需要在有限的計(jì)算資源下實(shí)時(shí)求解,人眼的刷新率為24幀,所以AR的計(jì)算效率通常需要到達(dá)30幀以上; 機(jī)器人本身運(yùn)動就很慢,可以把幀率降低,所以對算法效率的要求相對較低。
3、配置上:AR對硬件的體積、功率、成本等問題比機(jī)器人更敏感,比如機(jī)器人上可以配置魚眼、雙目或深度攝像頭、高性能CPU等硬件來降低SLAM的難度,而AR應(yīng)用更傾向于采用更為高效、魯邦的算法達(dá)到需求。
多傳感器融合、優(yōu)化數(shù)據(jù)關(guān)聯(lián)與回環(huán)檢測、與前端異構(gòu)處理器集成、提升魯棒性和重定位精度都是SLAM技術(shù)接下來的發(fā)展方向,但這些都會隨著消費(fèi)刺激和產(chǎn)業(yè)鏈的發(fā)展逐步解決。就像手機(jī)中的陀螺儀一樣,在不久的將來,也會飛入尋常百姓家,改變?nèi)祟惖纳睢?/p>