ROSのDynamic Reconfigureについて紹介します。
Dynamic Reconfigureとは
Dynamic ReconfigureはタイトルにもあるようにNodeのパラメータを動的に変更する手段、ツールを指します。
通常のNodeは自身を起動時にrosparamなどでセットした値を元にパラメータを読み込みますが、どうしてもロボットを実行している時などに動的にパラメータを変更したくなるときがあります。そんなときにDynamic Recofigureの仕組みで変更することができます。
具体的にはどのようなことが可能になるかというと
- GUIから各ノードのパラメータを実行しながら変更できる
- 他のノードからノードのパラメータを実行しながら変更できる
と言ったようなことが可能になります。
GUIからノードのパラメータを変更する
rqt_reconfigureを使うとどのノードのパラメータも簡単に動的に変更することが可能です。
rosrun rqt_reconfigure rqt_reconfigure
上記のスライドバーを変更することでノードのパラメータも逐次更新されていくことになります。ロボットプログラミングのデバッグやパラメータ調整において重宝します。
ノードがDynamic Reconfigureを使えるようにする
これには幾らかの作業が必要になりますが、そこまで大変な話ではありません。
- Dynamic Reconfigureで設定を送るための形式を決める(.cfgファイルの設定. 変更可能 なパラメータの情報が記入されてます。)
- ノード側をServerとして、Dynamic Reconfigureの要求を受け付けるようにして、コールバック関数を用意する(通常コールバック関数はもらった設定を反映するだけ)
以上. cfgの作り方に関しては、cfgファイルの作り方
を参考にしてください。
他のノードからパラメータを動的に変更する
上でノード側にServerを用意すると書きましたが、パラメータを動的に変更するノードはClientとして実装します。こちらもcfgファイルがあれば用意に実装することができ、パラメータを受け取って自分の持っているパラメータを更新するだけで完了です。
ターミナルからDynamic Reconfigureを使う
rosrun dynamic_reconfigure関連で幾らか簡単にパラメータをロードしたりすることができるツールが用意されています。set, dump, loadコマンドあるので気になる方は使い方を調べてみてください。
おわりに
これもよく使うパッケージの一つです。早めに用意しておくと後での工数も削減できるので早くに準備するにこしたことはないです。