「カメ」の正体と、ROS 2の「信号」をのぞき見&3Dで可視化(RViz2)
LOG21R2R2R2025/12/30

「カメ」の正体と、ROS 2の「信号」をのぞき見&3Dで可視化(RViz2)

Macの中にROS 2の環境を作り、テストプログラムのカメを動かすところまで進みました。

今回は、そもそもあのカメが何者なのかというお話と、ロボットを動かすために裏側で流れている信号をのぞき見る方法についてご紹介します。

※本プロジェクトの目的:実機「mechArm 270 M5」の制御を通じて、AIの判断をいかに物理的な動きへ変換するか。そのロボット制御の仕組みを理解するプロセスを記録・検証するものです。

そもそも、あの「カメ」の正体は?

ROS 2を使い始めると最初に出会うあのカメ。名前を 「turtlesim(タートルシム)」 といいます。

  • ロボット界の歴史あるキャラクター: 1960年代、プログラミングを学ぶために作られた「LOGO」という言葉に、画面上のカメを動かして図形を描く仕組みがありました。その歴史を受け継ぎ、ロボット開発の最初の一歩としてこのカメが採用されました。

  • 壊れない「練習用の砂場」: 本物のロボットアームはとても高価で、操作を間違えると壊れてしまう心配があります。 このカメは、失敗を恐れずにロボットの動かし方を練習できる、世界で一番有名なシミュレーター(練習台)なのです。

  • 中身は本物と同じ: 見た目はかわいらしいカメですが、動く仕組みはこれから扱うロボットアーム(mechArm)や自動運転車と全く同じルールで作られています。

ROS 2の仕組み:「チームプレイ」でおしゃべりする

カメを動かしているとき、Macの中ではいくつかの小さなプログラムがチームを組んで働いています。 この仕組みを知ると、ロボット開発がぐっと楽しくなります。

  • ノード(Node): カメを表示する係やキーボード入力を受け取る係など、役割ごとの小さなプログラムのことです。 これらを組み合わせることで、一つの大きなシステムが出来上がります。

  • トピック(Topic): ノード同士がおしゃべりをするための「専用のチャンネル」です。 送る側がメッセージを投げ、受け取る側がそれを拾うことで、情報が伝わります。

カメをお散歩させて「信号」を作る

ターミナル画面-カメが動く

まずは、裏側でおしゃべり(通信)が発生するように、カメを動かしてみましょう。

ターミナル1(今の画面): そのままカメを起動しておきます。

ros2 run turtlesim turtlesim_node

ターミナル2(新しく開く): 以下のコマンドを順番に打ちます。これで、キーボードの矢印キーでカメを操れるようになります。

conda activate ros_env
ros2 run turtlesim turtle_teleop_key

ポイント: この「操作プログラム」と「カメのプログラム」が別々に動いているのがROS 2の面白いところです。

カメを動かすための「おまじない」

カメを動かすには、どの画面が一番手前に来ているかがとても重要です。

  • 操作のコツ: ターミナル2(「Reading from keyboard」と表示されている画面)をマウスで一度クリックして、一番手前の状態(アクティブな状態)にしてください。

  • 動かし方: その状態で、キーボードの矢印キー(↑ ↓ ← →)をトントンと押してみてください。

  • 見る場所: ターミナルの文字ではなく、青い画面のカメがスイスイと動き出せば成功です!

ポイント:このターミナル2はリモコンのような役割をしています。リモコン(ターミナル)を触っている間だけ、本体(青い画面のカメ)が動く仕組みです。

裏側で流れる「信号」をのぞき見る

カメを歩かせることができたら、今度は3つ目のターミナルを開いて、ROS 2の脳が送っている信号を文字として表示させてみましょう。これが一番ロボット開発らしい工程です。

新しいターミナル(ターミナル3)を開く

専用の部屋に入る

conda activate ros_env

座標データ(信号)を表示する

ros2 topic echo /turtle1/pose

ここで何が起きる?

ターミナル画面-カメのx座標やy座標

これを実行した状態で、ターミナル2を使ってカメを動かしてみてください。 ターミナル3に、x座標やy座標の数字がザーーーッと滝のように流れ始めます。

  • x, y: カメの今の居場所

  • theta: カメが向いている方向

  • linear_velocity: 進むスピード

青い画面の絵が動くのと同時に、この数字の羅列がリアルタイムで変わるのを確認できれば、ROS 2の通信(おしゃべり)を完璧にマスターしたことになります。

2Dから3Dの世界へ:RViz2を立ち上げる

カメは平らな2Dの画面でしたが、私たちが目指すmechArmは3Dの世界で動きます。 そこで、ロボットが世界をどう見ているかを3Dで映し出すモニターRViz2(アールヴィズ)を使ってます。新しく4つ目のターミナルを開いて作業します。

起動コマンド

conda activate ros_env
rviz2

黒い3D空間が現れましたか?まだロボットがいないので寂しい画面ですが、Macが「3Dロボット開発」の準備を終えた合図です。

RViz2(アールヴィズ)画面
※RViz2(アールヴィズ)のアプリが立ち上がります。Dock(アプリが並んでいるバー)を確認してください。

もしアイコンをクリックしても画面が出ない場合

もしDockのアイコンをクリックしても反応がない場合は、Mac特有の描画トラブルの可能性があります。そのときは、以下の「強制終了&再挑戦」を試してみてください。

RViz2を一度止める: 4つ目のターミナルで Controlキー + C を押して、一度プログラムを止めます。

おまじない付きで再起動: 以下のコマンドをコピーして、同じターミナルで実行してみてください。

export QT_QPA_PLATFORM=cocoa
rviz2

まとめ

ROS 2のアイドル的存在であるカメの背景を知り、その裏側で流れている生の信号(データ)をのぞき見してみました。

ただ画面上の絵が動いているだけではなく、命令を出すプログラムと動くプログラムが、目に見えないトピックというチャンネルでおしゃべりしている。この仕組みこそが、世界中の高度なロボットを動かしている共通のルールです。

さらに、3DモニターのRViz2を立ち上げ、2D平面から3D空間へと一歩足を踏み入れました。今はまだ真っ黒な画面ですが、ここが将来mechArmが活躍する舞台になります。

おまけ

ROS 2基本コマンド(エラー対応メモ)