1
今年8月,雷鋒網將在深圳舉辦一場盛況空前,且有全球影響力的人工智能與機器人峰會(CCF-GAIR)。屆時雷鋒網將發布“人工智能&機器人Top25創新企業榜”榜單。目前,我們正在拜訪人工智能、機器人領域的相關公司,從中篩選最終入選榜單的公司名單。如果你也想加入我們的榜單之中,請聯系:2020@leiphone.com。

陳士凱:上海思嵐科技有限公司(SLAMTEC)CEO,08年畢業于上海交通大學,畢業后在微軟亞洲研究院(MSRA)實習。后來在英特爾亞太研發有限公司軟件與服務事業部(SSG)擔任軟件工程師,11年進入盛大創新院。之后在RoboPeak一支機器人研發團隊的基礎上創辦了Slamtec。
提到SLAM就會想到SLAMRTEC的思嵐科技是一家提供消費級產品領域的高性能機器人定位導航解決方案及相關核心傳感器的公司。主要產品有低成本360度激光掃描測距雷達(RPLIDAR)、基于激光的模塊化自主定位導航解決方案(SLAMWARE)與適于商業環境的通用型服務機器人平臺(ZEUS)。此前雷鋒網在《做低成本激光雷達的Slamtec,終于說出了自己的真實想法》一文中采訪過的技術宅CEO陳士凱,這次以硬創公開課講師的身份再次出現,為各位帶來了許多關于SLAM技術中涉及地圖描繪還有導航的干貨內容,信息量太大,本文僅供諸位慢慢吸氧,想要獲取更多信息,關注硬創公開課微信號(ycopen)。
機器人描述環境過程主要就是靠地圖,就和人繪制地圖一樣用環境地圖來描述其當前環境信息,并且隨著使用的算法與傳感器差異采用不同的地圖描述形式。

機器人對環境地圖的描述的方式最常見的為柵格地圖(Grid map)或者稱為Occupancy Map。這種地圖看起來和人們所認知的地圖沒啥區別。最早由NASA的Alberto Elfes在1989年提出的,在火星探測車上就用到過,其本質是一張位圖圖片,但其中每個“像素”則表示了實際環境中存在障礙物的概率分布。
一般來說,采用激光雷達、深度攝像頭、超聲波傳感器等可以直接測量距離數據的傳感器進行SLAM時,可以使用該地圖。這種地圖也可以通過距離測量傳感器,超聲波(早期),激光雷達(現在)繪制出來。

另外用在視覺SLAM這塊用的比較多是特征點地圖,這種地圖記錄環境中特征點(或稱為關鍵點)的幾何空間位置。這種地圖相比柵格地圖看起來就不那么直觀了。一般通過如GPS、UWB以及攝像頭配合稀疏方式的vSLAM算法產生,優點是相對數據存儲量和運算量比較小,在最早的SLAM算法中這種地圖多見。

第三種相比會更加直觀,就像衛星地圖一樣。直接將傳感器原始數據通過簡單處理拼接的地圖 ,像這個圖是直接記錄了屋子內天花板畫面的圖像地圖。另外,還有一種相對更加抽象的地圖形式,拓撲地圖,它只記錄所在環境拓撲鏈接關系,這類地圖一般是由前幾類地圖通過相關算法提取得到。
當然,針對具體算法和應用不同,還有很多其他機器人描述環境的地圖表現形式。他們都是為了幫助機器人解決某一系列問題而設計的。總的來說,拓撲地圖是與人類描述世界最接近的一種地圖表達方式,因為它更加抽象,更加能反應所在環境的高層次特點。不過這種地圖一般并不是SLAM算法所直接產生的,而往往是在進行相關的后期應用時才會用到的。比如掃地機器人要進行房間清掃的時候,就會建立這樣的拓撲地圖:

