[Documentation] [TitleIndex] [WordIndex

Note: This tutorial assumes that you have completed the previous tutorials: ROSのサービスとパラメータを理解する.
(!) 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: ROSでrosedを使ってファイルを編集する

rqt と turtlesim パッケージの設定

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

$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim

<distro>を使っているROSのディストリビューション名に置き換えてください(例えば, hydro,Indigo).

NOTE:前節のチュートリアルで rqt と turtlesim はビルド済みとなっているかもしれません.もし確証が無い場合は,もう一度ビルドしても特に問題は生じません.

rqt_console と rqt_logger_level の使い方

rqt_console はノードからの出力を表示する機能をROS のログ収集フレームワークに付加するパッケージです。rqt_logger_levelはノード実行時のログ詳細レベル(DEBUG, WARN, INFO, and ERROR)の変更を可能にするパッケージです.

では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

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を使って立ちあげてみましょう.

roslaunch を使う

roslaunch はlaunchファイルで定義されたノードを起動します.

使い方:

$ roslaunch [package] [filename.launch]

まずは既に構築してある, beginner_tutorials パッケージに移動しましょう:

$ roscd beginner_tutorials

もしroscdの実行結果が_roscd: No such package/stack 'beginner_tutorials'_のような出力になる時は、ワークスペース作成時のチュートリアルの最後で行った環境設定ファイルをsourceコマンドで実行する必要があるでしょう。

$ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials

それでは, launch ディレクトリを作成してみましょう:

$ mkdir launch
$ cd launch

launchファイル

turtlemimic で呼び出される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>

ここはトピックのinputとoutputの機能をturtlesim1とturtlesim2に割り当てた、模倣動作を行うmimicノードを起動します。この新たな割り当てで、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