4月11日,智東西創課邀請到速感科技CTO張一茗,就《從0到1了解SLAM》這一主題在智東西旗下「機器人」社群(有入群需求請天驕智小西微信zhidxrobot)開講。本文為本場創課的全程圖文實錄,分為主講+Q&A二部分。全文共計5026字,讀完大概需要15分鐘,你可以掌握:

1、SLAM的定義、發展史;
2、機器人視覺傳感器的演進史;
3、三維深度傳感器的不同技術路線及差異比較;
4、SLAM如何實現,尤其是vSLAM;
5、vSLAM應用在機器人上存在的問題;

關于嘉賓:張一茗,速感科技CTO,畢業于北京航空航天大學,參與總裝備部、火箭軍等多型號慣性及其組合導航定位系統設計,負責慣性/衛星/光學組合導航系統及算法設計,具有豐富的定位導航系統設計經驗。

主講實錄

張一茗:感謝大家的支持,也感謝何總(注:智東西聯合創始人何峰)的邀請,來到這里跟大家分享我在SLAM領域的認識和理解,也歡迎分享后和大家一起探討SLAM技術在機器人行業的應用。

各位千萬別客氣,我先來按照我的思路來跟大家分享以下我對SLAM的理解吧。

SLAM全稱simultaneous localization and mapping大家應該都比較熟悉了,字面可見分為兩大部分:定位、構圖。

定位(嚴格來說是定位、定姿)這個問題幾千年來都是個炒的火熱的問題。定位的場景千差萬別,對精度的要求也越來越苛刻。與此同時,定位也是個細分市場,出于不同場景對于體積、成本、精度、更新頻率需求的差異,衍生了多種多樣的定位方式。比如GPS、慣導、DR、無線電甚至藍牙、wifi等等。GPS具有體積小、米級定位精度、無累計誤差可做差分、可授時等優勢,缺點是要工作在室外,更新頻率低,易受多徑效應等影響。

慣性導航系統具有短時定位精度極高、輸出頻率極高,但是它的高成本、大體積、需初始對準的特性使它不會大規模進入消費類市場。消費級機器人領域,通過DR(Dead reckoning)航位推算方法,能夠用很低成本的編碼器,實現精準的速度控制和短時間的位置朝向估計,但是具有比較大的累計誤差且不能實現重定位。隨著Rangefinder、CMOS、高性能CPU的發展,人們能夠用足夠的算力和存儲,采集足夠的信息,利用場景模型等參數作為先驗信息融入到位置姿態估計中。SLAM這種同時建模與構圖的概念開始成為一個研究熱點。

我這里有一篇論文《1991 Simultaneous map building and localization for an autonomous mobile robot》。()

在1991年的時候,SLAM的開山鼻祖們使用了18個超聲傳感器,利用EKF設計了第一套針對移動機器人的SLAM系統。后來隨著激光雷達的出現,系統能夠更容易的識別2D平面的角點特征,雷達SLAM的實用性上升了一個級別。而后隨著CPU算力的提升,圖像的處理能力越來越強,基于單攝像頭、多攝像頭、深度攝像頭的SLAM研究與應用如雨后春筍般冒出來。

基于視覺影像的SLAM系統體積小、功耗低、可靠性高,在提供準確定位的同時,也能夠建立或稀疏或稠密的地圖,給人無限遐想的空間。十多年來,學術界針對視覺SLAM的研究日新月異,創造了許多優秀的理論。然而到了今天大家也都發現,純視覺的vSLAM依然有它的缺點,比如受光照條件影響大,高動態環境精度下降,對場景復雜度要求高等特點,以Visual-SLAM為基礎的多傳感器融合SLAM成為新的熱點。

2012年美國軍方提出了一個相當宏偉的概念,開展了在GPS服務被干擾、被阻斷,即不能使用GPS服務背景下的高精度定位、導航與授時技術:“全源導航”(ASPN)技術研究,以期在未來對抗條件下的軍事行動中保持、占據精確PNT(Position navigation time)能力的優勢。希望建立一套算法和軟硬件架構兼容10種以上的傳感器。 尤其是最近幾年,microPNT的概念也被軍方炒的越來越火熱。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 目前的導航定位算法大多被迫在完備性與效率之間進行折中和選擇。“全源導航”需要發展新的濾波算法,能夠全面兼容各類導航算法,如高斯、非高斯統計算法,或線性、非線性測量模型算法等;同時,新的導航算法必須滿足真實環境下實時運行的要求。新的導航算法應當能夠處理平臺運動和測量可用性之間產生的時變狀態空間問題,能夠對所有導航測量結果進行統計。因此,在執行任務時,新的導航算法應能夠靈活地對傳感器、敏感器,以及測量量的引入和去除進行調整,從而提供準確和可靠的導航解決方案。

