ROSでパラメータを登録する方法
ロボット業界でよく使われるフレームワークとして、ROS[1]というものがあります。ROSでは、生成するプロセス(ROS的にはノード)毎にパラメータを設定することが出来ます。先日そのパラメータを使う機会がありましたので、パラメータの設定方法を書きます。なおプログラミング言語を用いて説明する部分に関しては、Pythonを使って記述します。
パラメータとは
パラメータとは、ノードが外部に公開する変数のことです。外部からパラメータに値を設定することで、ノードの挙動を変更することが出来ます。例えば移動を司るノードが外部にパラメータとして速度を公開している時、外部からパラメータを操作することで速度を変更することができます。
パラメータの設定方法
パラメータを設定する方法には
1. ソース上で設定
2. ノード起動時に設定する
3. コマンドラインで設定する
の3パターンがあります。それぞれの設定方法により、同じプログラムを使っても生成されるノード毎に保有するパラメータが異なるので注意が必要になります。また上記3つの方法があることで、ROSではいつでもノードにパラメータを設定することができるとわかります。
ソース上で設定する
ソースコードで設定するには、set_param関数を使います。ソースコード上で設定することで、そのソースを元に作られたノードには必ずパラメータが設定された状態で生成されます。つまり、
rospy.set_param('foo', 0.1) # デフォルト値0.1
とすれば、ノードは起動時点で必ずデフォルトで0.1という値が入ったfooというパラメータを持つことになります。
ノード起動時に設定する
ノードを起動する時、パラメータを設定して起動することができます。方法としては、
./foo.py /foo/bar:=0.1
とすることで、ノードfooに0.1という値を持つ変数barを持たすことができます。
起動時にパラメータを設けることで、同じプログラムから生成するノードで別々のパラメータを設けることができます。また、プログラムを修正するせずにパラメータを設定することで、お試しでパラメータを使って、ノードの動きを検証してみるということができます。