要說特點和優劣,其實要和具體應用有關,不過總得來說,類似衛星地圖這種直接使用傳感器(一般是圖像傳感器)所構建的直接地圖也很少使用,因為它的信息冗余度最大,對于數據存儲是很大的挑戰,此外,機器人要從中提取出有用的數據要耗費一番周折。
而特征點地圖又是另一個極端,雖然數據量少,但是它往往不能反應所在環境的一些必須的信息,比如環境中障礙物的位置。因此這類地圖基本只能用于定位問題。而要讓機器人進行自主壁障和路徑規劃,就必須依賴其他的地圖類型。所以目前其實vSLAM更多解決定位問題,要實現導航,還需要額外配置距離傳感器,如激光雷達、超聲波來完成。
而柵格地圖,或者Occupancy Map恰好是介于其中,一方面它能表示空間環境中的很多特征,機器人可以用它來進行路徑規劃,另一方面,它又不直接記錄傳感器的原始數據,相對實現了空間和時間消耗的最優。因此目前是機器人所廣泛應用的地圖存儲方式。

思嵐科技的SLAMWARE系統內部也采用該地圖方式。
激光雷達和其他雷達設備一樣,某一個時刻只能獲取它所在未知的環境信息。

這就是我們所說的點云,可以看到他只是所在環境中的一個部分。要通過它獲取地圖,就是配套SLAM算法所要進行的核心過程了。這個過程其實比較多,先看一個框圖:

一個完整SLAM和導航系統的主要構架中SLAM核心就3個步驟:第一個部分稱為預處理,也就是對激光雷達原始數據所優化,剔除一些有問題的數據,或者進行濾波。
隨后,要進行一個很關鍵的部分,叫做匹配。也就是說把當前這一個局部環境的點云數據在已經建立地圖上尋找到對應的位置。

這個是ICP的點云匹配算法,用于實現匹配。說這個過程關鍵,就是因為它的好壞,直接影響了SLAM構建地圖的精度。這個過程和我們玩拼圖游戲有點類似,就是在已經拼好的畫面中找到相似之處,確定新的一個拼圖該放在哪里。在SLAM過程中就像這樣:

將激光雷達當前采集的點云(紅色部分)匹配拼接到原有地圖中,如果不進行匹配過程,所構建的地圖可能就亂成一團。

在這個部分完畢以后,就進行地圖融合。也就是將這一輪來自激光雷達的新數據拼接到原始地圖當中。最終完成地圖的更新。

就像這個圖一樣,這個過程是永遠伴隨SLAM過程的。
數據融合和簡單的貼圖是有很大的差異的。因為實際上傳感器描繪的世界存在一定的誤差,或者正巧在這個時間環境有了變化,例如機器人旁邊闖入了一只小貓。因此,實際要進行的過程會更加復雜。實際實現上會用很多概率算法,采用濾波的方式進行融合。將上述這個過程逐次執行,就最終產生了我們看到的柵格地圖。

這個過程聽起來其實并不復雜,但是要處理好有很大難度。這里舉幾個例子,比如叫做loop closure(回環)的問題。如果匹配算法不足夠優秀,或者環境中存在很不巧的干擾,如果機器人繞著環境一圈,就會發現原本是應該閉合的一個環形走廊斷開了。比如正常地圖應該這樣:

如果處理不好,實際地圖就成這樣:

對于環境比較大的場景,回環問題是不得不面對的。因為現實總是不完美的,即使是激光雷達這種高精度傳感器,也難免存在誤差。而回環問題的難點恰恰在于在一開始出現少許誤差的時候,并不會被發覺。一直到機器人繞著環路一圈,隨著誤差的累加,發現環路已經無法閉合時,此時已經釀成大錯,一般很難回天。
當然這個問題并不是無解,一個好的商用化SLAM系統,回環問題是否能很好的解決,就成了評判這個系統實力的指標了。
這里先講了第一個難點,是算法層面的。其實還有很多這種坑,比如什么走廊問題。除了算法難點其實還有別的難點,SLAM要做好其實不光靠用的算法多好,尤其現在很多開源實現代表的是學術界。實際應用有很多corner case要處理,需要傳感器、系統參數、其他輔助設備的聯合調優。
一般來說,上述的SLAM過程對于運算消耗是巨大的,雖然并沒有達到像訓練神經網絡動用服務器集群那種地步,但傳統上需要PC級別的處理器。
另外,除了配備激光雷達外,還需要機器人具有IMU、里程計來為激光雷達提供輔助數據。否則SLAM系統也難以得到運行。總的來說,SLAM算法本身是一個對于外部系統有著多種依賴的算法。這是一個切實的工程問題。我們知道很多機器人,比如掃地機是不可能裝一個PC進去的。因此為了讓SLAM能在這類設備里運行,除了解決激光雷達成本外,還要對SLAM算法做出很好的優化。
掃地機的路徑規劃其實是一個比較獨立且復雜的課題,和一般機器人用的路徑規劃還不通,所以先講下SLAM與路徑規劃的關系。
實際上SLAM算法本身只是完成了機器人的定位和地圖構建兩件事情,和我們說的導航定位還不是完全等價的。這里的導航,其實是SLAM算法做不了的。它在業內叫做運動規劃(Motion Planning)。
運動規劃是一個很大的概念,從機械臂的運動、到飛行器的飛行,再到這里我們說的掃地機德清掃路徑規劃,都是路徑規劃范疇。我們這里就主要先談談針對掃地機這類輪式機器人的運動規劃。
這里我先介紹一下要實現掃地機路徑規劃的一個基礎能力。
我們一般在完成SLAM后,要進行一個叫做目標點導航的能力。我們一般說的路徑規劃,顧名思義其實指的這個。通俗說,就是規劃一條A點B點的路徑出來,然后讓機器人過去。

