2
0

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.

ROSAdvent Calendar 2017

Day 9

roslaunchのコードAPIを使う(**very_unstable**)

Last updated at Posted at 2017-12-08

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はなるべく使わないようにしよう

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?