rqt_graph
rqt_graph 是一個用來視覺化 ROS 2 Computation Graph 的圖形化工具。它可以協助你查看目前有哪些 Node 正在執行、它們發布或訂閱哪些 Topic,以及這些連線之間的關係。
概述
ROS 2 系統由多個 Node 組成,這些 Node 會透過 Topic、Service 與 Action 彼此通訊。
雖然 ros2 node list、ros2 topic info 等命令列工具可以用文字方式顯示這些資訊,但 rqt_graph 可以提供 Node / Topic Graph 的視覺化總覽。
它特別適合用來:
- 檢查預期的 Node 是否正在執行
- 確認 Publisher / Subscriber 的連線關係
- 理解 Namespace 與 Remapped Topic Name
- 找出異常或缺少的 Connection
- 在開發或除錯時說明 ROS 2 系統的整體結構
為什麼重要
隨著 ROS 2 系統規模變大,只看 Terminal Output 會越來越難理解整體通訊結構。
例如,Publisher/Subscriber 教學會建立以下關係:
simple_publisher
|
| /tutorial_chatter
v
simple_subscriber
rqt_graph 可以用圖形化方式檢查這個關係,並確認這兩個 Node 與 Topic 是否已經出現在 ROS 2 Graph 中。
下方範例會直接使用 Publisher/Subscriber 中建立的 Node。
核心概念
ROS 2 Graph
ROS 2 Graph 描述目前系統中已被 Discovery 的 Communication Entity,包括:
- Node
- Topic
- Publisher
- Subscription
- Service
- Action
rqt_graph 主要用來視覺化 Node 與 Topic 之間的關係。
Graph 中看得到,不代表資料一定有流動
在 rqt_graph 中看到 Publisher 與 Subscriber,代表 ROS 2 已經 Discovery 到這些 Graph Entity,但這不代表 Message 一定有成功傳遞。
例如,即使 Graph Connection 看起來正常,通訊仍可能因以下原因失敗:
- QoS 設定不相容
- Type Mismatch
- Downstream Processing 中的 Timestamp 或 TF 問題
- Application-level Logic
除錯時,建議將 rqt_graph 與命令列檢查工具搭配使用。
實作步驟
1. 啟動 Publisher 與 Subscriber
使用 Publisher/Subscriber 中建立的 Node。
在第一個已經 source ROS 2 環境的 Terminal 中:
ros2 run my_ros2_tutorial simple_publisher
在第二個已經 source ROS 2 環境的 Terminal 中:
ros2 run my_ros2_tutorial simple_subscriber
2. 啟動 rqt_graph
在第三個已經 source ROS 2 環境的 Terminal 中:
ros2 run rqt_graph rqt_graph

3. 檢查 Graph
你應該會看到 Publisher 與 Subscriber 透過 /tutorial_chatter Topic 連接。
根據目前選擇的 View Option,畫面中也可能顯示 ROS 2 System Topic 或其他 Internal Graph Entity。
當系統中有大量 Node 時,可以使用 Filtering Option 簡化 Graph。
預期成果
對 Publisher/Subscriber 範例而言,Graph 應該呈現類似以下關係:
/simple_publisher
|
| /tutorial_chatter
v
/simple_subscriber
這表示兩個 Node 與該 Topic 都已經被 ROS 2 Graph Discovery。
如果要進一步確認資料是否真的有成功傳遞,可以再執行:
ros2 topic echo /tutorial_chatter
或:
ros2 topic info /tutorial_chatter -v
常用指令
# Start rqt_graph
ros2 run rqt_graph rqt_graph
# List discovered nodes
ros2 node list
# List topics and their types
ros2 topic list -t
# Inspect publishers, subscribers, and QoS
ros2 topic info <topic_name> -v
# Inspect one node
ros2 node info <node_name>
常見問題
- 預期的 Node 沒有出現在 Graph 中 — 確認 Node 實際上正在執行,並確認執行
rqt_graph的 Terminal 使用相同的 ROS 2 環境與ROS_DOMAIN_ID。 - 預期的 Topic Connection 沒有出現 — 使用
ros2 topic list確認完整解析後的 Topic Name 與 Namespace,並使用ros2 node info檢查對應 Node。 - Graph 太複雜、不容易閱讀 — 使用
rqt_graph中的 Filter 與 View Option 隱藏不需要的 System Topic 或 Node。 - Graph 中看得到 Connection,但沒有收到 Message —
rqt_graph顯示的是 Graph Discovery,不代表 Message 一定有成功傳送。使用ros2 topic info <topic_name> -v檢查 Message Type 與 QoS Compatibility。可參考 Troubleshooting。 - rqt_graph 無法啟動 — 確認 Package 已安裝,並確認目前 Terminal 已經 source ROS 2 環境。
重點整理
rqt_graph可以視覺化 ROS 2 Node / Topic Graph。- 它適合用來理解系統通訊結構,以及找出 Missing 或 Unexpected Connection。
- Graph 中出現 Connection,本身不能證明 Message 一定有成功傳遞。
- 若需要更深入診斷,建議搭配
ros2 node、ros2 topic與 Troubleshooting Tool 一起使用。
下一步
接著前往 rqt_console,查看並篩選 ROS 2 Log Message;如果 Graph Connection 缺少,或通訊沒有如預期運作,也可以回到 Troubleshooting 進一步檢查。