- turtlesimとrqtの使用(原題:Using turtlesim, ros2, and rqt )
以下に参照元を載せます。
turtlesimとrqtの使用(原題:Using turtlesim, ros2, and rqt )
目的:今後のtutorialの準備としてturtlesimパッケージとrqtツールのインストールと使用
レベル:初級
学習設定時間:15分
背景の要約
TurtlesimというROS2学習用軽量シミュレータとrqtというGUIツールを使用して、ROS2のコア概念の”ノード”、”トピック”、”サービス”を把握する。
課題1:turtlesimをインストール
ROS2のディストリビューション用のturtlesimをインストールする。
sudo apt update #アップデート
sudo apt install ros-humble-turtlesim #ROS2 humble用のturtlesimをインストール
ROS2 Humbleをインストールしたときに一緒にturtlesimが入っていたらしく、すでにインストールされていることが確認できました。
インストールされているかを確認する
ROS2の環境設定セットアップスクリプトが実行された状態で以下をターミナルに入力します。
ros2 pkg executables turtlesim #turtlesimと名前の付く実行可能ファイルのリストを出力
実行するとリストが出力され4つあることが確認できました。
課題2:turtlesimの起動
ros2 run turtlesim turtlesim_nodeをターミナルに入力する。
起動すると青い画面にカメが映し出されました。表示されるカメはランダムで絵が変わるようです。”turtle1”の名前のカメがx=5.544445,y=5.544445,theta=0の位置にいると書いてあります。thetaはカメの姿勢の角度のようです。
課題3:turtlesimを使う
新たにターミナルを開き、新たなノードを実行して最初のノードを制御する。
ros2 run turtlesim turtle_teleop_key #キーボードで最初のノードのカメを遠隔操作するノードを起動
turtle_teleop_keyを起動するとキーボードでカメを遠隔操作することができます。おそらくteleop(teleoperation:遠隔操作)、key(キー入力)の意味だと思います。矢印キーの右を押すと時計回りに回り、左は反時計回りに回ります。矢印キーの左右の押す長さで回る角度が変わるようです。矢印キーの上下で前進後進します。前進後進すると移動した軌跡に線が描かれ、ウィンドウ枠外に進ませると”警告”になり「壁にぶつかりました」とメッセージが出ます。また、キーボードのキー”G”、”B”、
”V”、”C”、”D”、”E”、”R”、”T”でも回転します。Fキーを中心にしてキーの位置で特定の角度に回転できます。例えばGは右向き、Dは左、Rは上、Tは右上などです。FキーはGBVCDERTでの回転の動きを押した時点でキャンセルです。
補足で、ROS2のコア概念である”ノード”、”トピック”、”サービス”、”アクション”の4つのそれぞれのリストを以下のサブコマンドで表示することができます。表示させてみましたが今後のTutorialで詳細がわかっていくらしいです。
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
課題4:rqtのインストール
新たにターミナルを開きrqtと関連するプラグインをインストールする
sudo apt install ~nros_humble_rqt*
コマンドの~と*がいまいちわからないので調べてみました。*はワイルドカードというもので任意の0文字以上の文字列を表し、~はディレクトリを意味しています。要するに、"nros_humble_rqt*"ディレクトリ以下のものをインストールする指令のようです。
インストールのコマンドを入力しましたが、インストール済みのようでした。
課題5:rqtの使用
rqtを実行するには以下のコマンドを入力
rqt
初めてrqtを実行すると上の画像のようにメッセージが出ましたが、メニュー欄の"Pluglins">"Services">"Service Caller"と選択していくと以下の目的の画面になりました。
課題5-1:"Spawn Service"を試す
"/clear"と表示されている"Service"プルダウンリストの中から"/spawn"を選ぶ
"/spawn"を選ぶと既存のカメのほかに新規でカメを作成することができます。xとyの"Expression"欄に"1.0"をそれぞれ入力します。数値を編集するためにはダブルクリックで数値の編集状態にする必要があります。次に、"name"の"Expression"欄にシングルクォーテーションが2つ表示されており、その部分をダブルクリックしてシングルクォーテーションの間に"turtle2"と入力します。既存のカメと同じ名前にするとエラーになるようです。
実行するには"Service"プルダウンリストの右の"Call"ボタンを押します。
"Call"ボタンを押すと、既存のカメのウィンドウの左下端に"turtle2"の名前のカメがx1.0,y1.0の位置に表示されました。ちなみに、"Call"が成功し更新ボタン(左のボタン)を押すと"Service"プルダウンリストに"turtle2"のServiceリストが追加されます。
課題5-2:"set_pen Service"を試す
既存のカメ"turtle1"の軌跡の表示を変える
"Service"プルダウンリストの"/turtle1/set_pen"を選び軌跡の線の色や幅を変えてみます。
項目の"r","g","b"はRGBカラーコードの数値で0~255の数値を入力することで色を表現します。"width"はその名の通り軌跡の線幅です。このTutorialでは"r"を255に"width"を5に設定します。
実行("Call")し、"turtle1"を"turtle_teleop_key"で遠隔操作してみると以下のように軌跡が赤になり線が若干太くなりました。
"turtle2"を遠隔操作するための"turtle_teleop_key"がないことに気が付きますが次の課題で実現できるようです。
課題6:"Remapping"(再マッピング)
"turtle2"を遠隔操作するためにはteleop_keyの”2”が必要ですが以前と同じコマンド(ros2 run turtlesim turtle_teleop_key)を入力しても”1”を制御します。これを変えるには"cmd_vel"(移動速度と回転速度)を再マッピングする必要があります。新たにターミナルを開き以下のコマンドを入力します。
ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
意味合いとしては、”1”の移動速度と回転速度の変数を”2”にも適応していると解釈しています。上記のコマンドを実行したターミナルが選択された状態で"turtle2"が動かせるようになりました。
課題7:"turtlesim"を閉じる
遠隔操作のターミナルは"q"キーで動作を終了させ、"turtlesim"ウィンドウと"rqt"のターミナルは"Ctrl+c"で終了させます。
Tutorialを体験しての感想
"turtlesim"の操作を通してROS2のコア概念の基本を体験しました。シミュレーションではありましたが、実際のロボットを操作することを考えると少しわくわく感が出てきました。今回の”ノード”は"turtlesim"との節点のニュアンスで体験し、”トピック”はカメのパラメータ(位置姿勢や軌跡表示と位置姿勢速度)で、”サービス”はrqtで視覚的に設定することで体験できました。
今後の課題
今回のTutorialの操作を復習し、次のTutorialに備えることです。
以上です。ありがとうございました。