這個概念很難,難在要適用于水下,地下,叢林,郁閉森林,郊區,城市峽谷,建筑室內,開放區域等各種環境、同時還要滿足步行,無人機(所有規格),潛水器,輪式車輛,履帶式車輛,飛機,小型機器人等各種平臺,測量影像,速度,加速度,旋轉速率,時間,位置,海拔高度,方向,相位來實現組合定位導航。

除了2D/3D成像系統以外,他們采用了傾角羅盤,,距離/偽距測距儀,氣壓計,溫度傳感器,方位角速率傳感器,GPS,激光雷達,加速度計,陀螺儀,磁力計,回轉羅盤,計時器,毫米波雷達以及其他雷達,1、2、3軸AOA/LOB/TDOA傳感器,計步器,星敏感器,紅外傳感器,無線局域網(WiFi)/射頻接收機,聲學傳感器等等傳感器。也只有用上這些傳感器,才有可能實現真正全天候、全場景、全平臺的定位導航系統。
這是他們大概的架構,可想而知有多復雜。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 ASPN的項目給了我最大的一個警示就是:不談場景去談定位就是在耍流氓。所以咱們來好好談談針對機器人領域中的vSLAM方案。

vSLAM在機器人上最難的問題我認為是這句話:start as a scientist, end as an eigineer。

Dyson出了一款360deg的omnidirectional的vSLAM掃地機,他們的研發起于21世紀初,做了十多年,才把一個掃地機做的漂亮(受一些客觀條件限制,效果沒有它的外觀那么漂亮)。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 學術界上各種各樣vSLAM算法天花亂墜,可是如果沒有自己的技術積累和工程化經驗,這離實際的產品化差距還是太遠。

對于機器人的vSLAM而言,視覺傳感器在其中舉重若輕。一個好的視覺傳感器就是一個明亮的眼睛。今天咱們按照維度的高低來簡單介紹下:

傳統面陣相機/多目被動式相機采用面陣CMOS作為核心元件,隨著手機行業對于鏡頭的強勁需求,使得整個CMOS、鏡頭制造行業迅猛發展,低成本廉價的鏡頭成為輕而易舉的事情。滿足了機器人行業對于監控、目標識別與分析、跟蹤與定位的需求。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
機器人行業的興起帶火了很多攝像頭公司,如果歸類的話依然脫離不了以下幾類:
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
對于單目結構光:激光投射器通過DOE投射出特征明顯的散斑,被紅外攝像頭捕獲,然后解算出深度信息。圖中可以看到Kinect(采用primesense方案)透射出去的散斑圖,DOE二維光學結構使得激光穿過DOE時,先擴散成偽隨機散斑,然后衍射為9束,形成看似隨機其實略有玄機的散斑。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
然后受投射器功率的影響,單目結構光很難工作在室外。雙目結構光則可以規避這個缺陷當然還有一些其他的結構光
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 這個是hptg提供的pattern圖案,他們設計的一體化投射器模組能夠實現小體積低溫漂移的點陣圖案,他是由兩幅十分規律的散斑組成,最后同時被紅外相機獲得,精度相對較高。

還有一種比較獨特的方案,它采用mems微鏡的方式,類似DLP原理,將激光器進行調頻,通過微鏡反射出去,并快速改變微鏡姿態,進行行列掃描,實現結構光的投射。比如Intel的realsense方案,這種方案可以做到比hptg還要薄的厚度,缺點是信噪比相對較差,動態效果略差一點,也算是體積與性能之間的一種折中。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
ToF(time of flight)也是一種被炒的火熱的深度獲取方法,主要分為脈沖式和相位式兩種。這是一種相位式tof的原理,通過采集四個采樣點的相位,解算時間差,獲得對應pixel的深度信息。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 傳感器發出經調制的近紅外光,遇物體后反射,傳感器通過計算光線發射和反射時間差或相位差,來換算被拍攝景物的距離,以產生深度信息。

