SLAM的前世今生 終於有人說清楚了 | 硬創公開課

from: http://www.leiphone.com/news/201605/5etiwlnkWnx7x0zb.html


今年8月,雷鋒網(搜索“雷鋒網”公衆號關注)將在深圳舉辦“全球人工智能與機器人創新大會”(GAIR),在本次大會上,我們將發佈“人工智能與機器人Top25創新企業榜“,速感科技是我們重點關注的公司之一。今天,我們邀請到了速感科技CTO張一茗,爲大家揭祕SLAM技術的前世今生。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

張一茗。速感科技CTO。畢業於北京航空航天大學,師從中國慣性技術領域的著名專家馮培德院士,多年組合導航定位系統研究經驗。熱愛技術和研發,摘得過許多諸如Intel iot創客馬拉松、清華創客馬拉松等創客比賽第一名。速感科技經過多年曆練,發展出一套以視覺SLAM爲核心,集探索、導航、定位、避障、路徑規劃爲一體的成熟化機器人無源導航算法。

SLAM作爲一種基礎技術,從最早的軍事用途(核潛艇海底定位就有了SLAM的雛形)到今天,已經逐步走入人們的視野,過去幾年掃地機器人的盛行讓它名聲大噪,近期基於三維視覺的VSLAM又讓它越來越顯主流,許多人不得不關注它,但根據雷鋒網的調查,瞭解它並能真正把它說清楚的國內大牛並不多,今天,我們請來了速感科技的CTO,張一茗,從SLAM的前世今生開始,徹底掃清我們心中的疑惑。

▌SLAM的前世

我之前從本科到研究生,一直在導航與定位領域學習,一開始偏重於高精度的慣性導航、衛星導航、星光制導及其組合導航。出於對實現無源導航的執念,我慢慢開始研究視覺導航中的SLAM方向,並與傳統的慣性器件做組合,實現獨立設備的自主導航定位。

定位、定向、測速、授時是人們惆悵千年都未能完全解決的問題,最早的時候,古人只能靠夜觀天象和司南來做簡單的定向。直至元代,出於對定位的需求,才華橫溢的中國人發明了令人歎爲觀止的牽星術,用牽星板測量星星實現緯度估計。

1964年美國投入使用GPS,突然就打破了大家的遊戲規則。軍用的P碼可以達到1-2米級精度,開放給大衆使用的CA碼也能夠實現5-10米級的精度。

後來大家一方面爲了突破P碼封鎖,另一方面爲了追求更高的定位定姿精度,想出了很多十分具有創意的想法來挺升GPS的精度。利用RTK的實時相位差分技術,甚至能實現釐米的定位精度,基本上解決了室外的定位和定姿問題。

但是室內這個問題就難辦多了,爲了實現室內的定位定姿,一大批技術不斷涌現,其中,SLAM技術逐漸脫穎而出。SLAM是一個十分交叉學科的領域,我先從它的傳感器講起。

▌離不開這兩類傳感器

目前用在SLAM上的Sensor主要分兩大類,激光雷達和攝像頭。(待會兒發的部分素材摘自官網、論文、專利,侵刪)。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這裏面列舉了一些常見的雷達和各種深度攝像頭。激光雷達有單線多線之分,角分辨率及精度也各有千秋。SICK、velodyne、Hokuyo以及國內的北醒光學、Slamtech是比較有名的激光雷達廠商。他們可以作爲SLAM的一種輸入形式。

這個小視頻裏展示的就是一種簡單的2D SLAM。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這個小視頻是賓大的教授kumar做的特別有名的一個demo,是在無人機上利用二維激光雷達做的SLAM。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

而VSLAM則主要用攝像頭來實現,攝像頭品種繁多,主要分爲單目、雙目、單目結構光、雙目結構光、ToF幾大類。他們的核心都是獲取RGB和depth map(深度信息)。簡單的單目和雙目(Zed、leapmotion)我這裏不多做解釋,我主要解釋一下結構光和ToF。

▌最近流行的結構光和TOF

結構光原理的深度攝像機通常具有激光投射器、光學衍射元件(DOE)、紅外攝像頭三大核心器件。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這個圖(下圖)摘自primesense的專利。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

可以看到primesense的doe是由兩部分組成的,一個是擴散片,一個是衍射片。先通過擴散成一個區域的隨機散斑,然後複製成九份,投射到了被攝物體上。根據紅外攝像頭捕捉到的紅外散斑,PS1080這個芯片就可以快速解算出各個點的深度信息。

