SLAM2.0: Towards AI Agent Era
這是一個有趣的問題,我也簡單寫一下 。
簡單來說,我覺得SLAM的時代才剛剛開始。 或者更為準覺得說,SLAM2.0時代的開始。SLAM,其實不只是一門技術,更是一門藝術,是一個道」門「,至於這道門會通向哪裏,全掌握在各位SLAMer手裏。SLAMer「溫故而知新」
作為一個被研究了幾十年的方向,」SLAM這個領域還有沒有搞頭?「這個問題我印象中已經被問了很多次,最早一次我記得是Sebastian Thrun時代,2010年有人在一次存取中就問過他」Is SLAM solved?「 他那個時候說常規意義上的SLAM的理論體系已經完備了,但是還有很多Corner Case解決不了。正當那個時代的SLAMer們認為SLAM也就那樣了的時候,突然出現了以下幾個成果:
- 2015年,ORB-SLAM第一代誕生,從此開啟了Graph-based的視覺VIO大浪潮;
- 2017年,MSCKF-VIO誕生,Filter VIO扳回一局,老一代SLAMer振臂高呼「不要放棄」經典;
- 2018年,VINS-Mono誕生,一種緊耦合方案驚艷四方,成為小白們的VIO必修課。
雖然這個問題被問起過非常多變,我們似乎總可以從不同的角度對SLAM進行不斷的最佳化和提升。如前段時間,我也分享過(能否推薦幾個比較有研究價值的slam方向?)可能的幾個有趣的SLAM方向,簡單總結來說就是: 對於當前的SLAM系統,只要是能更好的滿足真是需求,那就能有更好的突破性工作。 但是這句話說起來簡單,做起來卻是太難,其困難程度可以參考我之前寫的這個分析(機器人領域的頂刊TRO/IJRR和CV領域的TPAMI,TIP相比含金量如何?)。
這對於很多初涉SLAM(即便是資深研究者)的人來說確實是一種挑戰。而且在這種現狀之下,如果所有SLAMer都只從傳統的思維模式「卷」SLAM演算法(比如絕對精度,高速下的魯棒性等傳統指標),那麽這個領域確實很難再出大型的成果;或者想出也可以,其系統級復雜度都是初級SLAMer無法預期的。這就好比:一個多級倒立擺,別人已經實作10級倒立擺,你如果想做11級別,其代價是先熟悉掌握10級倒立擺的控制特性,你還需要有獨到的策略實作11級的控制方案。
聽到這裏,估計很多人都在開始打退堂鼓了==!,不過「老鄉留步「,我們其實還有其他路可以走,且往下看。
SLAM的初衷
現在先讓我們靜下來考慮一個問題,不論各位的SLAM背景,我們先丟擲所有對於SLAM這個領域的固有認知,找一個安靜的地方,開始冥想。
」什麽是SLAM?「這是一個愚蠢的問題,我們經常認為SLAM的目的就是兩個,幫助機器人定位,輔助機器人進行建模,在此基礎上我們才能進一步開發一系列的復雜套用,不管是無人駕駛還是服務機器人,SLAM都是他們的底層核心。但如果我們回到這個問題的本質,為什麽Agent系統需要一套SLAM,如果回到第一性原理,其實他只是用來回答Where am I這個問題。舉幾個例子,
因此SLAM 的核心其實是」Where「,精度和效率只不過是他的一部份評價指標,註意只是一部份。而且我們會發現這個Where其實包含的東西很多,也很模糊,比如規模、精度、關系等。而且這個where很雜,一般別人問我們某個地方怎麽走,我們會說」過了前面那個紅綠燈,右拐約莫幾十布的地方就是,旁邊有個咖啡廳「。我們經常用這種」Rough「的資訊描述Where,但是大部份時間我們都很理解。就類似於下面這張藏寶圖,說真的,大航海早期的航海圖就是這樣的:)。
紫爐熏香,古琴繞梁。。。所以一個有趣問題映入了我們的腦海中,既然人類可以只依靠粗略的資訊獲取Where的內容, 那我們為何要用精度來限制SLAM的使用空間或者評價一個SLAM方法優劣的唯一指標呢? 如果我們不在糾結精度這一限制條件,是否這個思路就開啟了呢?而且,我們可以考慮另一個有意思的事情,如果不再限定於精度,那麽還會有哪些問題對Where內容的認知更有價值呢?我這裏可以簡單寫幾個:
- 長航程的魯棒性: 常見的SLAM通常只能用在短暫的工作階段,而無法實作長期(24小時/7天)穩定的定位導航能力,這方面雖然有一些工作,但還沒有可以看到類似ORB-SLAM這樣的milestone。很多人吐槽這是工程問題,但是在我看來,這確實實實在在的SLAM基本問題,甚至比精度的意義更加重大,比如對於火星車和月球車。
- 大規模的魯棒性: 一般來說提到規模,常見的SLAM系統很難適應與幾公裏甚至幾十公裏以上的場景,而這些套用對於人類的生活來說都是家常便飯的事情。很多人會Challenge說,「有GPS啊!」,但是實際情況是,我們一般希望的機器人工作環境不見得會有第三方GPS或者UWB系統,比如復雜室內,Shopping Mall等。從第一性原理出發,這種事情人可以做,那麽機器就必然可能。而這種通用性是否需要高精度的SLAM建模能力,我看未必。
- 增量式的學習性: 不知大家有沒有註意到這一點,從OrbSLAM開始,視覺類SLAM的主要閉環檢測方法就主要在用BoW,用了這麽多年的一項技術為什麽不考慮一下升級呢。雖然ORB是一類非常穩定的場景描述子提取器,但是他還是依賴於之前餵給他的訓練數據。而這類訓練數據往往不能cover真實場景中光照、天氣、動態障礙物等造成的場景差異性。雖然目前有一些learning的演算法可以達到更好的場景關聯能力,但是我們不能指望用有限的數據就能確保SLAM系統可以持續更新最佳化,真是場景是多變且多樣的。有人也會Challenge說,這種太過於工程了。但是,這些問題就是SLAM系統自身所存在的缺陷,我們可以回避,但他會一直存在。
- 語意類的關聯性: 語意SLAM這個命題被提起了很多年,但是鮮有做的非常耐用的。這個願意也很復雜,此前受制於感知演算法或者自然語言處理的局限性,語意SLAM總給人一種聽者很玄乎但實際上沒有太大實用價值的系統。但隨著最近大模型和CLIP等技術的不斷成熟,語意SLAM有望崛起,比較具有代表性的就是Scene Graph之類的工作。
以上這些,只是SLAM在當前的開發中面臨的部份問題,如果詳細展開還有非常多的點,不過限於篇幅,我們點到為止,後續具體可以參考(能否推薦幾個比較有研究價值的slam方向?)。不過這些問題,也只是為下面要講的SLAM 2.0做一個鋪墊,請大家系好安全帶,我們開車走起。
SLAM2.0的含義
如圖三所示,經典SLAM系統往往包括三個核心模組:Place Recognition,Odometry Estimation,和Factor Graph。我們一般在講視覺SLAM的時候,往往會混淆SLAM系統和VIO系統。如果只包含odometry和FG,那麽這個系統也就只是一個VIO。在過去的幾十年裏,Place Recognition一直是一個被人忽視的環境,在近5年有所改觀。對於基於以上三個模組的SLAM系統,
在上一章,大家不難發現,在傳統SLAM問題中,很多問題都只聚焦在了精度上,而忽視了很多實際套用中面臨的現實問題。那麽我們應該如何打造一套具有足夠適配能力的SLAM系統呢?懷著這個目的,我們引入了SLAM2.0系統,如下圖所示:
這套框架想對於經典SLAM系統多了以下幾個主要模組:
- Map Evaluation :主要負責對於局部地圖的細節進行評估,這種評估可以是3D環境的建模精度、向量精度或者環境語意資訊相關性的分析等;
- Scene Operator: 用於構建拓撲抽象的地圖結構,建立Hierarchical的層級地圖表達;
- Memory Tank :用於儲存時空地圖,可以在不同維度和尺度分析地圖資訊;
- Action :根據當前地圖和歷史地圖的資訊,線上動態的調整機器人的SLAM決策。
SLAM2.0的拓展
有空再寫