19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[ROS]複数のlaunchを同時に実行する

Posted at

はじめに

ROSにはlaunchというしくみがあり,複数のノードをまとめて実行することができます.変数もそこで設定できたりします.とっても便利です.
システムが大きくなるにつれて,起動すべきlaunchファイルも増えていきますが,includeタグを使えば,複数のlaunchを1つのlaunchにまとめることもできます.
しかし,これでは1つのターミナル上に全てのノードが展開されてしまいます.ROS_INFOなどが見難くなったり,(検証したわけではありませんが)挙動が遅くなったりしそうです.

なので,ひと手間かかるのですが,なんとか1コマンドで複数のlaunchを実行する方法を見つけました.

シチュエーション

ROSのプロジェクトってこんな感じになると思います.
ここで,a.launch, b.launch, c.launchを同時に複数のターミナルで実行することを考えます.
commonはROSのパッケージである必要はありません.

catkin_ws
├── build
├── devel
└── src
    ├── common
    │   ├── bashes
    │   │   ├── a.launch.bash
    │   │   ├── b.launch.bash
    │   │   └── c.launch.bash
    │   └── executions
    │       └── exe.bash
    ├── pkg_a
    │   ├── CMakeLists.txt
    │   ├── launch
    │   │   └── a.launch
    │   ├── package.xml
    │   └── src
    │       └── いろいろプログラムある
    ├── pkg_b
    │   ├── CMakeLists.txt
    │   ├── launch
    │   │   └── b.launch
    │   ├── package.xml
    │   └── src
    │       └── いろいろプログラムある
    └── pkg_c
        ├── CMakeLists.txt
        ├── launch
        │   └── c.launch
        ├── package.xml
        └── src
            └── いろいろプログラムある

やりかた

1. ターミナルプロファイルの設定

ターミナルの編集→プロファイルから新規を作成します.
プロファイル名をなんか適当に決めます(ここでは,roslaunchとします).
デフォルトと違うところは,「タイトルとコマンド」タブで設定する「コマンドの実行が完了した時」を「端末を終了する」から「端末を開いたままにする」とします.
背景とか色はご自由にどうぞ.

2. x.launch.bashの作成

ちょっと遠回りなのですが,分けて実行したいlaunchファイルを実行するbashを作成します.
つまりここでは,common/bashesに

a.launch.bash
#!/bin/bash
roslaunch pkg_a a.launch

を作ります.
もちろんただのbashなので,launchに設定したいargとかがあれば,

b.launch.bash
#!/bin/bash
roslaunch pkg_b b.launch use_gui:=true

のようにできます.
c.launch.bashも同様に作ります.
もちろん全て実行可能にしておきましょう.

3. exe.bashの作成

これを実行することで,a.launch.bashb.launch.bashc.launch.bashが同時に複数のターミナルで実行されるようにします.

具体的には,

exe.bash
#!/bin/bash
tab="--tab-with-profile=roslaunch --command "
window="--window-with-profile=roslaunch --command "

cd $HOME/catkin_ws/src/common/bashes
gnome-terminal \
  $tab './a.launch.bash'\
  $tab './b.launch.bash'\
  $tab './c.launch.bash'

とします.

あとは,

$ ./catkin_ws/common/executions/exe.bash

のコマンド1つで複数のlaunchが同時にバラバラのターミナルで実行できます.

最後に

結局ROSかんけーないやん,というツッコミはナシでおねがいします...

19
18
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
19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?