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と繋げることができれば、私としては開発がすごく楽になります。