相位法可以減輕背景光對于深度提取的影響,但是受這種四個采樣點分時曝光的限制,它對于動態物體的效果要比脈沖式差一些。脈沖式是一種更常見的tof測距方法,從傳統的工業雷達,到現在炒的比較火的面振tof都大量存在它的蹤影。

除了以上結構光、tof和普通相機以外,還有一種有趣的攝像頭叫eventcamera。

他檢測的是變化的像素,大大縮減了輸出的數據量,輕輕松松實現類似光流的算法而且具有極高的輸出頻率。學術界也有人在使用它在做slam,大家可以去搜索相關的論文看看。

這里找到了一個dyson360的一個有趣的vSLAM展示,通過采集全景鏡頭的視頻數據,只有640*480的分辨率,實現了很有趣的vSLAM定位。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
SLAM算法在實現的時候主要要考慮以下4個方面:

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

2. 信息感知問題,需要考慮如何全面的感知這個環境,RGBD攝像頭FOV通常比較小,但激光雷達比較大。我們也做過一個類似dyson的方案,能夠實現很低成本,小體積的機器人定位。

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

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

我們也做過一個類似dyson的方案,能夠實現很低成本,小體積的機器人定位。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 vSLAM里面還要考慮的有回環檢測問題,探索問題(exploration),以及綁架問題(kidnapping)。

vSLAM在算法部分,對數學的基礎要求比較高,對概率統計、最小二乘估計、隨機梯度下降(或者高斯牛頓、LM)、線性系統建模與估計、非線性系統的概念和優化都得有較深的理解,同時也得有一個open的視野,熟練的編程能力,來實現效率更高的算法。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
在團隊配置上,更需要要更種各樣的人,算法工程師、嵌入式工程師、光學工程師、傳感器工程師、算法優化工程師、結構工程師、機電工程師以及豐富的產品測試安排。
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 比如這就是幾周前我們對IMU進行的一系列測試的一部分,受溫漂影響,IMU的輸出會隨著芯片溫度上升零偏發生漂移。這就會給一些絕對的姿態參考造成很大的問題,需要通過溫度試驗摸出imu的噪聲誤差一致性,從而進行有效的補償。

整個SLAM大概可以分為前端和后端,前端做配準,研究不同幀之間的變換關系。

首先提取每幀圖像特征點,利用相鄰幀圖像,進行特征點匹配,然后利用RANSAC去除大噪聲,然后進行ICP匹配,同時可以利用IMU提供的姿態信息進行濾波融。

后端則主要是研究前端出結果中累積誤差的矯正,利用濾波理論(EKF、UKF、PF)、或者優化理論TORO、G2O進行樹或者圖的優化。最終得到最優的位姿估計。當然,其中還要考慮一些閉環檢測問題。

這是我們的傳感器配合上我們6dof Visual Inertial SLAM算法的一個簡單展示。

vSLAM在機器人上的應用最難的就是產品化和成本上的考慮,好在機器人的vSLAM不需要特別高的實時性,也沒有VR、AR令人難受的眩暈效應,不需要將計算速率提的特別高,機器人行業的vSLAM是一個真正短期內看得見的爆發點。

配合低頻的visual解算,100ms內利用imu純積分實現高頻率的vSLAM姿態輸出,基本上可以實現很低jitter的定位定姿。當然這個行業還遠沒有達到成熟的階段,比如依然沒有合適的芯片,沒有覆蓋全場景全天候的解決方案,這也是整個slam行業要繼續解決下去的問題。

時間差不多了,今天大概先分享到這里。

Q&A環節實錄

提問1
劉軍令
目前比較主流使用的slam算法都有哪些?分別都有哪些實際應用中的優勢和局限?

張一茗:目前的開源SLAM方法還是很多很多的,國內有一些研究者整理過一個網站。
//slamcn.org/index.php/%E9%A6%96%E9%A1%B5#.E4.B8.BB.E6.B5.81.E5.BC.80.E6.BA.90SLAM.E6.96.B9.E6.A1.88
一文讓你從0到1了解SLAM,還有機器人vSLAM!|創課
 但是我的看法是,這些算法都是科研成果,是屬于scientist的東西。他們并不能輕松實現產品化,start as a scientist, end as an eigineer,如果沒有自己的算法,別人走過的坑該踩還是要踩,才能真正走向產品化的。

