Topic(主題)

定義

主題(Topic)是 ROS2 裡最常用的通訊機制,採用發布訂閱(publish-subscribe)模式:一個主題可以有多個發布者(Publisher)與多個訂閱者(Subscriber),彼此互不知道對方存在,發布的訊息會廣播給當下所有已訂閱的節點。

關鍵特性

  • 鬆耦合:發布者發布訊息時不會等待、也不知道有沒有人收到,沒有訂閱者的話訊息直接被丟棄,不會報錯。
  • QoS 決定連線成敗:發布端與訂閱端的 QoS 設定(Reliability、Durability、History 等)必須相容才能建立連線,不相容時不會有任何錯誤訊息,訊息只是靜默地傳不到。
  • 型別綁定:一個主題只能傳遞單一固定的訊息型別(.msg 定義),型別不對的節點無法互相通訊。

使用情境

  • 高頻率的感測器資料流(雷射掃描、影像、里程計)幾乎都是用主題傳遞。
  • 「新加入者也要能看到目前最新狀態」的資料(地圖、機器人狀態),會搭配 TRANSIENT_LOCAL 的 QoS Durability 設定。

延伸閱讀