Nav2 成本地圖層:靜態、障礙、體素與膨脹設定

Nav2 成本地圖結合了關於移動機器人可能行進位置的多個主張。靜態層貢獻地圖上的佔用率,觀測層新增並清除動態障礙物,膨脹將幾何結構轉化為分級淨空成本,過濾器則應用如禁止進入或速度限制等規則。最終網格是規劃器與控制器共同依賴的介面約定。

在 RViz 中,設定看起來可以很有說服力,但卻帶有陳舊的觀察值、錯誤的足跡或影格不匹配。只有在其源、時間戳、轉換、更新行為和故障反應都可觀察到後,才對圖層進行調優。否則,參數更改可能會隱藏症狀,而非糾正環境模型。

請將此指南與 機器人 SLAM 指南TF2 框架指南一起使用。在生產釋出前,在代表性的地板、障礙物和交通狀況上驗證機器人。

將成本地圖視為分層環境合約

成本地圖不是原始感測器影像。每個外掛都會根據宣告的影格、尺寸、組合規則和時序,將特定源轉換為單元成本。記錄哪層擁有對映的牆體、瞬態障礙物、淨空、限制區和未知空間,避免兩層相互矛盾。

目前 Nav2 Costmap 2D 檔案 分別描述外掛和過濾器。在設定審查中保持區分:普通外掛貢獻於合併成本地圖,而過濾器則在分層地圖之後應用,以處理策略效果,如禁止或限速。

TurtleBot3 漢堡,配備光達輪、超聲波感測器和裸露電子裝置
成本地圖質量取決於機器人的佔地面積、感測器位置以及模型所代表的環境。來源:Kuscu0,維基共享資源。許可:CC BY-SA 4.0

選擇全域和本地地圖職責

全域成本地圖通常代表穩定全域框架下的路線尺度環境,而區域性滾動成本地圖則提供目前附近的約束以供控制。它們可能使用不同的維度、更新率和觀測源。將一個設定複製到兩個地圖中會浪費資源並混淆故障歸屬。

對於每張地圖,說明其規劃消費者、影格、滾動視窗行為、解析度及最大可接受年齡。全域規劃器可能容忍地圖更新速度低於本地控制器,但兩者都不應使用變換或源新鮮度超過導航契約的網格。

圖層或設定主要工作失敗症狀首次證據
靜態層地圖佔用率路線穿牆或堵住通道開口地圖版本與框架
障礙層2D 標記與清除暫時物件缺失或持續幽靈掃描年齡與光線追蹤
體素層3D 觀測緩衝高度障礙物處理不當點雲和體素設定
膨脹層清場成本偷工減料或無謂繞道覆蓋面積與成本梯度
隔水濾波器策略限制機器人進入禁區掩膜對齊和濾波器資訊

在調校間隙前凍結機器人幾何體

當底座不被圓圈很好地表示時,使用多邊形封裝。包含可能碰撞的固定突出部分,並定義附件或攜帶負載如何更新封裝。填充是額外的餘裕;它不應補償因條件變化而產生的物理輪廓錯誤或定位不確定性。

透過在靜止機器人周圍放置已知點,並在多個航向處檢查碰撞分類,驗證幾何形狀。旋轉不對稱的足跡可能會暴露直線路徑上隱藏的誤差。將腳印調整為機械設定,拒絕未知有效負載形狀,而不是假設最小基底。

將靜態層設定為版本管理地圖證據

靜態層通常訂閱佔用網格,並將對映的結構轉移到成本地圖中。確認地圖主題、框架、永續性策略以及是否預期更新。在收到預期地圖前啟動的機器人,可能看起來就緒,環境模型為空或舊。

將地圖身份和校驗和儲存在部署記錄中。測試替換、重啟和地圖伺服器丟失。決定機器人在靜態證據消失時是停止、繼續有界間隔,還是降級為其他模式;正確選擇取決於本地地圖和操作風險。

以五個步驟整理Nav2 成本地圖層:靜態、障礙、體素與膨脹設定的判讀重點
依正文與一手資料整理的繁體中文實務卡。來源:Physical AI Lab。

讓障礙標記和清除過程可以獨立觀察

觀測層通常標記檢測單元並沿感測器射線清除。資料來源可以正確標記障礙物,但清除失敗,因為光線追蹤距離、最小距離、變換時序或無效回波不同。檢查這兩種操作時,都有一個臨時障礙物進出感測器場的每個部分。

設定障礙物和光線追蹤範圍,基於已驗證的感測器效能,而非最大宣傳冊距離。記錄源類型、主題、影格、永續性和預期速率。當源停止時,測量其障礙物證據持續多久,以及持續時間是否符合停止距離假設。

測試受控變更期望對映反應拒絕
標記插入目標柵格單元在限制範圍內變為佔用狀態目標被遺漏或延遲
清理移除目標射線將單元返回允許狀態幽靈持續存在,超出極限
源流損失停止資訊宣告過時的資料策略發生舊網格看起來很現代
變換延遲延遲 TF更新被拒絕或被限制錯誤的障礙已接受
重啟重啟感測器和成本地圖層恢復時沒有重複狀態未知的缺口被隱藏

只有在高度改變決策時才使用體素資料

