Nav2 成本地圖結合了關於移動機器人可能行進位置的多個主張。靜態層貢獻地圖上的佔用率,觀測層新增並清除動態障礙物,膨脹將幾何結構轉化為分級淨空成本,過濾器則應用如禁止進入或速度限制等規則。最終網格是規劃器與控制器共同依賴的介面約定。
在 RViz 中,設定看起來可以很有說服力,但卻帶有陳舊的觀察值、錯誤的足跡或影格不匹配。只有在其源、時間戳、轉換、更新行為和故障反應都可觀察到後,才對圖層進行調優。否則,參數更改可能會隱藏症狀,而非糾正環境模型。
請將此指南與 機器人 SLAM 指南 及 TF2 框架指南一起使用。在生產釋出前,在代表性的地板、障礙物和交通狀況上驗證機器人。
將成本地圖視為分層環境合約
成本地圖不是原始感測器影像。每個外掛都會根據宣告的影格、尺寸、組合規則和時序,將特定源轉換為單元成本。記錄哪層擁有對映的牆體、瞬態障礙物、淨空、限制區和未知空間,避免兩層相互矛盾。
目前 Nav2 Costmap 2D 檔案 分別描述外掛和過濾器。在設定審查中保持區分:普通外掛貢獻於合併成本地圖,而過濾器則在分層地圖之後應用,以處理策略效果,如禁止或限速。

選擇全域和本地地圖職責
全域成本地圖通常代表穩定全域框架下的路線尺度環境,而區域性滾動成本地圖則提供目前附近的約束以供控制。它們可能使用不同的維度、更新率和觀測源。將一個設定複製到兩個地圖中會浪費資源並混淆故障歸屬。
對於每張地圖,說明其規劃消費者、影格、滾動視窗行為、解析度及最大可接受年齡。全域規劃器可能容忍地圖更新速度低於本地控制器,但兩者都不應使用變換或源新鮮度超過導航契約的網格。
| 圖層或設定 | 主要工作 | 失敗症狀 | 首次證據 |
|---|---|---|---|
| 靜態層 | 地圖佔用率 | 路線穿牆或堵住通道開口 | 地圖版本與框架 |
| 障礙層 | 2D 標記與清除 | 暫時物件缺失或持續幽靈 | 掃描年齡與光線追蹤 |
| 體素層 | 3D 觀測緩衝 | 高度障礙物處理不當 | 點雲和體素設定 |
| 膨脹層 | 清場成本 | 偷工減料或無謂繞道 | 覆蓋面積與成本梯度 |
| 隔水濾波器 | 策略限制 | 機器人進入禁區 | 掩膜對齊和濾波器資訊 |
在調校間隙前凍結機器人幾何體
當底座不被圓圈很好地表示時,使用多邊形封裝。包含可能碰撞的固定突出部分,並定義附件或攜帶負載如何更新封裝。填充是額外的餘裕;它不應補償因條件變化而產生的物理輪廓錯誤或定位不確定性。
透過在靜止機器人周圍放置已知點,並在多個航向處檢查碰撞分類,驗證幾何形狀。旋轉不對稱的足跡可能會暴露直線路徑上隱藏的誤差。將腳印調整為機械設定,拒絕未知有效負載形狀,而不是假設最小基底。
將靜態層設定為版本管理地圖證據
靜態層通常訂閱佔用網格,並將對映的結構轉移到成本地圖中。確認地圖主題、框架、永續性策略以及是否預期更新。在收到預期地圖前啟動的機器人,可能看起來就緒,環境模型為空或舊。
將地圖身份和校驗和儲存在部署記錄中。測試替換、重啟和地圖伺服器丟失。決定機器人在靜態證據消失時是停止、繼續有界間隔,還是降級為其他模式;正確選擇取決於本地地圖和操作風險。

