kakepro’s blog

プログラムとかPC周りのことを書いていきます

【ROS入門】ROSプログラミング:roslaunchを利用する

はじめに

・環境
Windows 10 Home 21H2
WSL2
Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz

・ROS melodicのインストール
下記記事を参照のこと
kakepro.hatenablog.com

・ここでやること
複数のプログラムをrolaunchでまとめて起動する

roslaunchを利用してみる

前回の記事で簡単なROSプログラムを書いてみた
kakepro.hatenablog.com

ROSでは簡単な通信ノードを動かしてみるだけでもroscore/publish/subscribeの三つのプログラムを起動する必要があった
ROSの思想として、再利用しやすいように単一のプログラムの機能はなるべく単純にすることが推奨されているため、
複雑なことをやろうと思うとプログラムの数が非常に多くなることが想定される
そこで複数のROSノードをまとめて起動したり、まとめて設定を行うことができるroslaunchを使ってみる

launchファイルの作成

ワークスペースは前回のpubsub_wsをそのまま使うことにする
roslaunchの設定ファイルは~.launchという拡張子でlaunchフォルダに格納しておくと良い
launchファイルはxml形式で記述する

$ cd ~/pubsub_ws/
$ mkdir ./src/launch
$ vim ./src/launch/chat.launch

<launch>
    <node pkg="pubsub" name="talker" type="talker.py" />
    <node pkg="pubsub" name="listener" type="listener.py" />
</launch>

上記のように、タグの中にノードを指定する
pkg:パッケージ名
name:ノードの名前*1
type:実行ファイル名

実行方法は
$ roslaunch+パッケージ名+ファイル名
または
$ roslaunch+ファイルパス

今回の場合は
$ roslaunch ./src/launch/chat.launch

chat.launchを起動してもターミナルには特に何も表示されないが、rqt_graphを確認するとちゃんとROSノードが動いている
$ rqt_graph

roslaunch_rqt_graph

出力を確認したい場合はrqt_consoleやrostopicで確認できる
$ rostopic echo chatter

roslaunch_rostopic

roslaunch時に出力も確認したい場合は以下のように--screenオプションを付けるか
$ roslaunch pubsub chat.launch --screen
ローンチファイルに以下のように追記しても出力できる

<launch>
  <node pkg="pubsub" name="talker" type="talker.py" />
  <node pkg="pubsub" name="listener" type="listener.py" output="screen" />
</launch>

*1:roslaunchした場合、実行ファイル中のinit_nodeで指定した名前ではなくここで指定した名前で管理されることに注意