要實現這個過程,運動規劃會實現至少兩個層次的模塊,一個叫做全局規劃。這個和我們開車導航儀有一點像,就是它需要在地圖上預先規劃一條線路,也要有當前機器人的位置。這是由我們的SLAM系統提供出來的。行業內一般會用叫做A*的算法來實現這個過程,其實在很多的即時戰略游戲中也同樣采用這種算法。比如鼠標控制讓一堆農民去采礦,這些單位的移動其實游戲里就用A*。
當然,光規劃了這個路徑還是不夠的,現實中會有很多突發情況,比如正巧有個小孩子擋道了。那么原先的路徑就要調整。當然,有時候這種調整并不需要重新計算一遍全局路徑,機器人可能稍微繞一個彎就可以。此時,我們就需要另一個層次的規劃模塊,叫做局部規劃。它可能并不知道機器人最終要去哪,但是對于機器人怎么繞開眼下障礙物特別在行。

這兩個層次的規劃模塊一起協同,機器人就可以很好的實現從A到B點的行動了,不過實際工作環境下,上述配置還不夠。比如前面提到的A*算法必須要求機器人預先把地圖探明后才能展開行動,這在很多時候不夠靈活。如果掃地機器人買回家,必須先把屋子都走一遍以后才肯掃地,那用戶體驗就會很差。
為此,也會有針對這類算法的改進,比如SLAMWARE內采用我們改良的D*算法進行路徑規劃,最大優點是不需要地圖預先探明,機器人可以和人一樣,即使環境未知,也可以展開行動,隨著機器人不斷探索,路徑也會時刻調整。

前面介紹了目前大部分移動機器人都需要的路徑規劃算法,掃地機器人的路徑規劃算法要更復雜,一般來說,掃地機需要這么幾個規劃能力:貼邊打掃、折返的工字形清掃以及沒電時候自主充電。
其實這些規劃能力單單靠前面介紹的D*這類算法是完成不了的。掃地機器人還需要有額外的規劃算法,比如針對折返的工字形清掃,有很多問題要處理。例如如何最有效的清掃一個區域而不重復清掃?

另外,如何讓掃地機和人一樣,理解房間、門、走廊這種概念?當然這里篇幅有限,就不多展開。簡單說,針對這些問題,在學術界長久以來是有專門的一個研究課題,叫做space coverage。也提出了非常多的算法和理論。比較有名的有Morse Decompositions。通過它實現對空間進行劃分,隨后進行清掃。

像在上世紀70年代,CMU就完全依靠超聲波做到了現在我們掃地機的行為,當然造價還是很高的。

前面介紹的A點到B點移動路徑規劃也是實現這類更高級路徑規劃的基礎。實際上,要從SLAM實現到掃地機器人所需要的這些功能,還是有非常多的工作要做的。我們目前的做法是針對這類掃地機特有的路徑規劃,也同樣預先實現內置在了我們SLAMWARE內部方便使用。
思嵐在2年前在業內推出了首款低成本的激光雷達RPLIDAR。目前在批量銷售情況下單臺可以做到幾百元的這個級別。

