Lifecycle Node

定義

Lifecycle Node 是 ROS2 提供的一種特殊節點型態,比一般節點多了明確的狀態機(Unconfigured → Inactive → Active → Finalized),讓「資源配置好了」跟「真正對外生效」變成兩個可以分開控制的獨立階段。

關鍵特性

  • configure 與 activate 分離on_configure 負責準備資源(建立 publisher、連接硬體)但不真正對外生效,on_activate 才真正開始運作,這讓一整組節點能先全部配置完成、確認沒有錯誤,再統一啟用。
  • 由 lifecycle_manager 統一協調lifecycle_manager 負責管理一組 Lifecycle Node 的狀態轉換順序,避免多個彼此依賴的伺服器各自為政造成的時序問題。
  • 轉換回呼的回傳值是唯一依據:轉換回呼裡的操作如果失敗卻沒有正確回傳 TransitionCallbackReturn.FAILURE,系統會誤以為轉換成功,讓後續建立在一個實際上無效的假設上。

使用情境

  • Nav2 的所有伺服器(controller_serverplanner_server 等)都是 Lifecycle Node。
  • 節點需要管理有代價的資源(硬體連線、大型模型載入)、且需要明確控制「目前是否真正在運作」時值得考慮。

延伸閱讀