體素層可以在將碰撞資訊投影到二維之前緩衝三維觀測。當障礙物高度和懸垂行為重要時,體素層非常有用,但其垂直起點、解析度、體素計數和標記閾值會形成另一個模型,必須與機器人身體進行測試。

根據碰撞幾何和感測器位置選擇障礙物的最小和最大高度。測試低托盤、桌面邊緣、叉形和懸垂。當地面移除、稀疏回波或投影閾值丟棄相關結構時, 3D 點雲無法保證正確的障礙物選擇。

透過封裝淨空和行為調節膨脹

通脹會在接近致命障礙物時賦予更高的成本,因此規劃器和控制者可以優先考慮淨空。通脹半徑定義受影響的鄰域,而縮放因子則決定成本下降的速度。這些參數會影響偏好;它們不能取代精確的足跡碰撞檢查。

從所需的物理間隙和定位不確定性開始,然後測試走廊、門口和拐角。測量無接觸透過率、路徑長度和假阻擋。如果機器人在狹窄開口附近振盪,檢查幾何形狀、定位和控制器行為,然後再簡單地縮小膨脹。

使用對齊面罩應用禁入和速度策略

成本地圖過濾器可以表達策略疊加層,如禁區或速度區。它們的掩碼和後設資料必須與預期的地圖影格、原點和解析度對齊。即使濾波器外掛處於啟用狀態且無報錯,目視可見的錯位掩碼也可能造成危險的策略缺口。

測試每個邊界的兩側,並在地圖重新載入後進行測試。記錄誰負責規則變更,以及機器人同步規則的速度。將缺失或過時的強制過濾視為準備失敗,而非許可使用未過濾的成本地圖。

預算更新、釋出和轉換時機分別進行

更新頻率控制地圖處理輸入的頻率;釋出頻率控制向消費者或視覺化傳送表示的頻率。感測器速率、轉換可用性和執行者延遲也影響柵格單元的資料時效。提高發布頻率無法使陳舊源證據保持新鮮。

對觀測時間戳進行測量,並測量在 CPU 和網路負載下的到達到地圖延遲。跟蹤最壞情況和高百分位年齡,而不僅僅是平均速率。為每個所需源定義超時反應,確保控制器不會繼續,因為最後顯示的網格看起來仍然合理。

將未知空間與確認的自由空間分離

未知意味著系統缺乏證據,而非該區域有人居住或自由。追蹤未知空間的選擇以及規劃器是否能穿越該空間應遵循任務背景。探索、繪製地圖的倉庫和公共走廊可能需要不同的策略。

練習繪製邊界、感測器陰影和新開放區域。報告紀錄中的未知單元行為和驗收結果。將未知轉換為自由,可能改善可達性,同時消除解釋機器人為何進入未被觀察區域的證據。

參數調優前診斷層所有權

當導航失敗時,將各個層的輸出、合併成本地圖、變換、佔地、感測器樣本和規劃器請求儲存在一個共同的時間線上。阻塞的路線可能來自靜態牆、未清理的觀測、膨脹或禁止遮罩;糾正措施因所有者而異。

一次改變一個假設,並在可能的情況下重演相同證據。比較假陽性停車、錯過障礙物、路徑清理和恢復時間。避免僅憑一次視覺改善的跑步就宣佈成功,因為環境變異可能掩蓋原始缺陷。

釋出帶有物理迴歸套件的成本地圖

構建玻璃、深色材料、細腿、低矮物體、懸垂、門、狹窄通道、移動人員和源頭失效的試驗。包括機器人旋轉和載重。驗證檢測和清除,以及變換或地圖在運動中重新啟動時的反應。

儲存軟體版本、外掛順序、參數、地圖、感測器韌體和測試分發及結果。每當幾何、感測、定位或導航外掛發生變化時,請使用此釋出清單。

評估“Nav2 成本地圖層:靜態、障礙、體素與膨脹設定”時,還應儲存模型版本、機器人設定、校正檔案、測試日期和全部試驗記錄。

  • 為每層標明來源、影格和年齡限制。
  • 確認標記和清除是兩個不同的行為。
  • 調整策略面罩,摒棄陳舊的強制過濾。
  • 測量與已部署足跡的物理間隙。
  • 保留單個層次的證據以供事件診斷。

常見問題

預設 Nav2 costmap 外掛有哪些?

目前 Nav2 檔案預設在外掛列表未覆蓋時,預設設定是靜態層、障礙層和膨脹層。

全域和區域性成本地圖應該使用相同的圖層嗎?

不一定。它們的受眾、影格、空間範圍、更新率和所需證據可能不同。

通脹會讓機器人在物理上變大嗎?

不會。它改變了障礙物周圍的單元成本。封地和填充描述了碰撞幾何和邊界。

為什麼障礙物被移除後依然存在?

清除可能缺少有效的射線、距離、變換或時間。檢查清除應獨立於標記。

RViz 的成本地圖足夠接受嗎?

不行。驗收需要定時體能測試、源損失行為和在代表性條件下的測量許可。

CostMap 證據與安全邊界

成本地圖是一個應用環境模型,而非獨立的安全防護裝置。驗證機器人及工作場所風險的感知、時序與停止防護措施。

相關主題:倉儲揀選機器人如何運作?架構、指標與導入判斷