這個成本的降低首先光通過壓縮我們利潤是不可能的了。當然,也更不是通過犧牲做工來換來的。本質原因是傳統采用TOF技術的激光雷達本身就導致他的成本是居高不下的,我們知道TOF這種方式要測量光飛行用時,要做到這一步,需要皮秒級別精度的計時器,同時對于激光器和接受裝置都是極大挑戰。這里的挑戰到不都是技術難度上,還在于其中的核心傳感器就造價不菲,并且常年依賴進口。并且在生產中難度很大,幾乎每臺雷達都需要非常專業的技師手工校正。成本自然就居高不下了。
我們RPLIDAR采用另一種方式,叫做三角測距。通俗說就是通過光學的幾何特性,使用計算機視覺方式來求出距離。這種方式好處是只需要傳統的攝像頭的成像設備。因此成本自然就會降低。

當然,就像這個問題問的是有前提的,就是在保證精度前提下來實現低成本。激光雷達精度或者說是性能有這個幾個考量。首先自然是測量精確度。行業內也有不少聲音,反應三角測距雷達有個硬傷,就是在遠距離下精度下降。
這是個不爭事實,但是這恰恰是我們RPLIDAR的優勢。其實配合好算法,這個問題可以一定的緩解。比如下圖是目前常規三角測距雷達在測量3-4米距離以外物體的效果,會發現本該是筆直的墻壁,測量出來出現了鋸齒。

隨著距離增加,如果算法不做出優化,那么這個現象會非常嚴重,直接會影響后續SLAM算法。
我們在這塊處理上對內部算法做了很多優化,可以很好改善這個問題:

另外,三角測距雷達相比TOF雷達還有一個區別在掃描頻率,我們的RPLIDAR A1的第一代產品是每秒5圈的旋轉頻率,結合一秒2000次的測距頻率。這個參數對于像掃地機這類的場合其實是夠了。不過對于服務機器人這類應用,就顯得偏慢。
要提高速度,光提高電機轉速其實不夠,那會讓點變得更加稀疏,本質是要提高一秒測距頻率。這同樣對于算法優化以及光學系統會有挑戰。目前我們新一代的RPLIDAR A2實現到了4000次采樣率,從而做到10hz掃描轉速。其實本質也是靠算法。

一般來說,目前要做到實用化,采樣率需要達到1800sps,所以對于這個問題,簡單說就是依靠算法革新,保證在保持精度的條件下實現低成本。
這個問題其實要站在適用場景下來討論。現在外借認為機械方式的激光雷達存在壽命問題,不如固態的雷達,這其實就是誤解。
目前行業內高低端的激光雷達都是機械方式的,很多在工業的關鍵領域承擔安全保全職責,因此說他們有壽命問題是不成立的。相比,固態雷達到目前還是概念產品,它雖然是固態的,但工藝穩定性有待驗證,說它就比機械壽命長,值得商榷。
不過針對目前機械激光雷達,的確有一個壽命制約因素,就是很多都會使用到導電滑環這個部件。包括我們的第一代雷達之前也是這樣。

這個部件是用來實現兩個旋轉物體之間信號和供電傳輸的。我們知道雷達工作的時候要連續旋轉。要給這個旋轉部分供電和通訊,就要靠滑環。
不過導電滑環標準品的壽命是很短的,只有幾千小時。也就是說雷達如果直接用一個標準滑環,持續工作幾個禮拜就會壞。因為滑環會被磨損,那就沒法給雷達供電和通訊了。這就會有壽命問題。

我們當時研發RPLIDAR其實用的已經是定制的滑環,當時我們直接提出設計方案給供應商去定做。就這么搞了好幾個來回。所以目前RPLIDAR A1在掃地機這類場合下其實壽命不存在問題。
但如果用到服務機器人下,問題就會有。因為這種場景下要求機器人7*24待命。針對這個問題,我們后來提出了光磁融合技術。

