細思極恐!Google近期開源的SLAM方案究竟在下一盤怎樣的大棋?

36氪 於 15/10/2016 發表 收藏文章
編者按:本文首發於微信公眾號“將門創業”(ID:thejiangmen),36氪經授權發佈,如需轉載請聯繫“將門創業”。
Google於10月6號在GitHub上開源了名為Cartographer的SLAM庫。次日晚上我看到消息,順手克隆下來代碼。本來不甚以為意,不意掃了一眼之後倒抽一口氣,就靠一罐紅牛讀代碼讀到凌晨四點。下面是我的一些想法,主要側重於非技術的方面。一孔之見,權作拋磚引玉。”

Cartographer可以使用2D或3D激光雷達來進行SLAM(同時定位與地圖構建),其中2D的算法在文章[1]中有描述,而代碼中3D的算法和2D算法基本思路一致。我認為,Cartographer的算法雖然算是一流,但似乎並沒有牛到讓我合不攏嘴的程度。泛泛總結一下Cartographer的算法:用Grid(2D/3D)的形式建地圖;局部匹配直接建模成一個非線性優化問題,通過IMU(慣性測量單元)獲得比較靠譜的初值,再用Ceres庫進行求解;後端用Graph來優化,用分支定界算法來加速;2D和3D的問題統一在一個框架下解決。


算法的具體過程先放一邊,先來感受一下算法的設計目標:低計算資源消耗,實時優化,不追求高精度。這個算法的目標應用場景昭然若揭:室內用服務機器人(如掃地機器人)、室內AGV(如機場用的無人電瓶車),無人機等等計算資源有限、對精度要求不高、且需要實時避障的和尋路的應用。而3D SLAM如果能用在無人機上,也是非常炫酷且實用的事情。

學術界不少人認為,基於激光雷達的2D SLAM在室內、低速、靜態環境的條件下已經可以認為被基本上解決了,現有成果對很多應用來説已經完全夠用。例如下圖是小米機器人的建圖效果。請注意,這是普通用户在實際家居情況下自行使用得到的結果。我第一見到這個圖的時候,驚得半天説不出一句話。在如此複雜的環境中,整個圖沒有明顯的錯位(右側亂糟糟的房間是因為堆滿雜物),兩側的牆都很直而且完美平行——而這一切都是在很低的價格下做到的。據網上消息,該掃地機器人使用的激光雷達是米家供應鏈研發的,成本或能低至200塊——又是半天説不出一句話。而在SLAM算法層面,Cartographer的開源使得大家不但有論文可以參考,還有代碼可以直接拿來用,因此可能降低了其他廠家在算法上追趕的難度。但供應鏈的壁壘依然高峻。


圖片來源:知乎用户程序魚an

我不掌握Google內部關於這個項目的消息,這裏誅心一點:現在掃地機器人、端茶倒水機器人、無人機等等火的不要不要的,Google要插一槓子進來。雖然暫時只是一個SLAM庫,但後續發展誰知道呢?會不會出現機器人的Android系統呢? Google在Andy Rubin離開後,對機器人行業的整體規劃讓外人看不明白(很可能他們自己也不明白),所以後續的發展也只能拭目以待了。

而且讀代碼之後,我認為Cartographer這個庫最重要的東西還不是算法,而是實現。這個庫實現度很高,而且非常Google style。例如算法的核心部分僅僅依賴於以下幾個庫:

  • Boost:準標準的C++庫。
  • Eigen3: 準標準的線性代數庫。
  • Lua:非常輕量的腳本語言,主要用來做Configuration
  • Ceres:這是Google開源的做非線性優化的庫,僅依賴於Lapack和Blas
  • Protobuf:這是Google開源的很流行的跨平台通信庫

