Nav2 行為樹與恢復設計

Nav2 行為樹協調導航動作、條件和恢復行為。它可以重新規劃、清除選定的成本地圖、等待、旋轉、備份或請求其他系統反應。樹應將已知故障轉化為有界決策;不應將每個錯誤都變成機器人重複的動作。

恢復質量取決於上下文。規劃錯誤可能導致區域性路徑修復計算,而持續定位或系統故障則可能需要取消和操作員協助。在介入覆蓋之前保留原始錯誤,並在下一次嘗試耗盡重試預算前要求可衡量的進展。

將本指南與 ROS 2 生命週期恢復指南Nav2 成本地圖指南結合使用。測試已部署機器人設定中注入故障的樹。

將樹作為顯式導航策略使用

行為樹透過序列、回退、裝飾器、條件和動作節點,使控制流程視覺化。 Nav2 將這些節點連線到規劃器、控制器和行為伺服器。因此, XML 成為一個操作策略,決定重試、修復、升級或返回給呼叫方的故障。

Nav2 行為樹檔案提供了可針對應用修改的示例樹。將示例視為起點。新增任務約束、物理恢復權限、重試限制以及實際車輛和站點所需的可觀測性。

橙色倉庫驅動機器人展示在儲藏裝置之間
倉庫機器人需要反映受限通道、有效負載和共享流量的恢復策略;此照片未顯示 Nav2 設定。來源:維基共享資源。許可:CC BY-SA 4.0

上下文恢復與系統恢復分離

上下文恢復應緊鄰發生故障的動作。路徑規劃分支可以清除全域成本地圖或嘗試其他規劃器,而路徑跟蹤分支則可以處理區域性成本地圖或控制器狀態。這種接近性保留了有用的故障身份,避免過早進行廣泛介入。

系統恢復在更窄的補救措施用盡或故障非區域性時執行。它可能等待環境、清除更廣泛的狀態、執行允許的動作或終止導航請求。定義錯誤類別與證據之間的轉換,而非僅僅根據通用故障計數。

失效證據可能的主人情境反應升級示例
無有效的全域路徑規劃器或全域地圖重新計算或定向清除拒絕無法達成的目標
控制器無法繼續前進地方控制或障礙區域性清除或受控等待取消並保留
姿勢無效或跳躍本地化地圖清空後不要隱藏重新本地化或請求幫助
伺服器不可用生命週期或過程檢查管理狀態監督員恢復
物理路徑受阻環境等待或替代路線人為介入

理解 RecoveryNode 重試語意

恢復節點通常執行一個主子節點,並在失敗後呼叫一個恢復子節點,並設定了一定次數的重試。這種結構僅在恢復能夠改變導致失敗的條件時才有用。重複相同的輸入和狀態僅是延遲,並可能產生重複動作。

記錄重試計數是指部署實現中的總主嘗試次數還是恢復週期。記錄每個嘗試次數、錯誤程式碼和經過時間。同時限制計數和實際經過時長,因為即使重試次數較少,一個慢動作也可能超過操作限制。

在恢復狀態改變之前,先保留第一個故障

清除地圖、重啟伺服器或移動機器人可以抹除證據。記錄第一個失敗動作、伺服器錯誤、目標、路徑、姿勢、成本地圖、座標變換和相關感測器資料時效,再讓恢復分支改變這些狀態。將所有記錄關聯到一個公共時鐘上。

將最終錯誤和恢復歷史分開儲存。如果後續旋轉失敗,不應替代事故報告中的原始規劃器或定位故障。操作員需要同時提供起始原因和最後一次失敗介入。

以五個步驟整理Nav2 行為樹與恢復設計的判讀重點
依正文與一手資料整理的繁體中文實務卡。來源:Physical AI Lab。

要求重複嘗試之間取得進展

當相關狀態發生變化時,重試是正當的:路徑變得有效、障礙物清除、定位信心恢復或機器人移動了有意義的距離。為每個分支定義進度。節點在未改變阻塞條件的情況下返回成功,不應重置整個重試預算。

在其他工作中使用進度檢查器表示運動和分支特定條件。在低速執行時測量時間和距離視窗,避免正常的細緻運動誤認為熄火。相反,沒有基礎位移的車輪旋轉不算導航進展。

恢復動作所需許可進展證據中止證據
等等區域可以安全清理障礙或計劃變更截止日期已逾
清晰的成本地圖源可以重建真相新的觀察到來缺少所需來源
旋轉淨空支援旋轉新的有效觀察或路徑無論是封裝風險還是沒有變化
後退後部空間已驗證退出本地陷阱未知或被阻擋的後方
重啟伺服器故障類別允許重啟準備狀態變為目前狀態反覆崩潰或資料無效

把旋轉和倒車視為物理操作

