SLAM:现在,未来和鲁棒感知时代
文章目錄
- SLAM 研究的時代劃分
- the classical age (1986 - 2004)
- the algorithmic-analysis age (2004 - 2015)
- the robust-perception age (now)
- 自主機器人真的需要SLAM嗎?
- SLAM問題被解決了嗎?
- SLAM算法魯棒性
- SLAM算法魯棒性面臨的主要挑戰
- 數據關聯(data association)
- 惡劣環境(harsh environment)
- 研究現狀
- 前端短期數據關聯(short-term data association)
- 前端長期數據關聯(long-term data association)
- 前端回環閉合檢測(loop closure detection )
- 前端回環閉合驗證(loop closure validation)
- 后端回環閉合驗證
- 動態環境的處理
- 待解決的問題(open problem)
- SLAM失效保護和恢復(failsafe SLAM and recovery)
- 對硬件失效的魯棒性(robustness to HW failure)
- 幾何重定位(metric relocalization)
- 隨時間變化的、可變形的地圖(time varing and deformable map)
- 自動化調參(Automatic parameter tuning)
- SLAM算法魯棒性面臨的主要挑戰
- SLAM的場景尺度(scalability)
- 研究現狀
- 節點、邊緣稀疏化(node and edge sparsification)
- 去中心化(并行)SLAM(out-of-core (parallel) SLAM)
- 分布式多機器人SLAM(distributed multi robot SLAM)
- 待解決的問題
- 地圖維護(map maintenance)
- 魯棒分布式建圖(robust distributed mapping)
- 學習,遺忘,記憶(learning, forgetting, remembering)
- 資源有限的平臺(resource-constrained platform)
- 研究現狀
- 地圖表示:幾何度量推理(metric reasoning)
- 稀疏路標表示(landmark-based sparse representation)
- 低層原始數據稠密表示(low-level raw dense representation)
- 邊界和空間分割稠密表示(boundary and spatial-partitioning dense representation)
- 基于物體的高階表示(high-level object-based representation)
- 待解決的問題(open problem)
- SLAM中的高層表示(high-level, expressive representations in SLAM)
- 最優表示(optimal representations)
- 自動、自適應表示(automatic, adaptive represetation)
- 地圖表示:語義推理(semantic reasoning)
- 語義SLAM vs 拓撲SLAM(semantic SLMA vs topological SLAM)
- 語義的結構和具體內容(semantic SLAM: structure and detail of concepts)
- 語義建圖的研究現狀
- 待解決的問題(open problem)
- 語義建圖不只是一個分類問題
- 忽略、察覺和適應(ignorance, awareness, and adaptation)
- 基于語義的推理
- SLAM中的新理論工具
- 主動SLAM(active SLAM)
- SLAM中的新傳感器
本文為對綜述論文Simultaneous Localization And Mapping: Present, Future, and the Robust-Perception Age的理解和心得,本文受眾為,對SLAM問題有一個全面的基礎認知,想進一步尋找SLAM研究方向的童鞋。
對該綜述論文的學習還可以參考:
【泡泡機器人翻譯專欄】SLAM: 現在,未來和魯棒年代(一)
【泡泡機器人翻譯專欄】SLAM: 現在,未來和魯棒年代(二)
【泡泡機器人翻譯專欄】SLAM: 現在,未來和魯棒年代(三)
【泡泡機器人翻譯專欄】SLAM: 現在,未來和魯棒年代(四)
【泡泡機器人翻譯專欄】SLAM: 現在,未來和魯棒年代(五)
?
SLAM 研究的時代劃分
Cadena等人把SLAM問題的研究劃分為3個時代:
the classical age (1986 - 2004)
在SLAM問題研究的前20年,主要是提出問題和理清框架,這一階段的主要有兩個成果:
the algorithmic-analysis age (2004 - 2015)
這一階段對SLAM問題進行算法上的分析,主要成果為:
the robust-perception age (now)
Cadena等人認為,在我們正處于的這個時代,這個階段SLAM領域的研究有以下特點:
自主機器人真的需要SLAM嗎?
要回答這個問題,必須先理解是什么使得SLAM如此獨特。SLAM旨在通過同時利用運動觀測信息和回環閉合信息,建立一個全局一致的環境表示。其中回環閉合是至關重要的,如果去掉回環閉合,SLAM就退化為里程計。在一些早期的應用中,輪式編碼器被作為里程計使用。使用輪式里程計估計位姿,很快就會發生漂移,移動幾米后估計出的位姿可能就無法使用了 。而對外部路標的觀測可以有效一致軌跡漂移,甚至能糾正它,這是發展SLAM的主要原因之一。然而,近期的一些基于視覺和慣導信息的里程計算法,漂移非常小(小于軌跡長度的0.5%)。因此這個問題就變得合理了:我們真的需要SLAM嗎?我們的回答分為三部分:
現在回環閉合的優勢就很明顯:通過回環閉合檢測,機器人可以理解環境真正的拓撲關系,可以找到位置之間的最短路徑(比如,圖中的點B與點C)。那么,既然獲得環境的正確拓撲關系是SLAM的重要價值,那么為什么不丟棄幾何度量信息,只做位置識別呢?答案很簡單:幾何度量信息使得位置識別更加簡單、更加魯棒。幾何重建可以檢測回環閉合,并且可以剔除錯誤的回環閉合。因此,盡管SLAM在理論上可能是冗余的(一個可靠的位置識別模塊就可以實現拓撲建圖),SLAM可以天然地抑制錯誤的數據關聯(data association)和感知混淆(perceptual aliasing,感知混淆指的是環境中不同的地點,有著相似的場景外觀,會造成錯誤的場景識別)。從這個意義上講,SLAM地圖(就是前面說的幾何度量重建結果)可以預測并驗證測量的有效性,我們認為一點對于SLAM系統的魯棒運行至關重要。
不同的SLAM系統有著各自擅長完成的任務,因此一個機器人專家設計SLAM系統時,需要面對多種設計選擇。比如,拓撲地圖可以用來分析一個給定的位置是否可以到達,但是不適合用于運動規劃和底層控制;局部一致的幾何度量地圖,適合用于避障和與環境的局部交互,但是它的精度不高;全局一致的幾何度量地圖,可以使機器人完成全局路徑規劃,但這種地圖的計算和維護成本比較高。選擇合適的SLAM系統的更一般的方法是,把SLAM看作一個計算充分統計量(sufficient statistic)的機制,這個充分統計量包含了機器人過去所有的觀測。從這個意義上講,壓縮的地圖表示中需要保留哪些信息,是與任務深度相關的。
SLAM問題被解決了嗎?
這個一個再機器人領域經常被提起的問題,在我初學SLAM的時候,這是一個很困擾的問題,因為一些現有的開源框架如ORB-SLAM2、SVO、DSO和、OKVIS、VINS-Mono等,在算法框架上已經很成熟了,而且在數據集上也有著很好的表現,似乎剩下的工作就只是將它們工程化、實用化,根據實際應用需求進行微小改動而已。
Cadena等人認為,這個問題很難去回答,之所以很難回答,困難來自于這個問題本身:SLAM是一個很寬泛的話題,只有再在給定了,機器人平臺/環境/性能要求(robot/environment/performance)的配置組合時,這個問題本身才能得到清晰的定義。
更具體的,可以根據以下幾個方面的內容來評估一個SLAM問題的成熟度:
- 運動類型(比如,動力學、最大運動速度);
- 可用的傳感器(比如分辨率、采樣頻率);
- 可用的計算資源。
- 平面環境/3D環境;
- 自然路標/人工路標;
- 動態元素的數量;
- 對稱的數量(?ammount of symmetry);
- 感知混淆的風險。這個方面的問題實際上取決于傳感器與環境的組合情況:比如兩個不同的房間對于2D激光雷達來說可能掃描結果很相似(感知混淆),但是相機可以根據外觀信息區分它們。
- 機器人狀態估計的期望精度;
- 環境地圖表示的類型與期望精度(比如,基于稀疏路標或者稠密點云);
- 成功率(這里的成功率指的是,滿足精度邊界的測試結果占測試總量的比例);
- 估計延時(estimation latency);
- 最大運行時間;
- 最大地圖尺寸(地圖面積或者地圖體積);
舉個例子,使用機器人構建一個室內環境的2D地圖,機器人配置了輪式編碼器和激光掃描儀,期望有足夠的精度(<10cm)和魯棒性(簡單來說,就是低失效率),這種SLAM問題可以認為已經被解決。類似的,運動緩慢的機器人(比如火星探路車,室內機器人)使用的基于視覺的SLAM和視覺-慣性里程計被認為是成熟的研究領域。而另一些機器人平臺/環境/性能要求配置下的SLAM問題,仍然需要大量的基礎研究。當機器人運動或者環境條件過于具有挑戰性時(比如機器人快速運動,高度動態的環境),當前的SLAM系統很容易失效。當前的SLAM系統通常也無法滿足苛刻的性能要求,比如快速估計以用于機器人的閉環控制。
SLAM算法魯棒性
SLAM算法魯棒性面臨的主要挑戰
數據關聯(data association)
數據關聯錯誤,是導致SLAM算法失效的一個主要原因。數據關聯把觀測值和相應的狀態進行關聯。以特征點法視覺SLAM為例,它把每一個特征點與相應的路標點進行關聯。感知混淆(perceptual aliasing,感知混淆是指,對于不同的輸入,傳感器感知到了相同信號的現象)使得正確的數據關聯變得特別困難。感知混淆會使數據關聯建立錯誤的觀測-狀態(measurement-state)匹配關系(false positive,假陽性),這會導致后端優化作出錯誤的狀態估計。
如果沒有對環境的動態性(包括短期變化和長期的季節性變化)進行建模,數據關聯錯誤的情況會很嚴重。當前的SLAM系統,通常都會假設機器人所處的環境是靜態的。對于小尺度場景下的單次建圖,如果環境在短期內沒有動態性(比如沒有人或者其它物體在周圍移動),那么靜態環境假設(static world assumption)是可取的。但是如果在更長的時間尺度和更大的空間尺度上進行建圖,環境的變化是不可避免的,這種情況下靜態環境假設就不合理了。環境的變化來自很多方面:晝夜變化,季節變化(比如樹葉的變化),環境結構的變化(比如舊建筑物翻新)。這些環境變化都會影響SLAM系統的性能。比如:晝夜極端的光照變化,會使得依賴視覺特征復現性的SLAM系統失效;舊的環境結構消失,會導致基于環境幾何結構的SLAM系統失效。
惡劣環境(harsh environment)
SLAM算法魯棒性面臨的另一個挑戰,是其在惡劣環境下的運行,比如水下環境。這些惡劣環境下面臨的挑戰是:低能見度(low visibility),持續變化的環境,以及無法使用一些常用傳感器(如激光雷達等)。
研究現狀
前端短期數據關聯(short-term data association)
由數據關聯錯誤造成的魯棒性問題,既可以在SLAM系統的前端進行處理,也可以在SLAM系統的后端處理。一般來說,SLAM前端建立的數據關聯是可信的。短期的數據關聯是最容易處理的:如果傳感器的采樣頻率,相比于機器人自身的運動足夠快的話,那么對于同一3D路標的跟蹤就比較容易。比如,我們想從連續圖像中跟蹤一個3D點,且假設圖像的幀率足夠高,那么基于描述子的普通匹配方法,或者光流法就可以實現可靠的跟蹤。直觀上講,在高幀率情況下,傳感器(攝像頭、雷達)的視角變化不大,因此t+1時刻的特征與t時刻的特征非常接近(相比于長期數據關聯,短期的數據關聯問題更加簡單,關聯結果更加可靠,這也是視覺/慣性里程計比SLAM簡單的原因)。
前端長期數據關聯(long-term data association)
在SLAM前端進行長期數據關聯更具有挑戰性,它包括回環閉合的檢測和驗證(loop closure detection and validation)。
前端回環閉合檢測(loop closure detection )
對于SLAM前端的回環閉合檢測,一個比較直觀的方法就是,在當前觀測(比如圖像)中檢測特征,將其之前所有檢測到的特征進行對比,但考慮到計算量,這種暴力求解方法是不切實際的。詞袋模型(bag-of-words)通過對特征空間進行量化,從而實現了更加有效的搜索,避免了暴力搜索。詞袋模型可以設計為層級式字典樹(hierarchical vocabulary tree),這種結構可以實現大規模數據集中的高效查找。
基于詞袋模型的方法,在單次任務回環閉合檢測中表現出了非常可靠的性能。但是這些方法無法處理劇烈的光照變化,因為光照劇烈變化時,就無法與字典樹中的視覺單詞(visual word)匹配上了。為了處理這個問題,有的方法匹配圖像序列,有的方法把不同的視覺特征整合為同一的表示,還有的方法同時使用空間信息和視覺特征,視覺場景識別的詳細內容可參考綜述論文Visual Place Recognition: A Survey。在基于激光雷達的SLAM前端,基于特征的方法也可以用來進行回環閉合檢測。
前端回環閉合驗證(loop closure validation)
回環閉合驗證,指的是通過額外的幾何驗證步驟來確保回環閉合的質量。在基于視覺的方法中,通常使用RANSAC進行幾何校驗,剔除離群點(outlier)。在基于激光雷達的方法中,激光雷達通過之前的掃描已經建出了地圖,可以通過計算當前激光雷達的掃描值與地圖的匹配度,來完成對回環閉合的驗證。
后端回環閉合驗證
盡管可以通過各種方法去增強SLAM前端在回環閉合檢測中的魯棒性,錯誤的回環閉合檢測還是無法被完全避免,比如出現感知混淆(perceptual aliasing)的時候。SLAM后端獲取錯誤的回環閉合檢測信息,會嚴重影響后端極大后驗估計(MAP)的質量。為了處理這個問題,有研究者提出了一些方法,可以使SLAM后端對于前端傳遞過來的錯誤回環閉合信息更加魯棒。有些方法在后端優化中添加與回環閉合相關的殘差項,通過殘差值推斷回環閉合檢測的正確性。在有一些方法中,與里程計數據相悖的回環閉合檢測結果被認為是錯誤的回環檢測,進而在后端優化之前,獲取關于錯誤回環檢測的先驗信息。
動態環境的處理
動態環境對SLAM算法研究的挑戰主要有兩方面:
待解決的問題(open problem)
SLAM失效保護和恢復(failsafe SLAM and recovery)
盡管SLAM后端已經取得了很大進步,現在的SLAM系統求解器在出現離群點(outlier)時依然很脆弱。這主要是因為,幾乎所有的魯棒SLAM方案都是基于非凸目標函數的迭代優化,這會導致兩個結果:第一,離群點的去除效果取決于優化過程中初始估計的質量;第二,系統具有內生的脆弱性:后端優化即使只使用了一個離群點,都會降低狀態估計的質量,糟糕的狀態估計又會反過來降低系統剔除后續離群點的能力。
一個理想的SLAM系統應該具有失效保護和失效偵測的能力,系統必須能檢測到突發的失效情況(比如由離群點或者硬件老化造成的失效),要有恢復機制進行適當操作,使得系統能夠重新正常工作。現有的SLAM系統沒有這些功能。
對硬件失效的魯棒性(robustness to HW failure)
解決硬件失效問題并不屬于SLAM的研究范疇,但硬件失效會影響SLAM系統,SLAM系統反過來會對,檢測、減少傳感器失效和運動失效,發揮重要作用。如果傳感器精度由于硬件故障或老化而降低,那么傳感器的測量(包含噪聲和偏置),就不再與后端優化中所使用的傳感器噪聲模型相匹配,這會導致較差的估計結果。這就引出了各種需要研究的問題:如何檢測傳感器的不良運行狀態?如何相應地調整傳感器噪聲模型中的協方差和偏置?
幾何重定位(metric relocalization)
幾何重定位,是指估計機器人當前時刻,在已建地圖中的位姿。相對于基于特征(feature-based)的重定位,基于外觀(appearance-based)的重定位能在晝夜、不同的季節之間實現回環閉合檢測,但得到的回環閉合結果,本質上是拓撲的,是沒有幾何度量信息的。對于幾何度量重定位來說,基于特征的方法仍然是最常用的,而這種方法不能被擴展到晝夜、不同季節場景下的重定位。
目前很多SLAM系統都選擇視覺傳感器(攝像頭),魂環閉合問題變成了一個傳感器信號匹配的問題。盡管攝像頭是主要的傳感器,其它的傳感器數據和SLAM系統中的一些其它信息也可以用于幫助重定位。Brubaker等人使用軌跡(trajectory)匹配來克服相機的缺陷;先使用一種傳感器模式進行建圖,然后再建好的圖中使用另一種傳感器模式進行重定位,這也是一個研究方向。
另一個問題是,如何根據不同來源、不同視角的傳感器數據進行定位。Forster等人研究了在激光雷達地圖中的視覺定位問題。Majdik等人研究了如何在Google街景圖片的3D紋理圖上定位無人機。Behzadin等人展示了如何使用激光掃描儀在手繪地圖中定位。Winterhalter等人演示了如何在給定的2D戶型圖上,使用RGB-D傳感器進行定位。
隨時間變化的、可變形的地圖(time varing and deformable map)
主流SLAM系統都假設世界是靜止的,然而由于物體的動態變化,以及物體天然的變形特性,真實世界不是一成不變的。一個理想的SLAM方案應該能夠處理環境中的非剛體性(non-rigidity)等動態因素,能夠長時間工作生成全地形圖(“all terrain map”),而且能夠實時完成這些工作。
在計算機視覺領域,從80年代起就有研究嘗試恢復非剛性物體的形狀,但它們只能在限定條件下使用。比如Pentland等人的論文需要知道關于目標力學性質的先驗性息。Bregler等人的論文需要對目標的變形進行限定,他們展示了人臉形狀恢復的例子。近期的非剛體SFM研究成果,限定條件減少了,但仍然只能應用于小場景。在SLAM領域,Newcombe等人解決了非剛體場景下的小規模重建問題。然而,非剛體場景的大規模重建問題仍有待研究。
自動化調參(Automatic parameter tuning)
SLAM系統(尤其是數據關聯模塊)需要大量的參數調整,以保證其在給定的場景中能夠正常工作。這些參數包括控制特征匹配的閾值,RANSAC參數,向因子圖中添加新因子的標準,判斷回環閉合的標準。如果想要SLAM系統不經手動調整,就能在各種場景下使用,那就必須考慮參數自動調整。
SLAM的場景尺度(scalability)
現代SLAM系統已經成功地應用于室內場景。但在許多應用嘗試中,比如用于環境檢測的海洋探索機器人、城市中7天24小時工作的清潔機器人、大場景下的高精度農業機器人應用等,機器人需要在大場景中長時間工作。在這些應用中,隨著運行時間增長,機器人不斷探索新的位置,SLAM系統中因子圖的規模隨會一直增長,可能沒有邊界。而實際應用中機器人的計算時間和內存容量有限,因此設計出時間復雜度和內存占用有限的SLAM系統非常重要。
在最壞情況下,基于直接線性求解器的連續線性方法,其內存占用按照公式6中的變量數量的二次方增長。當使用線性迭代求解器(比如共軛梯度法)時,內存占用隨著變量數量線性增長。當多次路過同一個地方時,情況可能會更復雜,因為節點(node)和邊(edge)會被持續添加到同一個空間中,會破壞因子圖結構的稀疏性,因此因子圖優化的效率會變低。
研究現狀
這一部分的內容,回顧了當前控制、或者說是降低問題規模增長的方法。我們主要關注兩種降低因子圖復雜度的方法:
節點、邊緣稀疏化(node and edge sparsification)
這一類方法,通過減少添加到圖中的節點的數量,或者裁剪具有較少信息(less “informative”)的節點和因子,來解決問題規模過大的問題。Ila等人使用信息論方法,只將非冗余節點和信息含量高的節點添加到圖中。Johannsson等人盡量避免往圖中添加新的節點,而是在現有節點之間引入約束,這樣變量數量只取決于探索空間的大小,而不是運行時間。Kretzschmar等人提出了一種基于信息的評判標準(an information-based criterion),來決定將位姿圖優化中的哪些節點進行邊緣化。Carlevaris-Bianco和Eustice提出了線性約束因子(Generic Linear Constraint (GLC) factors),Mazuran等人提出了非線性圖稀疏化(Nonlinear Graph Sparsification (NGS) ),這兩種方法在一個邊緣化節點的馬爾可夫毯(markov blanket)上進行操作,它們計算出毯的稀疏近似。Huang等人通過求解一個L1范數最小化問題將Hessian矩陣稀疏化。
去中心化(并行)SLAM(out-of-core (parallel) SLAM)
SLAM并行算法,將因子圖優化的計算任務分配給多個處理器。主要的思路就是將因子圖拆分為子圖,先對每一個子圖進行局部優化,然后加上一個全局優化,這種方法通常被稱為子圖構建算法(submapping algorithm)。Ni等人展示了一種因子圖優化的子圖構建算法,還提出緩存子圖的因子分解(cache the factorization of the submaps)來加速計算。Ni和Dellaert使用二叉樹結構構建子圖,并使用嵌套分割(nested dissection)來減少兩個子樹之間的依賴。Zhao等人提出了一種針對大場景SLAM的近似策略,他們先處理一個子圖的序列,然后使用最小二乘法,以分治法(divide and conquer)的形式合并這些子圖。Frese等人提出了一種多層松弛方法(multi-level relaxation approach)。Grisetti等人提出了一種子圖層級結構:一旦有新的觀測值,就改動最頂層的子圖,只有被嚴重影響的區域,才在更底層的層級上去修改子圖。Suger等人提出了一種基于層次分解(hierarchical decomposition)的SLAM近似方法。Choudhary等人通過ADMM算法(Alternating Direction Method of Multipliers)實現并行計算。Klein和Muray將定位和建圖解耦為兩個并行的線程。Sibley等人通過對局部鄰域的相對參數化進行優化,來減少計算量。Strasdat等人采用了一種兩步走的方法,首先優化局部位姿-特征圖(pose-features graph),然后再優化位姿-位姿圖(pose-pose graph)。Williams等人將因子圖優化分解為兩個線程:一個速度較快的濾波線程,和一個速度較慢的平滑線程,他們之間周期性地同步。
分布式多機器人SLAM(distributed multi robot SLAM)
一種實現大尺度場景建圖的方法是使用多機器人SLAM,將整個大場景分成多個較小的區域,一個機器人負責一個小區域。這種方法主要有兩個變種:
Nerurkar等人提出了了一種基于分布式共軛梯度法的協作定位算法。Argues等人使用分布式雅可比方法估計一組2D位姿。Araguez等人調研了基于一致性的地圖融合方法。Knuth和Barooah使用分布式梯度下降法估計3D位姿。Cunnigham等人使用高斯消元法,開發了一種稱為DDF-SAM的方法,每個機器人通過隔離器(separators,多個機器人共享的變量)交換高斯邊緣。
高斯消元法是最常用的方法,但是它有兩個缺點:
第一,機器人之間需要交換的邊緣值(marginal)是稠密(dense)的,而且通信代價是隔離器(separators,多個機器人共享的變量)數量的二次方。這就催生了使用稀疏化技術來降低通信代價的方法。
第二,高斯消元法需要對問題進行線性化,因此像DDF-SAM這樣的方法需要很好的線性點,以及復雜的bookkeeping來確保多個機器人之間線性點的一致性。Choudhary等人提出Gauss-Seidel算法替代高斯消元法,這種算法的通信負擔隨隔離器數量線性增長。
待解決的問題
盡管有大量的研究工作致力于降低因子圖優化的復雜度,SLAM系統在諸如長時間運行(long-term operation)等方面還有很長的路要走。
地圖維護(map maintenance)
一個很少被研究的問題是,SLAM在長期工作的時候如何存儲地圖。即使在存儲資源沒那么緊張的情況下,比如將數據存儲在云端,直接使用點云地圖或者體素地圖(volumetric map)這樣的原始數據也是對存儲資源的極大浪費。類似的在視覺SLAM中,視覺特征描述子所占據的存儲空間很快就會變得很龐大。一些早期的方法最近被用來在壓縮過的先驗地圖中進行定位,或者進行存儲效率高的稠密重建。
魯棒分布式建圖(robust distributed mapping)
離群點(outlier)的去除在單機器人的情況下已經實現,但是在多機器人SLAM領域離群點的問題被忽略了。處理虛假的觀測值非常有挑戰性,這主要有兩個方面的原因:
學習,遺忘,記憶(learning, forgetting, remembering)
在長期建圖(long-term mapping)過程中,有很多有待解決的問題:以什么樣的頻率去更新地圖中的信息?如何判斷地圖信息過期(outdated)且可以被丟棄?什么事件可以丟棄地圖信息?哪些地圖信息是可以被丟棄的?哪些地圖信息是必須保留的?
這些問題都是與具體任務相關的(task-dependent),沒有絕對的答案。
資源有限的平臺(resource-constrained platform)
如何將現有的SLAM方案應用于計算資源非常有限的平臺,也是一個有待解決的問題。當平臺的尺寸變小時,這個問題就變得尤為重要,比如手機、微型無人機和機器昆蟲等。許多SLAM算法計算成本很高,無法在這些平臺上運行,因此需要開發能夠平衡計算精度和計算成本的SLAM算法。在多機器人場景下也面臨著資源限制的問題:如何保證機器人編隊在帶寬資源有限和通信不穩定的情況下可靠地運行?Cielewski等人提出的“版本控制”(“version control”)方法是在這個方向的最早嘗試。
地圖表示:幾何度量推理(metric reasoning)
幾何度量地圖,是編碼環境幾何信息的符號結構(symbolic structure)。在SLAM中,如何為SLAM選擇合適的幾何度量地圖(或者擴展機器人當前所使用的幾何度量地圖),會影響許多研究領域,包括長時間導航、與環境的物理交互、人機交互。
在2D情況下,構建環境的幾何模型相對簡單,只有兩種主要范式:
2D環境中地圖的標準化問題,已經被IEEE RAS Map Data Representation Working Group解決了,可參見他們的論文IEEE Standard for Robot Map Data Representation for Navigation。這個標準定義了平面環境的兩種幾何度量地圖表示(還有拓撲地圖),用于數據交換(data exchange),參照基準(benchmarking)和技術轉移(techonology transfer)。
3D環境的集合建模相對復雜(delicate),如何有效地對3D環境進行幾何建模,仍處于研究的早期階段。下面會以一個跨越機器人學(robotics)、計算機視覺(computer vision)、計算機輔助設計(CAD, computer aided design)和計算機圖形學(computer graphics)的廣闊視角,回顧3D環境的幾何建模方法。
稀疏路標表示(landmark-based sparse representation)
大多數SLAM方法把環境表示為3D稀疏路標的集合,這些路標對應著環境中有區分度的特征(比如線、角點等)。比較典型的例子有ORB-SLAM生成的稀疏點云地圖:
這種地圖通常被稱為基于路標的表示(landmark-based representation)或者基于特征的表示(feature-based representation)。在SLAM的早期研究中,基于稀疏路標表示的地圖就被廣泛應用于移動機器人。這種地圖都有一個共同的假設前提:路標是有區分度的。具體來說,傳感數據不僅可以提供關于路標的幾何方面的數據,還要提供一個描述子,用來建立測量值與對應路標之間的數據關聯。大量稀疏路標地圖的工作集中在點特征的估計,機器人領域將稀疏路標地圖擴展到了更加復雜的幾何路標,包括線、區域和圓弧等。
低層原始數據稠密表示(low-level raw dense representation)
與基于稀疏路標表示的地圖不同,稠密表示旨在提供高分辨率的3D幾何模型,這種模型更加適合機器人避障和路徑規劃,或者用于可視化和渲染:
在這些稠密表示模型中,低層原始數據描述3D幾何信息的方式有:使用非結構化的點集(點云)、使用多邊形集合(polygon soup)等。通過使用雙目相機、RGBD相機以及3D激光掃描儀等傳感器,點云模型(point cloud)已經在機器人領域中被廣泛應用。點云模型最近在單目直接法SLAM中流行起來,這種方法直接使用所有圖像像素的亮度值,估計機器人運動軌跡和構建環境的3D模型。
面元地圖(surfel map, sufel 是surface element的縮寫,在3D計算機圖形學中,面元模型是多邊形模型的一中替代選擇)稍微復雜一些的表示,面元地圖用圓片集合(a set of disks)編碼幾何信息。
這些稠密表示地圖的視覺效果很好,但是它們很笨重,因為需要存儲大量的數據。而且這種地圖對幾何信息的描述是低層級的,它們忽視了障礙物的拓撲結構。
邊界和空間分割稠密表示(boundary and spatial-partitioning dense representation)
不同于使用低層數據的非結構化點云地圖,邊界和空間分割稠密表示顯式地對表面(邊界)和體積進行建模。
邊界表示通過物體的表面邊界對其進行3D建模。基于平面的模型是一種比較簡單邊界表示模型,更加一般的邊界表示包括基于曲線的表示(比如NURBS或B-splines的張量積),表面網格模型(相互連接的一些列多邊形)和隱式曲面表示(通過一個定義在R3上函數的零點來確定表面,這類函數包括徑向基函數、符號距離函數SDF和截斷符號距離函數TSDF等)。在機器人領域,TSDF是視覺SLAM常用的表示方法。
空間劃分表示將3D物體表示為表面相鄰的不相交基元,最常用的方法是空間占用枚舉法(Spatial-occupancy Enumeration),這種方法將空間劃分為相同的一系列小立方體(體素),這些小立方體通常用3D柵格的形式組織。更有效的空間分割方法有八叉樹,多邊形地圖八叉樹和二值空間分割樹等。在機器人應用中,八叉樹表示已經被用于3D建圖。柵格占據地圖(每個柵格是否被占據,由一個概率值表示)可以看作是空間劃分表示的一種概率形式上的變體。在沒有懸空障礙物的3D環境中,也可以使用2.5D高程地圖。
基于特征的稀疏方法、基于直接法的稠密方法,哪一種更好?答案取決于具體任務和性能要求(比如時間、精度和失效率等)。基于特征的方法存在一些缺點:依賴于特征的類型;依賴用于檢測和匹配的大量閾值參數;需要魯棒估計技術來處理錯誤的匹配結果;大部分特征檢測器在設計上的優化目標往往是速度,而不是準確度。基于直接法的稠密點云地圖,使用圖像中的所有信息,甚至是像素梯度很小的區域,因此它在低紋理場景、失焦和運動模糊的情況下性能由于基于特征的方法。然而稠密直接法需要很強的計算能力(GPUs),才能保證實時性。另外,如何聯合估計環境的稠密結構和自身運動,仍然有待解決(目前只能依次進行:先估計一個,然后估計另一個)。有兩種方法可以克服基于特征稀疏方法的缺點:
基于物體的高階表示(high-level object-based representation)
盡管目前點云表示和邊界表示在稠密建圖領域占據著統治地位,但是高層表示,比如物體(object)和實體形狀(solid shape)等,會在未來的SLAM中扮演著重要的角色。目前已有一些使用高階物體表示的SLAM系統,比如SLAM++等。實體表示(solid representation)顯式編碼了這樣一個事實:真實世界中的物體是三維的,而不是一維的(點)或者二維的(表面)。用實體形狀表示對物體建模,便于把物理屬性(比如體積、質量等)與物體進行關聯,這些物理屬性對機器人與環境交互至關重要。幸運的是,現有領域比如CAD和計算機圖形學已經在這些方面有很大發展。舉一些實體形狀表示的例子:
- 參數化基元實例化(parameterized primitive instancing)。這種表示方法依賴于對一系列物體簇(比如圓柱體、球體)的定義。對于每一簇物體,給定一組參數(比如半徑、高度)的值,就可以唯一地確定該簇物體中的一個實例。據我所知,目前沒有采用這種表示方法的SLAM系統;
- 掃描表示法(sweep representation)。掃描表示法包含兩個要素:一是做掃描運動的2D圖形(截面)或3D物體,二是掃描運動的方式。根據簡單的運動規則,2D或3D物體沿著空間中的軌跡掃描,生成實體。常用的掃描表示方法有:平移掃描和旋轉掃描。比如,一個圓柱體可以由一個圓沿著與其垂直的軸所在的方向掃描得到。在計算機視覺中,2D cross-sections 被稱為generalized cylinders,這種方法已經被用于機器人抓取。據我所知,目前并沒有SLAM系統使用掃描表示法。
- 構造實體幾何(constructive solid geometry)。這種表示法通過基元之間的布爾運算(布爾運算是數字符號化的邏輯推演法,包含聯合、相交、相減)來定義復雜實體。一個實體被表示為一顆二叉樹,樹的節點表示構成實體的基元,樹的邊表示基元之間的布爾運算(機械設計課程中,使用solidworks畫圖時,零件似乎就是用這種形式構造的)。據我所知,目前也沒有SLAM系統使用這種表示方法。
除此之外,還有一些其它的表示方法,包括feature-based models in CAD、affordance-based models、generative and procedural models和scene graphs。值得一提的是,機器人領域和計算機視覺領域已經開始考慮使用基于詞典的表示法,這種表示法通過詞典中詞的組合來定義實體。這個詞典可以通過對數據的學習得到,也可以是基于現有的物體模型。
待解決的問題(open problem)
以下這些關于SLAM中幾何度量表示的問題,需要大量的基礎研究,仍然有很多未知領域有待探索。
SLAM中的高層表示(high-level, expressive representations in SLAM)
最優表示(optimal representations)
自動、自適應表示(automatic, adaptive represetation)
地圖表示:語義推理(semantic reasoning)
語義建圖(semantic mapping)需要將語義信息與機器人所處環境中的幾何實體進行關聯。最近,人們已經意識到了純粹幾何地圖的局限性,在構建環境語義地圖方面產生了很多的重要工作。語義地圖可以提升機器人的自主性和魯棒性、使機器人能夠處理更加復雜的任務(比如在行駛過程中避免泥濘道路)、從路徑規劃(path-planning)變成任務規劃(task-planning),以及實現高級的人機交互。在語義地圖方面,有著大量不同的方法,它們所使用語義信息的數量和類別不盡相同,也使用不同的方法將語義信息與環境中的不同部分進行關聯。此外,也有一些方法將低層的語義分析表述為一個分類問題,它們考慮的是傳感器數據與語義信息之間的簡單映射。
語義SLAM vs 拓撲SLAM(semantic SLMA vs topological SLAM)
拓撲建圖舍棄了幾何度量信息,僅僅通過場景識別來構建圖(graph,圖論中的圖),圖中的節點(node)表示不同的位置,圖中的邊(edge)表示不同位置之間的連通情況。語義建圖與拓撲建圖完全不同,拓撲建圖需要識別之前看到過的地方(不管它到底是廚房、走廊、或者別的什么),而語義建圖則需要根據語義標簽對這些位置進行分類。
語義的結構和具體內容(semantic SLAM: structure and detail of concepts)
對于人類來說,可能有無數的概念,這些概念之間也有著無數的相互關系,但是人類是任務驅動的(task-driven),根據任務需求,人類可以更加睿智的去選擇不同的層級和組織結構來使用這些概念。人類的這種特性,對于構建智能機器人是有借鑒意義的。語義的具體內容和組織方式,取決于機器人所處的環境,以及機器人所需要執行的任務。而語義的具體內容和組織方式,會在不同的階段影響問題的復雜性。因此,構建語義地圖需要確定以下兩方面的內容:
語義建圖的研究現狀
在語義建圖或賦予數據語義信息方面,目前有3種主要方法:
待解決的問題(open problem)
語義SLAM不像幾何度量SLAM那樣有一套成熟的框架,而是尚處于研究的早期階段。
人類通過語義理解,可以預測環境在不同時間尺度下的變化情況。以上圖中中的一個工地為例,我們人類可以理解圖片底部的吊車的運動,并且可以預測它在短期內不會移動,同時我們還可以預測工地在施工完成后的外形,這樣在施工結束后,我們依然可以在完成自己在工地中的定位。這得益于人類可以對環境中目標的功能以及它們之間的相互關系進行推理,使機器人能夠具備相似的能力是語義SLAM中有待解決的問題。從工地的例子中,可以發現語義SLAM面臨的以下挑戰。
語義建圖不只是一個分類問題
語義概念要被處理為更加特定的信息,比如地圖中實體的affordance和actionability(affordance指的是,對于給定的環境或者物體,給定的agent可能采取的動作的集合,actionability指的是這些動作的預期效用),以及環境中不同agent之間可能產生的交互。如何表示這些屬性和相互關系,是高層的人機交互需要解決的問題。
忽略、察覺和適應(ignorance, awareness, and adaptation)
給定一些先驗知識,機器人要能夠推理出新的概念和它們的語義表示。也就是說,機器人要能夠發現環境中新的目標和類別,在與其它機器人或人類的交互中學習新的屬性,對環境中緩慢的或者突然的變化,自適應地采取相應的表示方法。
舉個例子,一個輪式機器人需要分辨地形是否可行駛,然后通知導航系統。如果機器人發現道路上有泥巴,根據之前的分類結果,道路是可行駛的,機器人需要根據穿越這個泥濘地形的難度學習出一個新的類別,如果機器人察覺到有其它車輛陷在了泥濘中,那么它也要相應地調整它的分類器。
基于語義的推理
對于人類而言,我們可以利用語義信息,對環境進行壓縮,以及加速對環境的推理,而確定精確的集合度量對人類來說是很困難的事情。然而對于目前的機器人來說,卻不是這樣,機器人可以處理(帶有顏色信息)的集合度量表示,但它們不能真正地利用語義信息。目前我們的機器人還不能夠通過環境中的語義信息(類別、相互關系和屬性),進行有效的、高效的定位和持續建圖。
舉個例子:當機器人探測到一輛汽車時,它應該能夠推理出汽車下的 地面(即使有遮擋),而且當這輛汽車移動時,機器人的傳感器會獲取新的數據,地圖更新應該可以優化之前猜測的地面。甚至,在優化地面的同時,機器人應該能夠通過單一有效的操作,將汽車作為一個整體更新其全局坐標,而不是更新每一個單一的體素。
SLAM中的新理論工具
主動SLAM(active SLAM)
SLAM中的新傳感器
總結
以上是生活随笔為你收集整理的SLAM:现在,未来和鲁棒感知时代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国大学最顶尖的学科名单(人民日报整理版
- 下一篇: 牛逼哄哄的SLAM技术即将颠覆哪些领域