Q. roslaunchをPythonから叩きたいやつおるか?w
A. おらんなw
roslaunchはROSでロボットシステムを構築するのに欠かせない機能の1つでしょう。また、その文法は『複雑なROSの構造に対応できるように』よく工夫されていると思います。roslaunchそのものに不足している機能についても、例えばtimed_roslaunchのようなユーザが作成した仕組みによって十分カバーされているように感じます。
と、いうことで、roslaunchをPythonから叩くような必要はほとんどないはずなので、そういうことを思いつく前にまずはしっかりroslaunchの文法ドキュメントとTag Referenceを読みましょう。おわり。
おわりません
ここで終わるとただのポエムになってしまうので、続きを書きます。
roslaunchには神の慈悲でPython向けのAPIが提供されています。ただしこれは、ここに書いてあるように、very unstableです。
APIは以下のように利用することができます。
import rospkg
import roslaunch
# パッケージパスの取得
rospack = rospkg.RosPack()
pkg_path = rospack.get_path('hoge')
launch_path = path + '/launch/hoge.launch'
# uuidの取得とロギング設定
uuid = roslaunch.rlutil.get_or_generate_uuid(None, False)
roslaunch.configure_logging(uuid)
# ROSLaunchParentオブジェクトの作成
# roslaunch.parent.ROSLaunchParent(uuid, [launch_path1, launch_path2, ...])とすることで複数のlaunchを同時に立ち上げることも可能
launch = roslaunch.parent.ROSLaunchParent(uuid, [launch_path])
# roslaunchの立ち上げ
launch.start()
# roslaunchの終了
launch.shutdown()
一見すると便利なように見えますが、例えばlaunch.start()したあとで、起動したroslanuchが動作し続けているのかなどの情報を得ることはできません。そういう機能を必要としているのであれば、diagnoticsとかを使ったほうがよさそうです。
まとめ
roslaunch APIはなるべく使わないようにしよう