Node(節點)
定義
節點(Node)是 ROS2 系統裡最小的獨立運算單位,通常對應一個獨立的作業系統行程,底層每個節點會建立一個 DDS DomainParticipant,透過主題(Topic)、服務(Service)、動作(Action)、參數(Parameter)等標準介面跟其他節點溝通,不需要知道對方的實作細節。
關鍵特性
- 單一職責:良好設計的節點只負責一件明確的事(例如讀取一顆感測器、控制一個馬達),複雜系統靠多個節點組合而成,而不是一個節點做所有事。
- 執行單位:節點本身不會自己執行,需要交給 Executor 驅動其 callback(訂閱、服務、timer)依序或並行執行,執行緒模型的選擇(單執行緒 vs 多執行緒)會直接影響節點對外的回應行為。
- 命名可隔離:節點名稱、底下的主題與服務名稱,都能套上命名空間前綴,讓同一套節點程式碼能在多機器人場景下重複部署而不互相衝突。
使用情境
- 拆解一個機器人系統時,第一步通常是決定要切成哪些節點、每個節點的職責邊界在哪。
- 除錯連線問題時,
ros2 node info <node>是確認一個節點實際提供哪些主題、服務、動作的第一站。