這兒還有兩款結構光原理的攝像頭。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

第一頁它是由兩幅十分規律的散斑組成,最後同時被紅外相機獲得,精度相對較高。但據說DOE成本也比較高。

還有一種比較獨特的方案(最後一幅圖),它採用mems微鏡的方式,類似DLP投影儀,將激光器進行調頻,通過微鏡反射出去,並快速改變微鏡姿態,進行行列掃描,實現結構光的投射。(產自ST,ST經常做出一些比較炫的黑科技)。

ToF(time of flight)也是一種很有前景的深度獲取方法。

傳感器發出經調製的近紅外光,遇物體後反射,傳感器通過計算光線發射和反射時間差或相位差,來換算被拍攝景物的距離,以產生深度信息。類似於雷達,或者想象一下蝙蝠,softkinetic的DS325採用的就是ToF方案(TI設計的),但是它的接收器微觀結構比較特殊,有2個或者更多快門,測ps級別的時間差,但它的單位像素尺寸通常在100um的尺寸,所以目前分辨率不高。以後也會有不錯的前景,但我覺得並不是顛覆性的。

好,那在有了深度圖之後呢,SLAM算法就開始工作了,由於Sensor和需求的不同,SLAM的呈現形式略有差異。大致可以分爲激光SLAM(也分2D和3D)和視覺SLAM(也分Sparse、semiDense、Dense)兩類,但其主要思路大同小異。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這個是Sparse(稀疏)的

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這個偏Dense(密集)的

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

▌SLAM算法實現的4要素

SLAM算法在實現的時候主要要考慮以下4個方面吧:

1. 地圖表示問題,比如dense和sparse都是它的不同表達方式,這個需要根據實際場景需求去抉擇

2. 信息感知問題,需要考慮如何全面的感知這個環境,RGBD攝像頭FOV通常比較小,但激光雷達比較大

3. 數據關聯問題,不同的sensor的數據類型、時間戳、座標系表達方式各有不同,需要統一處理

4. 定位與構圖問題,就是指怎麼實現位姿估計和建模,這裏面涉及到很多數學問題,物理模型建立,狀態估計和優化

其他的還有迴環檢測問題,探索問題(exploration),以及綁架問題(kidnapping)。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這個是一個比較有名的SLAM算法,這個迴環檢測就很漂亮。但這個調用了cuda,gpu對運算能力要求挺高,效果看起來比較炫。

▌以VSLAM舉個栗子

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

我大概講一種比較流行的VSLAM方法框架。

整個SLAM大概可以分爲前端和後端,前端相當於VO(視覺里程計),研究幀與幀之間變換關係。首先提取每幀圖像特徵點,利用相鄰幀圖像,進行特徵點匹配,然後利用RANSAC去除大噪聲,然後進行匹配,得到一個pose信息(位置和姿態),同時可以利用IMU(Inertial measurement unit慣性測量單元)提供的姿態信息進行濾波融合

後端則主要是對前端出結果進行優化,利用濾波理論(EKF、UKF、PF)、或者優化理論TORO、G2O進行樹或者圖的優化。最終得到最優的位姿估計。

後端這邊難點比較多,涉及到的數學知識也比較多,總的來說大家已經慢慢拋棄傳統的濾波理論走向圖優化去了。

因爲基於濾波的理論,濾波器穩度增長太快,這對於需要頻繁求逆的EKF(擴展卡爾曼濾波器),PF壓力很大。而基於圖的SLAM,通常以keyframe(關鍵幀)爲基礎,建立多個節點和節點之間的相對變換關係,比如仿射變換矩陣,並不斷地進行關鍵節點的維護,保證圖的容量,在保證精度的同時,降低了計算量。

列舉幾個目前比較有名的SLAM算法:PTAM,MonoSLAM, ORB-SLAM,RGBD-SLAM,RTAB-SLAM,LSD-SLAM。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

所以大家如果想學習SLAM的話,各個高校提高的素材是很多的,比如賓大、MIT、ETH、香港科技大學、帝國理工等等都有比較好的代表作品,還有一個比較有前景的就是三維的機器視覺,普林斯頓大學的肖劍雄教授結合SLAM和Deep Learning做一些三維物體的分類和識別, 實現一個對場景深度理解的機器人感知引擎。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

http://robots.princeton.edu/talks/2016_MIT/RobotPerception.pdf  這是他們的展示。

