Note: This tutorial assumes that you have completed the previous tutorials: Understanding ROS services and parameters. |
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
rqt_console と roslaunch を使う
Description: このチュートリアルは, ROSでデバッグのためにrqt_consoleやrqt_logger_levelを使うことや, 一度に複数のnodeを起動するroslaunchの使うことを紹介します. ROS fuerte, もしくは, それ以前のrqtが完全な状態で提供されていないディストリビューションを使用している場合, 古いrxベースのツールを使用しているこちらのページを参照してください.Tutorial Level: BEGINNER
Next Tutorial: Using rosed
Contents
必須要件 rqt と turtlesim パッケージ
このチュートリアルでは, rqt と turtlesim パッケージの両方を使用します.このチュートリアルを進めるため, まだ済んでない場合は, 両方のパッケージをインストールしてください.
$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim
<distro>を使用しているROSのディストリビューション名で置換してください(例えば, electric, fuerte, groovy).
注意:前節のチュートリアルで rqt と turtlesim はビルド済みとなっているかもしれません.もし確証が無い場合は,もう一度ビルドしても特に問題は生じません.
rqt_console と rqt_logger_level の使い方
rqt_console はノードからの出力を表示する ROS のログ収集フレームワークをシステムに付加します.rqt_logger_level はノードの冗長度のレベル(DEBUG, WARN, INFO, and ERROR)の変更を可能とします.
turtlesim使用中に, rqt_console で turtlesim の出力を見て, rqt_logger_level でログ出力レベルを切り替えてみましょう.turtlesim を起動する前に,2つの新しいターミナルで rqt_console と rqt_logger_level を起動しましょう:
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
ウィンドウが2つポップアップします:
{{attachment:ROS/Tutorials/UsingRqtconsoleRoslaunch/rqt_logger_level.png}
turtlesim を新しいターミナルで起動しましょう:
$ rosrun turtlesim turtlesim_node
既定のログ出力レベルはINFOのため, turtlesimが起動した時に出版されるどんな情報も, このように確認できるでしょう:
ログ出力レベルを Warn に変更してみましょう.rqt_logger_levelのウィンドウの中でノードの読込を更新し,以下のように Warn を選択します:
turtleを壁に向かって突っ込ませて, rqt_consoleに何が表示されるか確認してみましょう(非hydro):
rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 0.0
hydroでは:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
ロガー レベルについての簡単な説明
ログ出力レベルは, 以下の順序で優先度付けされています:
Fatal Error Warn Info Debug
Fatalが最高優先度を持ち, Debugが最低優先度を持っています. ログ出力レベルを設定することで, その優先順位より上位のメッセージを全て確認することができます. 例えば, Warnにレベルを設定すると, 全てのWarn, Error, そして, Fatalのログ出力メッセージを確認できるでしょう.
Ctrl-Cでturtlesimを強制終了し, 片方のノードがもう片方のノードの動きをコピーして動作が生じるように複数のturtlesimノードをroslaunchを使って立ちあげてみましょう.
Using roslaunch
roslaunch はlaunchファイルに定義されたノードを起動します.
使い方:
$ roslaunch [package] [filename.launch]
まず, beginner_tutorials パッケージに移動しましょう:
$ roscd beginner_tutorials
もし roscd に失敗する場合, 新しいターミナルで ROS_PACKAGE_PATH 環境変数を設定することを思い出してください. その時のコマンドはこのようになるでしょう:
$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH $ roscd beginner_tutorials
それでも beginner_tutorials が見つからない場合は, ROS/Tutorials/CreatingPackageの中のパッケージ作成の手順まで戻り, それに従ってください.
それでは, launch ディレクトリを作成してみましょう:
$ mkdir launch $ cd launch
launchファイル
ここで, turtlemimic.launch という launch ファイルを作成し, 以下の内容を貼り付けてみましょう: turtlemimic で呼び出されるlaunchファイルを作成します.以下をコピーして貼り付けてください:
1 <launch>
2
3 <group ns="turtlesim1">
4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
5 </group>
6
7 <group ns="turtlesim2">
8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
9 </group>
10
11 <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
15
16 </launch>
launchファイルの説明
launch xml を分解して細かく分析してみましょう.
1 <launch>
launchファイルはlaunchタグから始まり, launchファイルとしてファイルが識別されるようになります.
turtlesim1とturtlesim2という名前スペースを持った二つのグループをsimという名前のturtlesimノードで起動します. こうすることで, 2つのシミュレータが名前衝突を生じさせることなく, 起動させることができます.
トピックの入出力機能を使って, turtlesim1とturtlesim2という名前に変更した模倣動作を行うノードを起動します. この名前変更はturtlesim2のturtlesim1の動作の模倣を生じさせます.
16 </launch>
ここでlaunchファイルの xml タグを閉じます.
roslaunch してみる
launchファイルを roslaunch から使ってみましょう:
$ roslaunch beginner_tutorials turtlemimic.launch
2つのturtlesimを起動し, 新しいターミナルででrostopicコマンドを送ります(非hydro):
$ rostopic pub turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 -1.8
hydroでは:
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
turtlesim1のみにコマンドを送るだけで, 2つのturtlesimが動き出すことが確認できます.
launchファイルが何をしたかをさらに理解するに, rqt_graphを使用することもできます. rqtのメインウインドウを実行し, rqt_graphを選択しましょう:
$ rqt
もしくは, シンプルに:
$ rqt_graph
ここまでで, rqt_consoleとroslaunchを上手に使ってみることができました. ROSのエディタオプションについて学習しましょう. 次節のチュートリアルではturtlesimは使用しないので, Ctrl-Cでそれらを全て終了させても構いません.