2023/03/27
ROSのノードを1つのbash fileで実行する
ROSのノードをrosrun やroslaunchで実行する際,毎回1つ1つのターミナルを開いて実行するのは,面倒です.そこで,それらのノードを,複数の端末で立ち上げるbash fileを作成したので紹介します.
コード
例えば,ros1とros2 をbridgeさせるノードを立ち上げるとき,3つか4つほどのノードを起動させる必要があるため,それを1つのコマンドで実行できるようにしたbash fileが以下のようになります.
本bash fileでは,xarm rosのdemo.launchをros1 noeticにて実行し,ros2 realsenseのノードをbridgeさせる処理を,一括で実行できます.
各処理がそれぞれ立ち上がって十分な時間が立ってから次のプロセスを実行させたかったので,sleepを入れています.
#!/bin/bash
# roscore起動
gnome-terminal -- bash -c "source /opt/ros/noetic/setup.bash && roscore"
sleep 1
# xArm起動
gnome-terminal -- bash -c "source /opt/ros/noetic/setup.bash && source /path/to/devel/setup.bash && roslaunch xarm6_moveit_config demo.launch"
sleep 3
# realsense ROS2起動
gnome-terminal -- bash -c "source /opt/ros/foxy/setup.bash && . /path/to/install/local_setup.bash && ros2 launch realsense2_camera rs_launch.py pointcloud.enable:=true"
sleep 2
# bridge 起動
gnome-terminal -- bash -c "source /opt/ros/noetic/setup.bash && source /opt/ros/foxy/setup.bash && . /path/to/install/local_setup.bash && ros2 run ros1_bridge dynamic_bridge"
-c オプションがあることで,コマンドを実行したらすぐにターミナルをKill させることを防いでいます.