谷歌近期開源的SLAM方案在下一盤怎樣的大棋?

2021-07-28 14:57:19 字數 3337 閱讀 8902

**:

10 秒總結全文:cartographer 是谷歌剛剛開源的使用雷射雷達進行 2d/3d slam 的演算法庫。其演算法本身未必拔萃,但從設計到實現都是產品級的,很可能會在 slam 相關業界帶來不小的反響。相關業者或許需要認真審視技術路線和商業模式。

作者介紹:邵天蘭,清華大學軟體學院本科,慕尼黑工大碩士。在德國工作多年,深度參與了最先進協作機械人的研發。2016 年夏拒絕了矽谷數家知名企業的 offer,回國創業。作為資深程式設計師,追求炫酷而實用的硬核技術——當然沒有比機械人更合心意的東西了。

個人知乎主頁:

「谷歌於 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 的開源使得大家不但有**可以參考,還有**可以直接拿來用,因此可能降低了其他廠家在演算法上追趕的難度。但**鏈的壁壘依然高峻。

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

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

沒有 pcl,g2o,isam,sophus, opencv, ros 等等,幾乎所有輪子都是谷歌自己造的。因此整個開源軟體棧在事實上都是由谷歌控制的。這明顯不是搞科研的玩兒法,就是奔著產品去的。前面說過,cartographer 需要的計算資源少,依賴少,而且**質量也很不錯,因此幾乎可以直接應用在乙個產品級的嵌入式系統上。以前學術界出來的開源 2d/3d slam 演算法不少,但能幾乎直接拿來就用在產品上的,恕我孤陋寡聞還真想不出來。因此,我認為開發基於雷射雷達的室內 slam 演算法的門檻被顯著降低了。

這個庫其實不需要在效果上成為最牛的,現在看起來已經完全夠用了。開源、需要資源少,**乾淨拿來就能使,而且效果還不錯……呼,幸虧在下是搞機器臂智慧型系統的,不是搞 slam 方案的,要不然豈不是要睡不著覺?現在創業者除了擔心bat模仿,還要擔心谷歌開源。當然現在只是有基於雷射雷達的演算法,基於攝像頭的 slam 仍然是很有挑戰性以及實用價值的。

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

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

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

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

發布短短幾天,cartographer 就已經是 github 上所有有關 slam 的 repo 中獲得 star 最多的了(見下圖),一舉超過了許多誕生多年的知名 repo。就問你怕不怕!

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

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

當年微軟等公司不開源,招致 free software foundation 為首的鍵盤俠們(無貶義)的口誅筆伐。如今谷歌恨不得開源一切,搞實際控制:例如 android(手機作業系統)和 blink(瀏覽器核心),雖然都開源,但事實上都由谷歌掌控。對此我只能說:

SLAM 已開源的SLAM彙總

youtube鏈結 特殊之處 相對於fcn而言,將獲取的語義資訊投影到kinect地圖裡 獲取3d的地圖 一般的語義分割都是影象形態 沒有定位資訊,這個有相對的三維位置關係 儀器 kinect 需要深度圖 youtube鏈結 github鏈結 儀器 elastic本身需要kinect深度圖 3 po...

谷歌開源 TensorFlow 的簡化庫 JAX

開發四年只會寫業務 分布式高併發都不會還做程式設計師?谷歌開源了乙個 tensorflow 的簡化庫 jax。jax 結合了 autograd 和 xla,專門用於高效能機器學習研究。憑藉 autograd,jax 可以求導迴圈 分支 遞迴和閉包函式,並且它可以進行三階求導。通過 grad,它支援自...

谷歌開源 TensorFlow 的簡化庫 JAX

谷歌開源了乙個 tensorflow 的簡化庫 jax。jax 結合了 autograd 和 xla,專門用於高效能機器學習研究。憑藉 autograd,jax 可以求導迴圈 分支 遞迴和閉包函式,並且它可以進行三階求導。通過 grad,它支援自動模式反向求導 反向傳播 和正向求導,且二者可以任何順...