SLAM作為一種基礎(chǔ)技術(shù),從最早的軍事用途(核潛艇海底定位就有了SLAM的雛形)到今天,已經(jīng)逐步走入人們的視野,過去幾年掃地機(jī)器人的盛行讓它名聲大噪,近期基于三維視覺的VSLAM又讓它越來越顯主流。
SLAM的前世
定位、定向、測速、授時是人們惆悵千年都未能完全解決的問題,最早的時候,古人只能靠夜觀天象和司南來做簡單的定向。直至元代,出于對定位的需求,才華橫溢的中國人發(fā)明了令人嘆為觀止的牽星術(shù),用牽星板測量星星實(shí)現(xiàn)緯度估計(jì)。
1964年美國投入使用GPS,突然就打破了大家的游戲規(guī)則。軍用的P碼可以達(dá)到1-2米級精度,開放給大眾使用的CA碼也能夠?qū)崿F(xiàn)5-10米級的精度。
后來大家一方面為了突破P碼封鎖,另一方面為了追求更高的定位定姿精度,想出了很多十分具有創(chuàng)意的想法來挺升GPS的精度。利用RTK的實(shí)時相位差分技術(shù),甚至能實(shí)現(xiàn)厘米的定位精度,基本上解決了室外的定位和定姿問題。
但是室內(nèi)這個問題就難辦多了,為了實(shí)現(xiàn)室內(nèi)的定位定姿,一大批技術(shù)不斷涌現(xiàn),其中,SLAM技術(shù)逐漸脫穎而出。SLAM是一個十分交叉學(xué)科的領(lǐng)域,我先從它的傳感器講起。
離不開這兩類傳感器
目前用在SLAM上的Sensor主要分兩大類,激光雷達(dá)和攝像頭。(待會兒發(fā)的部分素材摘自官網(wǎng)、論文、專利,侵刪)。
這里面列舉了一些常見的雷達(dá)和各種深度攝像頭。激光雷達(dá)有單線多線之分,角分辨率及精度也各有千秋。SICK、velodyne、Hokuyo以及國內(nèi)的北醒光學(xué)、Slamtech是比較有名的激光雷達(dá)廠商。他們可以作為SLAM的一種輸入形式。
這個小視頻是賓大的教授kumar做的特別有名的一個demo,是在無人機(jī)上利用二維激光雷達(dá)做的SLAM。
而VSLAM則主要用攝像頭來實(shí)現(xiàn),攝像頭品種繁多,主要分為單目、雙目、單目結(jié)構(gòu)光、雙目結(jié)構(gòu)光、ToF幾大類。他們的核心都是獲取RGB和depth map(深度信息)。簡單的單目和雙目(Zed、leapmotion)我這里不多做解釋,我主要解釋一下結(jié)構(gòu)光和ToF。
最近流行的結(jié)構(gòu)光和TOF
結(jié)構(gòu)光原理的深度攝像機(jī)通常具有激光投射器、光學(xué)衍射元件(DOE)、紅外攝像頭三大核心器件。
這個圖(下圖)摘自primesense的專利。
可以看到primesense的doe是由兩部分組成的,一個是擴(kuò)散片,一個是衍射片。先通過擴(kuò)散成一個區(qū)域的隨機(jī)散斑,然后復(fù)制成九份,投射到了被攝物體上。根據(jù)紅外攝像頭捕捉到的紅外散斑,PS1080這個芯片就可以快速解算出各個點(diǎn)的深度信息。
這兒還有兩款結(jié)構(gòu)光原理的攝像頭。
第一頁它是由兩幅十分規(guī)律的散斑組成,最后同時被紅外相機(jī)獲得,精度相對較高。但據(jù)說DOE成本也比較高。
還有一種比較獨(dú)特的方案(最后一幅圖),它采用mems微鏡的方式,類似DLP投影儀,將激光器進(jìn)行調(diào)頻,通過微鏡反射出去,并快速改變微鏡姿態(tài),進(jìn)行行列掃描,實(shí)現(xiàn)結(jié)構(gòu)光的投射。(產(chǎn)自ST,ST經(jīng)常做出一些比較炫的黑科技)。
ToF(time of flight)也是一種很有前景的深度獲取方法。
傳感器發(fā)出經(jīng)調(diào)制的近紅外光,遇物體后反射,傳感器通過計(jì)算光線發(fā)射和反射時間差或相位差,來換算被拍攝景物的距離,以產(chǎn)生深度信息。類似于雷達(dá),或者想象一下蝙蝠,softkinetic的DS325采用的就是ToF方案(TI設(shè)計(jì)的),但是它的接收器微觀結(jié)構(gòu)比較特殊,有2個或者更多快門,測ps級別的時間差,但它的單位像素尺寸通常在100um的尺寸,所以目前分辨率不高。以后也會有不錯的前景,但我覺得并不是顛覆性的。
好,那在有了深度圖之后呢,SLAM算法就開始工作了,由于Sensor和需求的不同,SLAM的呈現(xiàn)形式略有差異。大致可以分為激光SLAM(也分2D和3D)和視覺SLAM(也分Sparse、semiDense、Dense)兩類,但其主要思路大同小異。
這個是Sparse(稀疏)的
SLAM算法實(shí)現(xiàn)的4要素
SLAM算法在實(shí)現(xiàn)的時候主要要考慮以下4個方面吧:
1. 地圖表示問題,比如dense和sparse都是它的不同表達(dá)方式,這個需要根據(jù)實(shí)際場景需求去抉擇
2. 信息感知問題,需要考慮如何全面的感知這個環(huán)境,RGBD攝像頭FOV通常比較小,但激光雷達(dá)比較大
3. 數(shù)據(jù)關(guān)聯(lián)問題,不同的sensor的數(shù)據(jù)類型、時間戳、坐標(biāo)系表達(dá)方式各有不同,需要統(tǒng)一處理
4. 定位與構(gòu)圖問題,就是指怎么實(shí)現(xiàn)位姿估計(jì)和建模,這里面涉及到很多數(shù)學(xué)問題,物理模型建立,狀態(tài)估計(jì)和優(yōu)化
其他的還有回環(huán)檢測問題,探索問題(exploration),以及綁架問題(kidnapping)。
這個是一個比較有名的SLAM算法,這個回環(huán)檢測就很漂亮。但這個調(diào)用了cuda,gpu對運(yùn)算能力要求挺高,效果看起來比較炫。
SLAM的今生——還存在著問題
多傳感器融合、優(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>
不過說實(shí)話,SLAM在全面進(jìn)入消費(fèi)級市場的過程中,也面對著一些阻力和難題。比如Sensor精度不高、計(jì)算量大、Sensor應(yīng)用場景不具有普適性等等問題。
多傳感器融合、優(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>
(激光雷達(dá)和攝像頭兩種 SLAM 方式各有什么優(yōu)缺點(diǎn)呢,有沒有一種綜合的方式互補(bǔ)各自的缺點(diǎn)的呢?)
激光雷達(dá)優(yōu)點(diǎn)是可視范圍廣,但是缺點(diǎn)性價比低,低成本的雷達(dá)角分辨率不夠高,影響到建模精度。vSLAM的話缺點(diǎn)就是FOV通常不大,50-60degree,這樣高速旋轉(zhuǎn)時就容易丟,解決方案有的,我們公司就在做vSLAM跟雷達(dá)還有IMU的組合。
(請問目前基于視覺的SLAM的計(jì)算量有多大?嵌入式系統(tǒng)上如果要做到實(shí)時30fps,是不是只有Nvidia的芯片(支持cuda)才可以?)
第一個問題,雖然基于視覺的SLAM計(jì)算量相對較大,但在嵌入式系統(tǒng)上是可以跑起來的,Sparse的SLAM可以達(dá)到30-50hz(也不需要GPU和Cuda),如果dense的話就比較消耗資源,根據(jù)點(diǎn)云還有三角化密度可調(diào),10-20hz也是沒有問題。
并不一定要用cuda,一些用到cuda和GPU的算法主要是用來加速SIFT、ICP,以及后期三角化和mesh的過程,即使不用cuda可以采用其他的特征點(diǎn)提取和匹配策略也是可以的。
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751075 -
SLAM
+關(guān)注
關(guān)注
23文章
415瀏覽量
31758
原文標(biāo)題:【干貨】一文讀懂SLAM技術(shù)前世今生
文章出處:【微信號:robotn,微信公眾號:產(chǎn)業(yè)大視野】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論