論文導讀:Cartographer——即時 2D 光達 SLAM 的迴圈閉合怎麼做才夠快
Wolfgang Hess, Damon Kohler, Holger Rapp, Daniel Andor · 2016原文連結
論文資訊卡
- 標題:Real-Time Loop Closure in 2D LIDAR SLAM
- 作者:Wolfgang Hess、Damon Kohler、Holger Rapp、Daniel Andor(Google)
- 發表:IEEE International Conference on Robotics and Automation (ICRA), 2016
問題背景
圖優化路線的 SLAM 精度雖然普遍優於濾波方法,但迴圈閉合——判斷機器人目前是否回到先前去過的地點——本身的計算成本會隨著已建立的地圖規模持續增長:機器人每移動到一個新位置,理論上都要拿目前的觀測跟過去累積的所有歷史觀測做比對,才能可靠偵測出迴圈閉合的機會,這個比對成本在大範圍、長時間運行的場景下會變得難以負擔。Cartographer 要解決的問題,是如何讓迴圈閉合這個計算成本高的關鍵步驟,在大範圍場景下仍然能維持即時運行。
方法核心:局部 SLAM 建子地圖,全域 SLAM 做稀疏位姿圖優化
Cartographer 把系統拆成兩個子系統:局部 SLAM(也稱為前端,local trajectory builder)負責把連續進來的光達掃描持續整合成一系列子地圖(submap)——每個子地圖只涵蓋機器人在一小段連續時間內移動的局部區域,掃描資料透過掃描匹配(scan matching)持續疊加進目前正在建立的子地圖,直到這個子地圖涵蓋的範圍夠大,才開始建立下一個新的子地圖。全域 SLAM(後端,global SLAM)則以子地圖為基本單位運作:當一個新掃描進來,除了跟目前局部子地圖比對之外,全域 SLAM 也會拿它去跟過去已經完成的子地圖做比對,一旦偵測到跟某個舊子地圖高度吻合,就判定為一次迴圈閉合,把這個約束加入一個稀疏的位姿圖(pose graph)裡,透過位姿圖最佳化把所有子地圖之間的相對位置關係重新求解,修正長時間累積的漂移。
這個「以子地圖為單位做比對,而不是以每一幀原始掃描為單位」的設計,是 Cartographer 能維持即時效能的關鍵——比對的候選數量從「歷史上所有掃描幀」大幅降低到「歷史上所有子地圖」,數量級明顯縮小;同時論文採用分支定界(branch-and-bound)搜尋方法加速掃描匹配過程,進一步降低迴圈閉合候選搜尋的計算量。這套架構與SLAM 完整原理一文介紹的圖優化框架一致——節點是子地圖的位姿、邊是子地圖之間的相對變換約束,只是 Cartographer 選擇用子地圖而不是單一位姿幀作為圖優化的基本節點單位,這正是它能把圖的規模控制在可即時求解範圍內的核心設計選擇。
影響與定位
Cartographer 由 Google 開源後,成為 ROS/ROS2 生態系裡最廣泛被使用的 2D/3D 光達 SLAM 套件之一,也是本站SLAM Toolbox 建圖基礎一文介紹的建圖工具背後所延續的技術脈絡之一。它證明了「用子地圖做為圖優化基本單位」這個設計選擇,能在不犧牲精度的前提下大幅降低迴圈閉合的計算負擔,這個思路後續也影響了不少 3D 光達與視覺 SLAM 系統在後端架構上的設計,是連接理論上的圖優化框架與實際能在資源受限的機器人硬體上即時運行系統之間的重要工程範例。