LoginSignup
28
16

More than 1 year has passed since last update.

ROS講座04 roslaunch1

Last updated at Posted at 2018-05-03

環境

この記事は以下の環境で動いています。

項目
CPU Core i5-8250U
Ubuntu 20.04
ROS Noetic

インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。

概要

ROS講座03でROSの実行を行いましたが、簡単なROSの実行でもターミナルを3つ開かなくてはいけません。この方法では、今後もっと複雑な構成をとることを考えると実行が大変面倒です。
そのような場合にはroslaunchを使用します。roslaunchでは複数のROSノードを同時に立ち上げたり、複雑な設定をすることができます。

launchファイルの記述

流儀としてROSパッケージ内のlaunch/ディレクトリにlaunchファイルを作成します。

cd ~/catkin_ws/src/ros_lecture/basic_lecture/launch
touch pubsub1.launch

以下のようなlaunchファイルを記述してみてください。XML形式で記述します。XMLでは開始タグ<tag>から閉じタグ</tag>までの間が1つの要素として扱われます。またタグの中に属性をattribute="value"の形式で書けます。空要素タグ<tag/>は単独で(つまり閉じタグ無しで)使えます。

basic_lecture/launch/pubsub1.launch
<launch>
  <node name="basic_simple_talker"   pkg="basic_lecture" type="basic_simple_talker" />
  <node name="basic_simple_listener" pkg="basic_lecture" type="basic_simple_listener" output="screen"/>
</launch>

nodeタグの中の

  • pkgはそのROSノードが属するROSパッケージ名を書きます。
  • typeはROSノードの元の名前を書きます。
  • nameは自由につけることができる名前です。リネームすることができるので同じROSノードを名前を変えて2つ実行することもできます(これのメリットはまた後々書きます)。

実行1

各ターミナルごとに実行前にsource ~/catkin_ws/devel/setup.bashを実行する必要があります。

launchの実行
roslaunch basic_lecture pubsub1.launch

この1行でROS講座03で実行したターミナル3つ分の処理が行えます。
しかしlistenerの分しか画面出力がされていません。roslaunchではnodeタグにoutput="screen"の属性を付けたノードのみ画面出力がされます。

launchの結果
user@ubuntu:~$ roslaunch basic_lecture pubsub1.launch 
... logging to /home/srs/.ros/log/afcc2554-5dc7-11e8-a707-000c297e7534/roslaunch-ubuntu-7245.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ubuntu:39439/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.13

NODES
  /
    simple_listener (basic_lecture/simple_listener)
    simple_talker (basic_lecture/simple_talker)

auto-starting new master
process[master]: started with pid [7255]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to afcc2554-5dc7-11e8-a707-000c297e7534
process[rosout-1]: started with pid [7268]
started core service [/rosout]
process[simple_talker-2]: started with pid [7275]
process[simple_listener-3]: started with pid [7286]
[ INFO] [1526997287.237937304]: I heard: [hello world!]
[ INFO] [1526997287.337150230]: I heard: [hello world!]
[ INFO] [1526997287.437157640]: I heard: [hello world!]
[ INFO] [1526997287.536618320]: I heard: [hello world!]
[ INFO] [1526997287.636732507]: I heard: [hello world!]
[ INFO] [1526997287.737866320]: I heard: [hello world!]
#この後も続く

実行2

以下のようなpubsub2.launchを書いて実行してみましょう。各ターミナルごとに実行前にsource ~/catkin_ws/devel/setup.bashを実行する必要があります。

basic_lecture/launch/pubsub2.launch
<launch>
  <node name="basic_simple_talker"   pkg="basic_lecture" type="basic_simple_talker" output="screen"/>
  <node name="basic_simple_listener" pkg="basic_lecture" type="basic_simple_listener" output="screen"/>
</launch>
launchの実行
roslaunch basic_lecture pubsub2.launch

このようにするとbasic_simple_talkerbasic_simple_listenerの両方の画面出力がターミナル上に出ます。

目次ページへのリンク

ROS講座の目次へのリンク

28
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
16