這個名字是我們專門取得,是一個專利性技術。它的核心是使用無線供電和光通訊這類接觸手段來代替導電滑環。對于RPLIDAR A2,我們還是用了自己設計的無刷電機。這樣做的話,我們的雷達在7*24連續工作的情況下,也會有5年以上壽命。
現在其實我們第一代的雷達也同樣使用光磁融合技術了,因此我覺得目前對我們雷達來說,這個壽命問題是完全得到了解決。
做激光雷達產品,如何看待產品安全問題?
單獨對激光來說,我覺得的確不當使用會有安全問題。畢竟他只是一種光源,我們如果盯著太陽看,一樣也會灼傷眼睛。關鍵在于怎么使用。
但對于激光雷達,我覺得激光導致安全問題是不存在也不應該存在的。因為一個合格的激光雷達產品,它必須通過激光等級認證。像我們RPLIDAR在設計上也會動態檢測激光器功率,確保安全。
目前行業內對于激光是有嚴格的安全等級指標的,目前RPLIDAR符合一類激光器(CLASS I)等級。這個等級表示無論在什么情況下,激光雷達產生的激光都不會對人眼產生損傷。要滿足Class I,就要求激光平均功率只有幾個微瓦。這是非常微弱的信號了,不會產生問題。

相比而言,可能我們日常生活中用的LED手電的功率和危害要比激光雷達要大很多。因為目前LED還缺乏嚴格的安全等級規范。其實很多產品光功率反而是超標的。
激光雷達技術除了應用在機器人(包括無人車)身上,還能在哪些其他領域中得倒應用?
其實激光雷達一開始就不光為了機器人而誕生,只是最近我們因為機器人和無人車才去了解它。傳統上,激光雷達用于工業的安全檢測領域,就像科幻片的那種激光墻,人進入會報警,工業內用激光雷達做這個的很多。

此外,激光雷達用在空間測繪上也很多。比如用我們RPLIDAR構建的辦公室環境。

還有就是一些新媒體行業,要做一個超大的多點觸摸屏幕,傳統靠電阻電容屏是做不了的,業內一般也會用激光雷達。
目前來看,高端的激光雷達廠家都只有國外廠家。國內初步像我們開始做低成本的激光雷達開始起步。區別在于定位不同,國外更多專注在高性能、工業級別的雷達。這主要是歷史積累造成的,和工業發展大背景有關系。對于高性能雷達,必須要具有更久的研發經驗和更多的實際產品測試才能做得到。這也是我們目前國內缺乏的。
不過目前服務機器人行業其實對激光雷達是很好的機遇,我覺得國內如果能把握這個機遇,還是有希望能在也些細分領域超于國外同行。
Q:如今SLAM已經能在掃地機器人身上使用,有不少的移動機器人公司也都看好SLAM,但并沒有聽說哪個公司真的做出比較成熟的視覺導航系統,這是因為什么原因呢?
A:vSLAM目前還在研究階段,我們說它火主要是因為目前在學術界vSLAM處在高速發展階段,大家愿意研究。但實際應用有很多問題要克服,比如對于傳感器對環境光依賴,運算負荷和嵌入式設備成本功耗空間的矛盾,另外,構建的地圖本身難以直接用于路徑規劃導航。
其實這塊我們一直也投入在做視覺方案。2009年我們最早就是做視覺,當年monoslam、stereocam我們都有做。但目前的判斷是,它是未來方向,但目前不成熟。
Q:對服務機器人以后的實用性功能性有什么建議嗎?
A:這塊我們認為是要先找到killer application,掃地機器人是一個點,但要有更多的爆點存在。
就像以前PC行業,在真正的PC技術使用前,其實最早流行的是商用制表機與家用是游戲機。我們覺得服務機器人其實先要有這樣一個階段,現在能做的就是先把其中導航定位問題為大家做好,幫助這些爆點出現。
Q:目前開源的SLAM算法還是比較多的,您推薦使用哪一種比較好呢?
A:前面也說過,導航和SLAM是兩回事,本來也不需要通過SLAM。很多機器人其實只是運行門特卡羅方法做定位,沒有SLAM。
哪一款其實很難推薦,要看具體應用。簡單說我們認為目前開源算法要直接拿來商用是不可能了,有很多現實問題他們都沒解決。因為這類算法都是學術界出生,他們不會去處理具體工程問題。 但如果做研究,目前ROS中主流的gmapping、hector slam都是可以拿來做飾演的。

雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。