[Documentation] [TitleIndex] [WordIndex

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_consolerqt_logger_levelを使うことや, 一度に複数のnodeを起動するroslaunchの使うことを紹介します. ROS fuerte, もしくは, それ以前のrqtが完全な状態で提供されていないディストリビューションを使用している場合, 古いrxベースのツールを使用しているこちらのページを参照してください.

Tutorial Level: BEGINNER

Next Tutorial: Using rosed

必須要件 rqt と turtlesim パッケージ

このチュートリアルでは, rqtturtlesim パッケージの両方を使用します.このチュートリアルを進めるため, まだ済んでない場合は, 両方のパッケージをインストールしてください.

$ 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_consolerqt_logger_level を起動しましょう:

$ rosrun rqt_console rqt_console

$ rosrun rqt_logger_level rqt_logger_level

ウィンドウが2つポップアップします:

ROS/Tutorials/UsingRqtconsoleRoslaunch/rqt_console(start).png

{{attachment:ROS/Tutorials/UsingRqtconsoleRoslaunch/rqt_logger_level.png}

turtlesim を新しいターミナルで起動しましょう:

$ rosrun turtlesim turtlesim_node

既定のログ出力レベルはINFOのため, turtlesimが起動した時に出版されるどんな情報も, このように確認できるでしょう:

ROS/Tutorials/UsingRqtconsoleRoslaunch/rqt_console(turtlesimstart).png

ログ出力レベルを Warn に変更してみましょう.rqt_logger_levelのウィンドウの中でノードの読込を更新し,以下のように Warn を選択します:

ROS/Tutorials/UsingRqtconsoleRoslaunch/rqt_logger_level(error).png

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]'

ROS/Tutorials/UsingRqtconsoleRoslaunch/rqt_console(turtlesimerror).png

ロガー レベルについての簡単な説明

ログ出力レベルは, 以下の順序で優先度付けされています:

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ファイルとしてファイルが識別されるようになります.

   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>

turtlesim1とturtlesim2という名前スペースを持った二つのグループをsimという名前のturtlesimノードで起動します. こうすることで, 2つのシミュレータが名前衝突を生じさせることなく, 起動させることができます.

  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>

トピックの入出力機能を使って, 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が動き出すことが確認できます.

ROS/Tutorials/UsingRqtconsoleRoslaunch/mimic.png

launchファイルが何をしたかをさらに理解するに, rqt_graphを使用することもできます. rqtのメインウインドウを実行し, rqt_graphを選択しましょう:

$ rqt

もしくは, シンプルに:

$ rqt_graph 

ROS/Tutorials/UsingRqtconsoleRoslaunch/mimiclaunch.jpg

ここまでで, rqt_consoleとroslaunchを上手に使ってみることができました. ROSのエディタオプションについて学習しましょう. 次節のチュートリアルではturtlesimは使用しないので, Ctrl-Cでそれらを全て終了させても構いません.


2019-10-12 12:41