まとめて起動するやり方

ROSチュートリアルの流れ

はじめに

独自のメッセージファイルの作り方では、作成したプログラムを起動するときにroscoreを立ち上げて、rosrun ros_tutorial time_pub2.pyrosrun ros_tutorial timesub2.pyとそれぞれ起動していました。

しかし毎回これらのプログラムを立ち上げるのは手間です。 そこでROSにはまとめて起動することができるroslaunchというコマンドがあります。

この章では、roslaunchコマンドを使用して、まとめて複数のプログラムを起動するやり方について説明します。

詳しい説明や、他のROSコマンドについてはよく使用するROSコマンドを御覧ください。

launchファイルを書く

まずroslaunchコマンドで使用するlaunchファイルを書きましょう。 このlaunchファイルで起動するプログラムを指定することが出来ます。今回はtime_pub2.pytime_sub2.pyを指定します。

launchファイルはlaunchディレクトリの中に置きます。ない場合は作成しましょう。

roscd ros_tutorial
mkdir launch

ファイル名はdate.launchとします。

vim launch/date.launch
date.launch
<launch>
<node pkg="ros_tutorial" name="time_pub" type="time_pub2.py" />
<node pkg="ros_tutorial" name="time_sub" type="time_sub2.py" />
</launch>

コード解説

<launch>
</launch>

起動するnodeはこの間に書きます。

<node pkg="ros_tutorial" name="time_pub" type="time_pub2.py" />
<node pkg="ros_tutorial" name="time_sub" type="time_sub2.py" />

pkgは起動するパッケージ名、nameはノード名、typeはプログラム名を書きます。

実行

roslaunchコマンドで実行しましょう。

roslaunch ros_tutorial date.launch

何もエラーを吐かなければ正常に立ち上がっています。

実行結果

roslaunchコマンドで立ち上げた場合、プログラム内のprintは表示されません。 そのためrostopicコマンドでトピックが動いているか確認しましょう。

rostopic list
/Date_and_Time
/rosout
/rosout_agg
rostopic echo /Date_and_Time
date: 20181120
time: 172953.60466
---
date: 20181120
time: 172953.7045
---

またプログラム内のprintで表示できる--screenという引数があります。

roslaunch ros_tutorial date.launch --screen
date : 20181120 , time : 173715.503780
date : 20181120 , time : 173715.603760
date : 20181120 , time : 173715.701480
date : 20181120 , time : 173715.803500
date : 20181120 , time : 173715.902740
date : 20181120 , time : 173716.001930
date : 20181120 , time : 173716.101760
date : 20181120 , time : 173716.204750