概要
launchファイルだけ作成したいときに、わざわざROS 2パッケージを作るのが面倒くさいので、直接Pythonスクリプトとして実行したかった
作成したlaunchファイル
ROS 2のtalkerとlistenerデモノードを同時に起動する例
sample.launch.py
#!/usr/bin/env python3
import launch
from launch_ros.actions import Node
from launch import LaunchService
def generate_launch_description():
return launch.LaunchDescription([
Node(
package='demo_nodes_cpp',
executable='talker',
name='talker',
output='screen'
),
Node(
package='demo_nodes_cpp',
executable='listener',
name='listener',
output='screen'
)
])
if __name__ == '__main__':
ls = LaunchService()
ls.include_launch_description(generate_launch_description())
ls.run()
適当な場所にsample.launch.pyという名前でlaunchファイルを作って保存する。
pythonで実行する
python3 sample.launch.py
または実行権限を付与して直接実行
sudo chmod +x sample.launch.py
./sample.launch.py
通常のlaunchファイルの下に以下を追加するだけ
ros2 launchでは 'if name == 'main':'
以下は実行されないので,そのままros2 pkgのlaunchに置いて使用できる。
if __name__ == '__main__':
ls = LaunchService()
ls.include_launch_description(generate_launch_description())
ls.run()
追記
記事を書いたあとにros2 launchコマンドでパッケージを作らなくても実行できることを知った。
パッケージを作らずにlaunchだけ実行したい場合は以下のコマンドでよさそう。
ros2 launch sample.launch.py
参考