rxconsole と roslaunch を使う

rxtools と turtlesim パッケージのビルド

このチュートリアルでは, rxtoolsturtlesim パッケージの両方を使用します.このチュートリアルのために,両方のパッケージをビルドしてください.

$ rosdep install rxtools turtlesim
$ rosmake rxtools turtlesim

注意:前のチュートリアルで rxtools と turtlesim を既にビルドしているかもしれません.もし分からなければ,もう一度ビルドしても何も問題ありません.

rxconsole と rxloggerlevel の使い方

rxconsole はノードからの出力を表示する ROS のログの仕組みを付け加えます.rxloggerlevel は起動しているノードの詳細レベル (DEBUG, WARN, INFO, and ERROR) を変更することができます.

rxconsole で turtlesim の出力を見て, rxloggerlevel でロガーのレベルを切り替えましょう.turtlesim を起動する前に,2つの新しいターミナルで rxconsolerxloggerlevel を起動しましょう:

$ rxloggerlevel

$ rxconsole

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

ROS/Tutorials/UsingRxconsoleRoslaunch/rxloggerlevel.png

ROS/Tutorials/UsingRxconsoleRoslaunch/rxconsole(start).png

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

$ rosrun turtlesim turtlesim_node

初期のロガー レベルは INFO のため,turtlesim が起動してから発行されたものがこのように表示されます:

ROS/Tutorials/UsingRxconsoleRoslaunch/rxconsole(turtlesimstart).png

ロガー レベルを Warn に変更しましょう.rxloggerlevel ウィンドウのノードを再読み込みして,以下のように Warn を選択します.

ROS/Tutorials/UsingRxconsoleRoslaunch/rxloggerlevel(error).png

亀が壁にあたり,rxconsole には以下のように表示されます:

rostopic pub turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  0.0

ROS/Tutorials/UsingRxconsoleRoslaunch/rxconsole(turtlesimerror).png

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

ログ レベルは優先順位がつけられています.Fatal が最高の優先度で Debug が最低です.ロガー レベルの設定することで,設定した優先順位から上のメッセージを全て受け取ることができます.例えば,レベルを Warn に設定すると, Warn, Error, Fatal のログ メッセージを受け取ることができます.

turtlesim を Ctrl-C して,複数の turtlesim ノードを起動して,片方のノードが片方のノードを真似するようにしましょう:

roslaunch の使い方

roslaunch はラウンチ ファイルで宣言されたノードを起動します.

使い方:

$ roslaunch [package] [filename.launch]

始めに,ラウンチ ファイルを作らなければなりません.あなたの beginner tutorials パッケージ内に,ラウンチ ディレクトリとラウンチ ファイルを作成しましょう:

$ roscd beginner_tutorials 
$ mkdir launch
$ cd launch

ラウンチ ファイル

turtlemimic で呼び出されるラウンチ ファイルを作成します.以下をコピーして貼り付けてください:

   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>

ラウンチ ファイルの説明

ラウンチ xml を分解してみましょう.

   1 <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>

sim という名前の turtlesim ノードで,tuetlesim1 と turtlesim2 という2つのネームスペースのグループを起動します.こうすることで,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>

これでラウンチ ファイルの xml タグを閉じます.

roslaunching

ラウンチ ファイルを roslaunch してみましょう:

$ roslaunch beginner_tutorials turtlemimic.launch

2つの turtlesim を起動させ,新しいターミナルrostopic コマンドを発行します:

$ rostopic pub turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8

turtlesim1 にしかコマンドを送らなくても,2つの tuetlesim が動作するでしょう.

ROS/Tutorials/UsingRxconsoleRoslaunch/mimic.png

ラウンチ ファイルがどのように動作しているかは,rxgraph を使用することで,より理解できるでしょう:

$ rxgraph

ROS/Tutorials/UsingRxconsoleRoslaunch/mimiclaunch.png

rxconsole と roslaunch を使えるようになりました.次はROS のオプションを編集してみましょう.次のチュートリアルでは使わないので,全ての turtlesim は Ctrl-C してかまいません.

Wiki: ja/ROS/Tutorials/UsingRxconsoleRoslaunch (last edited 2009-12-29 00:40:04 by MeloneeWise)