ROS2を使ってみる その2(Turtlesim、rqt、Windows)
はじめに
今回はROS2でTurtlesimとrqtを試してみました。
ROSとROS2について最近触るようになったのですが、Turtlesimとrqtは書籍やオンラインのチュートリアルでよく見かけました。実行しながら、理解を深めていきたいなと思っています。
Linux環境ならaptでのインストール方法に関する情報が豊富なのですが、Windows環境だと少ないのが難点ですね。今回はすでにインストールされていました。
▼こちらのTurtlesimのチュートリアルを参考にしています。
なお、今回もWindowsで環境を構築したROS2で実行します。
▼以前の記事はこちら
Turtlesimを試してみる
Turtlesimは、2次元のシミュレーション上でカメを動かすものになっています。
コマンドの実行は、WindowsのPowerShellで行っています。
▼Windowsの場合、Turtlesimはすでにインストールされているようです。

以前の記事に追記したのですが、新しくPowerShellを開いて実行する場合は少しコマンドを実行する必要があります。
▼以下のコマンドを実行してから、ros2コマンドを実行します。local_setup.ps1の場所は適宜変更してください。
Set-ExecutionPolicy Bypass -Scope Process -Force
C:\dev\ros2_iron\local_setup.ps1

▼以下のコマンドで、turtlesimで実行できるものが表示されます。
ros2 pkg executables turtlesim

カメのシミュレーションを起動します。
▼以下のコマンドを実行しました。座標も表示されていますね。
ros2 run turtlesim turtlesim_node

Turtlesimが起動しました。
▼背景に近い水色なのですが、カメが表示されています。

▼あとで実行しなおしたときには、別のカメが表示されました。


別のターミナルを開いて、キーボードでカメを操作するためのコマンドを実行しました。
▼コマンドはこちら
ros2 run turtlesim turtle_teleop_key

キーボードの矢印や、PowerShellに表示されているキーで操作できます。
▼移動した後には白い線が残ります。

listを付けたコマンドで、nodeやtopicのリストを表示することができます。
▼それぞれ実行してみました。
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
▼以下のように表示されました。turtle1もありますね。

rqtを試してみる
rqtはGUIのフレームワークで、nodeやtopicの関係などを表示できます。
▼こちらも、Windowsの場合はすでにインストールされているようです。

▼コマンドを実行すると起動します。
rqt

▼Pluginsの欄から、実行できる機能を選択できます。

例えばTopicを表示することができます。
▼TopicsのTopic Monitorを開いてみました。

▼先程のturtle1も表示されています。

次にService CallerでServiceを実行してみます。
▼Pluginsの欄にあります。

▼Topic Monitorの隣に表示されました。消したい場合は、右上のバツをクリックしてください。

Serviceを選び、Callすることで実行できます。
▼/spawnを選んでみました。

▼Expressionの欄をダブルクリックして、turtle2にしました。

▼よりによって水色のカメですが、左下に生成されています。分かりにくいですね...

Serviceの中にあった/killを使うと削除できます。見づらかったので削除しました。
▼Expressionは先程のturtle2にして、Callしました。

もう一度、座標を変えて/spawnさせてみました。
▼xとyの数値を5にしました。

▼真ん中付近に生成されました。

set_penを使うことで、線の色も変更することができました。
▼/turtle1/set_penで色を変えてみました。

▼色が変わっています。

▼/clearをCallすると、線を消すことができました。

別のターミナルを開いて、turtle2も操作してみました。
▼以下のコマンドを実行しました。
ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

▼turtle2も同じように動かせました。

他のチュートリアルを読んでいると、rqt_graphというものも見つけました。ノードの関係を可視化できるようです。
▼こちらに書かれていました。
▼以下のコマンドを実行しました。
rqt_graph
▼/turtlesimと/teleop_turtleの関係が可視化されています。カーソルを合わせると、色付きになりました。

最後に
TurtlesimはROS2を学ぶための軽量なシミュレーションというだけあって、簡単に使うことができました。今回実行した内容を元にドキュメントを読むと、理解が深まるのかなと思っています。
▼nodesやtopics、servicesなどについての資料があります。
https://docs.ros.org/en/iron/Tutorials/Beginner-CLI-Tools.html
HTTP Requestを送るような感じで、Serviceを呼び出しているような雰囲気を感じました。MQTT通信もトピックを指定して通信だったのですが、やはり似ているのでしょうか。
これからやりたいのは、ネットワークを経由したROS2とのやり取りです。どのツールを使えばいいのかを模索しているところです。Node-REDと繋げることができれば、私としては開発がすごく楽になります。