讓障礙標記和清除過程可以獨立觀察
觀測層通常標記檢測單元並沿感測器射線清除。資料來源可以正確標記障礙物,但清除失敗,因為光線追蹤距離、最小距離、變換時序或無效回波不同。檢查這兩種操作時,都有一個臨時障礙物進出感測器場的每個部分。
設定障礙物和光線追蹤範圍,基於已驗證的感測器效能,而非最大宣傳冊距離。記錄源類型、主題、影格、永續性和預期速率。當源停止時,測量其障礙物證據持續多久,以及持續時間是否符合停止距離假設。
| 測試 | 受控變更 | 期望對映反應 | 拒絕 |
|---|---|---|---|
| 標記 | 插入目標 | 柵格單元在限制範圍內變為佔用狀態 | 目標被遺漏或延遲 |
| 清理 | 移除目標 | 射線將單元返回允許狀態 | 幽靈持續存在,超出極限 |
| 源流損失 | 停止資訊 | 宣告過時的資料策略發生 | 舊網格看起來很現代 |
| 變換延遲 | 延遲 TF | 更新被拒絕或被限制 | 錯誤的障礙已接受 |
| 重啟 | 重啟感測器和成本地圖 | 層恢復時沒有重複狀態 | 未知的缺口被隱藏 |
只有在高度改變決策時才使用體素資料
體素層可以在將碰撞資訊投影到二維之前緩衝三維觀測。當障礙物高度和懸垂行為重要時,體素層非常有用,但其垂直起點、解析度、體素計數和標記閾值會形成另一個模型,必須與機器人身體進行測試。
根據碰撞幾何和感測器位置選擇障礙物的最小和最大高度。測試低托盤、桌面邊緣、叉形和懸垂。當地面移除、稀疏回波或投影閾值丟棄相關結構時, 3D 點雲無法保證正確的障礙物選擇。
透過封裝淨空和行為調節膨脹
通脹會在接近致命障礙物時賦予更高的成本,因此規劃器和控制者可以優先考慮淨空。通脹半徑定義受影響的鄰域,而縮放因子則決定成本下降的速度。這些參數會影響偏好;它們不能取代精確的足跡碰撞檢查。
從所需的物理間隙和定位不確定性開始,然後測試走廊、門口和拐角。測量無接觸透過率、路徑長度和假阻擋。如果機器人在狹窄開口附近振盪,檢查幾何形狀、定位和控制器行為,然後再簡單地縮小膨脹。
使用對齊面罩應用禁入和速度策略
成本地圖過濾器可以表達策略疊加層,如禁區或速度區。它們的掩碼和後設資料必須與預期的地圖影格、原點和解析度對齊。即使濾波器外掛處於啟用狀態且無報錯,目視可見的錯位掩碼也可能造成危險的策略缺口。
測試每個邊界的兩側,並在地圖重新載入後進行測試。記錄誰負責規則變更,以及機器人同步規則的速度。將缺失或過時的強制過濾視為準備失敗,而非許可使用未過濾的成本地圖。
預算更新、釋出和轉換時機分別進行
更新頻率控制地圖處理輸入的頻率;釋出頻率控制向消費者或視覺化傳送表示的頻率。感測器速率、轉換可用性和執行者延遲也影響柵格單元的資料時效。提高發布頻率無法使陳舊源證據保持新鮮。
對觀測時間戳進行測量,並測量在 CPU 和網路負載下的到達到地圖延遲。跟蹤最壞情況和高百分位年齡,而不僅僅是平均速率。為每個所需源定義超時反應,確保控制器不會繼續,因為最後顯示的網格看起來仍然合理。
將未知空間與確認的自由空間分離
未知意味著系統缺乏證據,而非該區域有人居住或自由。追蹤未知空間的選擇以及規劃器是否能穿越該空間應遵循任務背景。探索、繪製地圖的倉庫和公共走廊可能需要不同的策略。
練習繪製邊界、感測器陰影和新開放區域。報告紀錄中的未知單元行為和驗收結果。將未知轉換為自由,可能改善可達性,同時消除解釋機器人為何進入未被觀察區域的證據。
參數調優前診斷層所有權
當導航失敗時,將各個層的輸出、合併成本地圖、變換、佔地、感測器樣本和規劃器請求儲存在一個共同的時間線上。阻塞的路線可能來自靜態牆、未清理的觀測、膨脹或禁止遮罩;糾正措施因所有者而異。
一次改變一個假設,並在可能的情況下重演相同證據。比較假陽性停車、錯過障礙物、路徑清理和恢復時間。避免僅憑一次視覺改善的跑步就宣佈成功,因為環境變異可能掩蓋原始缺陷。
釋出帶有物理迴歸套件的成本地圖
構建玻璃、深色材料、細腿、低矮物體、懸垂、門、狹窄通道、移動人員和源頭失效的試驗。包括機器人旋轉和載重。驗證檢測和清除,以及變換或地圖在運動中重新啟動時的反應。
儲存軟體版本、外掛順序、參數、地圖、感測器韌體和測試分發及結果。每當幾何、感測、定位或導航外掛發生變化時,請使用此釋出清單。
評估“Nav2 成本地圖層:靜態、障礙、體素與膨脹設定”時,還應儲存模型版本、機器人設定、校正檔案、測試日期和全部試驗記錄。
- 為每層標明來源、影格和年齡限制。
- 確認標記和清除是兩個不同的行為。
- 調整策略面罩,摒棄陳舊的強制過濾。
- 測量與已部署足跡的物理間隙。
- 保留單個層次的證據以供事件診斷。
常見問題
預設 Nav2 costmap 外掛有哪些?
目前 Nav2 檔案預設在外掛列表未覆蓋時,預設設定是靜態層、障礙層和膨脹層。
全域和區域性成本地圖應該使用相同的圖層嗎?
不一定。它們的受眾、影格、空間範圍、更新率和所需證據可能不同。
通脹會讓機器人在物理上變大嗎?
不會。它改變了障礙物周圍的單元成本。封地和填充描述了碰撞幾何和邊界。
為什麼障礙物被移除後依然存在?
清除可能缺少有效的射線、距離、變換或時間。檢查清除應獨立於標記。
RViz 的成本地圖足夠接受嗎?
不行。驗收需要定時體能測試、源損失行為和在代表性條件下的測量許可。
CostMap 證據與安全邊界
成本地圖是一個應用環境模型,而非獨立的安全防護裝置。驗證機器人及工作場所風險的感知、時序與停止防護措施。