👁️ 【ROS2入門⑧】RViz2とrqt - ロボットの状態を見える化する可視化ツール
シリーズ この記事は「ROS2入門シリーズ」の一部です。 シリーズ目次を見る
ノードを ros2 run できる状態から、RViz2 で 3D 表示、rqt でトピックグラフを確認する入口を示します。デバッグ中に「トピックは流れているのに RViz が真っ白」となったとき Fixed Frame と frame_id を疑う場面が多いです。正本は RViz User Guide です。2026年5月時点、Ubuntu 22.04 + ROS 2 Humble 想定です。
RViz2 とは?3D 可視化ツールの基本
RViz2(ROS Visualization Tool 2)は、センサや TF、Path などを 3D ビューに重ねて確認するツールです(表示はトピック更新に追随します)。RViz User Guide も参照。
RViz2の起動
ros2 run rviz2 rviz2
# または
rviz2 turtlesimでRViz2を試す
# ターミナル1: turtlesim起動
ros2 run turtlesim turtlesim_node
# ターミナル2: RViz2起動
ros2 run rviz2 rviz2 RViz2での設定手順:
turtlesim だけでは座標情報やレーザデータが自動では出ません。初期状態の 3D ビューは空でも普通です。表示したい型(TF / Marker / RobotModel / LaserScan 等)を Add しないと見えません。
- Add ボタンをクリック
- By display type から表示したいデータ型を選択
- 表示中のトピックを指定
主なディスプレイタイプ
| ディスプレイ | 用途 | サブスクライブする型 |
|---|---|---|
| Axes | 座標軸を表示 | - |
| RobotModel | URDFモデル | robot_description |
| PointCloud2 | LiDAR点群 | sensor_msgs/PointCloud2 |
| Image | カメラ画像 | sensor_msgs/Image |
| LaserScan | 2D LiDAR | sensor_msgs/LaserScan |
| Path | 移動軌跡 | nav_msgs/Path |
| TF | 座標変換ツリー | - |
| Marker | カスタム図形 | visualization_msgs/Marker |
RViz2 でマーカーを表示する方法
PythonからRViz2に図形を描画するにはMarkerメッセージを使います。
from visualization_msgs.msg import Marker
from geometry_msgs.msg import Point
def publish_marker(self):
marker = Marker()
marker.header.frame_id = 'map'
marker.header.stamp = self.get_clock().now().to_msg()
marker.type = Marker.SPHERE
marker.action = Marker.ADD
marker.pose.position.x = 1.0
marker.pose.position.y = 0.5
marker.pose.position.z = 0.0
marker.scale.x = 0.3
marker.scale.y = 0.3
marker.scale.z = 0.3
marker.color.r = 1.0
marker.color.g = 0.0
marker.color.b = 0.0
marker.color.a = 1.0
self.marker_pub.publish(marker) rqt とは?プラグイン形式のデバッグ GUI
rqt はプラグインベースの GUI デバッグツールです。Plugins メニューから rqt_graph、rqt_plot などを選びます。
# rqt起動
rqt 主なrqtプラグイン
rqt_graph - ノード・トピックの接続を図示化
ros2 run rqt_graph rqt_graph 表示例:
[camera_node] --/camera/image--> [detection_node]
|
/objects
|
[controller_node] rqt_plot - トピックのデータをグラフ表示
ros2 run rqt_plot rqt_plot
# 表示したいトピックを指定例: /turtle1/pose/x rqt_console - ログメッセージを一元管理
ros2 run rqt_console rqt_console rqt_image_view - 画像トピックをリアルタイム表示
ros2 run rqt_image_view rqt_image_view turtlesim で rqt_graph を試す手順
# ターミナル1
ros2 run turtlesim turtlesim_node
# ターミナル2
ros2 run turtlesim turtle_teleop_key
# ターミナル3
ros2 run rqt_graph rqt_graph rqt_graphで以下の接続を確認できます:
[/teleop_turtle] --/turtle1/cmd_vel--> [/turtlesim]
可視化でつまずきやすい点
- RViz2 の Global Options → Fixed Frame と、表示したいトピックの frame_id が噛み合わないと「何も出ない」ことが多い
- トピックが一本化されていないと Add 後のドロップダウンで名前を取り違えやすい(ros2 topic list で先に確認)
- rqt は 初回起動が重いことがあり、必要な画面は Plugins メニューから開く
RViz2 と rqt のまとめ
- RViz2: TF やセンサ、Path などを 3D ビューに載せて確認するツール(表示はデータ更新に追随)
- rqt_graph: ノード間の接続を図示化してデバッグしやすくなる
- rqt_plot: データの時系列変化をグラフ表示
- 開発中は RViz2 と rqt を 行き来しながら、接続と座標系の両方を確認するのが近道になりがちです
- 次回(シリーズ⑨)では TF2(座標フレーム/変換)を扱う想定です