跳至主要内容

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

ros-overview

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 進一步檢查。