沒有PCL,g2o,iSAM,sophus, OpenCV, ROS 等等,幾乎所有輪子都是Google自己造的。因此整個開源軟件棧在事實上都是由Google控制的。這明顯不是搞科研的玩兒法,就是奔着產品去的。前面説過,Cartographer需要的計算資源少,依賴少,而且代碼質量也很不錯,因此幾乎可以直接應用在一個產品級的嵌入式系統上。以前學術界出來的開源2D/3D SLAM算法不少,但能幾乎直接拿來就用在產品上的,恕我孤陋寡聞還真想不出來。因此,我認為開發基於激光雷達的室內SLAM算法的門檻被顯著降低了。

這個庫其實不需要在效果上成為最牛的,現在看起來已經完全夠用了。開源、需要資源少,代碼乾淨拿來就能使,而且效果還不錯……呼,幸虧在下是搞機器臂智能系統的,不是搞SLAM方案的,要不然豈不是要睡不着覺?現在創業者除了擔心BAT模仿,還要擔心Google開源 <span class="emoji-outer emoji-sizer"><span class="emoji-inner" style="background: url(chrome-extension://immhpnclomdloikkpcefncmfgjbkojmh/emoji-data/sheet_apple_64.png);background-position:65% 37.5%;background-size:4100%" title="grin"></span></span>。當然現在只是有基於激光雷達的算法,基於攝像頭的SLAM仍然是很有挑戰性以及實用價值的。

借Cartographer這件事我想斗膽分享一下我開始創業以來的一些思考。

現在機器人相關領域是創業的熱點,其中一個原因就是來自學術界的研究成果逐漸接近了實用的門檻。例如前述的基於激光雷達的SLAM,還有基於視覺的SLAM、機器視覺、人臉識別、智能規劃等等,都是基於學術界近年來的成果。

創業團隊的配置也從移動互聯網時代的英雄不問出處,變成了標配大量名校海歸、博士、甚至博導。我司也是其中之一。學術界背景的團隊有時會習慣性地從技術出發思考問題,但是產品形式、商業模式、和產業鏈地位對創業成功的影響很可能不亞於技術本身。學術界的成果通常會以論文的形式公開,單一團隊(包括Google等巨無霸)很難對整個業界長久保持25%以上的領先,更難有碾壓式的領先。

退一步講,技術上即使能保持領先,除非恰好位於實用門檻的兩側,否則也很難形成真正的壁壘。因此有了領先的技術後,產品形式如何、商業模式如何、在產業鏈的地位如何,是值得花大力氣研究的。特別是產業鏈地位,如何沒有想好,很容易出現受夾板氣的情況。而且也要將心比心:如果用了某產品,會使我處於產業鏈上很不利的地位,那麼我很可能就會另謀方案。

發佈短短几天,Cartographer就已經是GitHub上所有有關SLAM的repo中獲得Star最多的了(見下圖),一舉超過了許多誕生多年的知名repo。就問你怕不怕!


前兩天刷朋友圈看到餘凱老師呼籲大家避免使用Google開源的TensorFlow(用於高效機器學習的庫),我當時——


結果才兩天就被教做人了。。。。我只能算是深度學習的初級應用者,對TensorFlow的態度更多的是坐享其成。但是2D/3D SLAM對我來説就更為熟悉和相關了。熬夜讀Cartographer的代碼時,我似乎有點兒理解了餘凱老師的想法。

當年微軟等公司不開源,招致Free Software Foundation為首的鍵盤俠們(無貶義)的口誅筆伐。如今Google恨不得開源一切,搞實際控制:例如Android(手機操作系統)和Blink(瀏覽器內核),雖然都開源,但事實上都由Google掌控。對此我只能説:


作者介紹:邵天蘭,清華大學軟件學院本科,慕尼黑工大碩士。在德國工作多年,深度參與了最先進協作機器人的研發。2016年回國創立梅卡曼德(Mech-Mind)機器人。個人知乎主頁:https://www.zhihu.com/people/shaotianlan

[1] Google關於2D SLAM文章,發表於ICRA 2016。關注“將門創業”微信公眾號(thejiangmen),回覆關鍵詞“SLAM”,獲取下載鏈接。


資料來源:36Kr

留言


請按此登錄後留言。未成為會員? 立即註冊
    快捷鍵:←
    快捷鍵:→