旋轉和倒車動作要求真實移動。在啟用前,檢查足跡間隙、感測器覆蓋範圍、有效負載穩定性、附近人員和場地權限。在空曠的研究樓層上可接受的回收動作,可能禁止在機架、樓梯或共享工作站旁進行。

根據機器人的風險評估設定加速度、速度、距離和持續時間限制。驗證取消延遲和停止反應。如果後方感應不足,不能僅因前方控制器報告無路徑就假裝置份安全。

僅對已知的過期狀態失效使用 costmap 清除

清除可能移除與環境不符的觀測,但也能暫時消除真正的障礙。限制清除範圍為可從目前感測器迅速重建且來源健康狀況得到驗證的層和區域。

清除後,等待宣告重新整理條件後,規劃或動作才繼續。記錄更改的層和區域。反覆清除短暫開啟路徑,是感知、變換或清除缺陷的證據,而非成功的長期恢復。

有意識地選擇重新規劃的觸發點

當路徑無效、目標變化或進度停滯時,可以週期性地重新規劃。過度重新規劃會消耗 CPU,並可能導致路徑頻繁變更;稀疏的重新規劃可能導致控制器走過時路徑。將觸發條件與環境動態和控制器契約匹配。

Nav2 示例樹包含不同的重新規劃安排。在更換過程中測量路徑年齡、計算時間和控制器行為。確保新計算的路徑經過驗證且時間一致,才能覆蓋目前路徑。

地圖伺服器錯誤到不同樹枝

規劃器、控制器和行為操作返回結構化結果。不要將所有未成功狀態合並為一個備份。當介面暴露取消、超時、無效目標、無路徑、進度失敗、變換問題和伺服器可用性時,區分它們。

維護一個版本管理的錯誤到策略表。未知錯誤程式碼應選擇保守的預設路徑,並在遙測中保持可見。當軟體升級新增或更改結果程式碼時,迴歸測試應證明每個程式碼仍能到達預期分支。

座標取消與優先

新的任務目標、操作員停止或機器人車隊重新分配可以在回收過程中搶佔導航。定義哪些動作被暫停,取消可能需要多長時間,以及部分完成的機動是否會使機器人處於有效狀態。在舊動作所有權尚未明確時,不要開始新的目標。

在等待、清除、旋轉、備份和伺服器呼叫中測試搶佔。記錄請求者和最終操作結果。如果行為樹正確且不中斷,如果取消確認和命令超時未協調,仍可能發出陳舊動作。

在每個恢復層級注入故障

建立可重複測試,針對阻塞計劃、移動障礙物、感測器丟失、變換過期、姿勢無效、伺服器崩潰、拒絕命令和失敗恢復動作。對每個情況,驗證所選分支、嘗試次數、經過時間、物理輸出及最終結果返回任務層。

在 CPU 和網路負載下執行測試,且負載真實。包含複合故障,如備份時的定位丟失或新目標到來時控制器重啟。恢復策略只有在處理中斷且不隱藏起始故障時才可信。

釋放有界且可觀察的回收合約

將 XML、外掛集、錯誤對映、重試預算、操作權限和超時值合併。釋出操作員可讀狀態,說明失敗、恢復狀態及後續情況。通用恢復標籤在反覆物理運動中不夠。

使用強調證據和退出條件的釋放清單。

評估“Nav2 行為樹與恢復設計”時,還應儲存模型版本、機器人設定、校正檔案、測試日期和全部試驗記錄。

只有把這些持續投入與單位成功任務的價值比較,才能判斷方案是否適合擴大。

上線後仍要持續檢查分佈變化、感測器漂移、機械磨損和人工接管原因。

  • 把上下文修復放在失敗動作附近。
  • 限制嘗試次數和按實際時間計算的恢復時長。
  • 在重試前要求有可測量的狀態變化。
  • 保留原始的斷層和所有介入措施。
  • 測試取消和物理機動限制。

常見問題

Nav2 行為樹控制什麼?

它透過呼叫 XML 策略 Nav2 伺服器來協調導航操作、條件、重試和恢復。

每次失敗都應該清除兩個成本地圖嗎?

不。只有當陳舊地圖狀態成為支援的假設且目前資料能重建有效證據時才明確。

應該允許多少次恢復重試?

根據營運風險和測量的恢復效果設定故障具體計數和時間預算;沒有統一的數字。

動感動單車總是安全的恢復嗎?

不。這是一項需要空間、感應、運動限制和場地許可的物理操作。

恢復期間應該記錄哪些內容?

保留第一個錯誤、狀態快照、每次介入、進展證據、嘗試次數、時間安排和最終結果。

恢復運動與斷層邊界

行為樹恢復可以指令機器人運動並改變環境狀態。它不能取代應用程式所需的獨立停止、保護或操作流程。

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