Topic(主題)
定義
主題(Topic)是 ROS2 裡最常用的通訊機制,採用發布訂閱(publish-subscribe)模式:一個主題可以有多個發布者(Publisher)與多個訂閱者(Subscriber),彼此互不知道對方存在,發布的訊息會廣播給當下所有已訂閱的節點。
關鍵特性
- 鬆耦合:發布者發布訊息時不會等待、也不知道有沒有人收到,沒有訂閱者的話訊息直接被丟棄,不會報錯。
- QoS 決定連線成敗:發布端與訂閱端的 QoS 設定(Reliability、Durability、History 等)必須相容才能建立連線,不相容時不會有任何錯誤訊息,訊息只是靜默地傳不到。
- 型別綁定:一個主題只能傳遞單一固定的訊息型別(
.msg定義),型別不對的節點無法互相通訊。
使用情境
- 高頻率的感測器資料流(雷射掃描、影像、里程計)幾乎都是用主題傳遞。
- 「新加入者也要能看到目前最新狀態」的資料(地圖、機器人狀態),會搭配
TRANSIENT_LOCAL的 QoS Durability 設定。