總的來說,SLAM技術從最早的軍事用途(核潛艇海底定位就有了SLAM的雛形)到今天,已經逐步走入人們的視野,掃地機器人的盛行更是讓它名聲大噪。同時基於三維視覺的VSLAM越來越顯主流。在地面/空中機器人、VR/AR/MR、汽車/AGV自動駕駛等領域,都會得到深入的發展,同時也會出現越來越多的細分市場等待挖掘。

SLAM的前世今生    終於有人說清楚了  | 硬創公開課

這個是occipital團隊出的一個產品,是個很有意思的應用,國內賣4000+,大概一個月1000出貨量吧(雖然不是很多,但是效果不錯,pad可玩)虛擬家居、無人飛行/駕駛、虛擬試衣、3D打印、刑偵現場記錄、沉浸式遊戲、增強現實、商場推送、設計輔助、地震救援、工業流水線、GIS採集等等,都等待着VSLAM技術一展宏圖

▌SLAM的今生——還存在着問題

多傳感器融合、優化數據關聯與迴環檢測、與前端異構處理器集成、提升魯棒性和重定位精度都是SLAM技術接下來的發展方向,但這些都會隨着消費刺激和產業鏈的發展逐步解決。就像手機中的陀螺儀一樣,在不久的將來,也會飛入尋常百姓家,改變人類的生活。

不過說實話,SLAM在全面進入消費級市場的過程中,也面對着一些阻力和難題。比如Sensor精度不高、計算量大、Sensor應用場景不具有普適性等等問題。

多傳感器融合、優化數據關聯與迴環檢測、與前端異構處理器集成、提升魯棒性和重定位精度都是SLAM技術接下來的發展方向,但這些都會隨着消費刺激和產業鏈的發展逐步解決。就像手機中的陀螺儀一樣,在不久的將來,也會飛入尋常百姓家,改變人類的生活。

(激光雷達和攝像頭兩種 SLAM 方式各有什麼優缺點呢,有沒有一種綜合的方式互補各自的缺點的呢?)

激光雷達優點是可視範圍廣,但是缺點性價比低,低成本的雷達角分辨率不夠高,影響到建模精度。vSLAM的話缺點就是FOV通常不大,50-60degree,這樣高速旋轉時就容易丟,解決方案有的,我們公司就在做vSLAM跟雷達還有IMU的組合。

(請問目前基於視覺的SLAM的計算量有多大?嵌入式系統上如果要做到實時30fps,是不是隻有Nvidia的芯片(支持cuda)纔可以?)

第一個問題,雖然基於視覺的SLAM計算量相對較大,但在嵌入式系統上是可以跑起來的,Sparse的SLAM可以達到30-50hz(也不需要GPU和Cuda),如果dense的話就比較消耗資源,根據點雲還有三角化密度可調,10-20hz也是沒有問題。

並不一定要用cuda,一些用到cuda和GPU的算法主要是用來加速SIFT、ICP,以及後期三角化和mesh的過程,即使不用cuda可以採用其他的特徵點提取和匹配策略也是可以的。

▌最後一個問題

(今年8月,雷鋒網(搜索“雷鋒網”公衆號關注)將在深圳舉辦“全球人工智能與機器人創新大會”(簡稱:GAIR)。想了解下,您對機器人的未來趨勢怎麼看?)

這個問題就比較大了。

機器人產業是個很大的Ecosystem,短時間來講,可能產業鏈不夠完整,消費級市場缺乏爆點爆款。雖然大家都在談論做機器人,但是好多公司並沒有解決用戶痛點,也沒有爲機器人產業鏈創造什麼價值。

但是大家可以看到, 大批缺乏特色和積澱的機器人公司正在被淘汰,行業格局越來越清晰,分工逐漸完善,一大批細分市場成長起來。

從機器人的感知部分來說,傳感器性能提升、前端處理(目前的sensor前端處理做的太少,給主CPU造成了很大的負擔)、多傳感器融合是一個很大的增長點。

現在人工智能也開始揚頭,深度學習、神經網絡專用的分佈式異構處理器及其協處理器成爲緊急需求,我個人很希望國內有公司能把這塊做好。

也有好多創業公司做底層工藝比如高推重比電機、高能量密度電池、複合材料,他們和機器人產業的對接,也會加速機器人行業的發展。整個機器人生態架構會越來越清晰,從硬件層到算法層到功能層到SDK 再到應用層,每一個細分領域都有公司切入,隨着這些產業節點的完善,能看到機器人行業的前景還是很棒的,相信不久之後就會迎來堪比互聯網的指數式增長!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章