提問2
陳進博
 目前市場中做SLAM的公司很多,如何去識別哪家更有優勢?對于做這一塊的公司,您認為應該怎樣才能突圍而出?

張一茗:我認為識別公司優勢的指標就是成熟度,demo很容易,出產品很難。必須有豐富的產品化經驗以及腳踏實地的扣每一個細節,才能夠突圍而出,勝算體現在一些細節,比如標定設備、標定方法、測試方法、生產線設計等等。

提問3
何瀟
目前主流的ORB-SLAM的關鍵點和優化方向是什么?

張一茗:ORB-SLAM只是開源算法的一種,它構建了一種思路很清晰的vslam方法,前端后端嚴謹,框架清晰,很適合初學者學習,但是我個人認為在產品化的路上他并不是一個特別好的方案。

提問4
林義閩
vslam是否可以用于室外空曠區域?

張一茗:vSLAM在室外是可以用的,但是有一些限制。比如說基于Depth的SLAM在室外是幾乎是沒法用的。因為室外光源太強,很難獲得一個準確的Depth。所以深度圖的這種匹配是完全不起作用。然后,對于基于純視覺SLAM在室外的話,大部分場景是可用的。但是如果說,室外的這種景深太過單調,比如說十分空曠,體現不出層次感的話,他依然是不能夠實現一個很好的定位的。只要室外的場景錯落有致一些,它依然能夠實現一個比較好的精度。

(補充提問):針對第4點的提問,是否可以理解說SLAM主要是運用在室內的而不是室外呢?

張一茗:絕大部分室外場景是可用的,除非特別空曠的一些極端環境。我們測試過我們的算法,沒有問題。

提問5
劉煥云
室內三維重建有沒有推薦的開源算法,剛入門應該從何入手?

張一茗:這個需求跟SLAM領域略有不同,應該是屬于SFM的領域,這個領域開源方法也很多,您可以去SFM領域的paper中搜尋下

提問6
Jennifer
機器視覺領域創業公司和大公司比優勢和劣勢在哪里?速感科技的核心優勢是什么?公司面臨的核心挑戰是?

張一茗:我認為定位這個行業最大的特點就在于,沒有萬能的定位方案,每個應用場景都有不同的需求,大家都是在搜尋一個更大的市場,即使是大公司,也很難做到類似apple這樣的壟斷。對于創業公司,做大公司未來得及做之事,在大公司做起來之前的窗口期搶占對自己有優勢的市場,賺取足夠的利潤并成為新的巨頭,這是我認為創業公司的生存之道 (回答完畢)。

提問7
李海峰
請問SLAM硬件在基于FPGA實現的實踐中能做到多高的深度分辨率和幀率,還有需要多少邏輯單元?

張一茗:slam并不適合用純粹的fpga去實現,因為slam中雖然確實有很多可以并行化的部分,但是同時也有很多串行邏輯運算,我認為比較合適的方案還是arm加其他并行處理器的soc架構。我們目前用一些并行化的dsp去做特征提取,500個特征點可以花幾個ms來完成,而pc上需要20ms。

我們目前用一些并行化的dsp去做特征提取,500個特征點可以花幾個ms來完成,而pc上需要20ms。

提問8
張辰
 基于SLAM的移動機器人,在行進過程中,如何克服周邊環境變化的影響?(比如在倉庫物流應用中,周圍貨物車輛人員的動態變化)

張一茗:這個問題可以通過兩個方面解決,一個是擴大傳感器的視野,比如用大視場角的鏡頭或360deg的雷達,另一方面利用其他傳感器比如慣性、編碼器進行組合,都可以進行周圍環境變化的抑制。

提問9
王佳龍
 想問一下,貴公司宣傳的M-32傳感器定位精度1cm,這個精度指的是RMSE嗎?如果是,groundtruth是通過什么方法得到的?

張一茗:groundtruth采用的是類似vicon的光學方案進行標定的,精度mm級別。1cm的定位精度是指的RMSE,是在室內環境進行的測試。

提問10
吳文欽
張總好。我們在用Tof攝像頭的來做AGV導航。有好的廠家推薦嗎?你們有適合的模組嗎?謝謝

張一茗:Tof模組我們不設計,做Tof的公司很多,最上游的有pmd、ti、epc等等公司,下游的模組公司有很多,可能不太適合在這里廣告,您可以網上多搜尋一下,或者私下溝通一下。