Dynamic Reconfigureのチュートリアル rqt_reconfigureパッケージを使うことで、プログラム実行中でも、パラメータ変更することができます。
rqt_reconfigureが使えるようになっていること
※ROSをdesktopfullで入れた場合はすでにインストールされているはず
心配な方は…
$ sudo apt install ros-$ROS_DISTRO-rqt-reconfigure
でインストールしてください
- cfgファイルの制作
- 実行フラグの設定
- CmakeFileを設定
本パッケージのcfgディレクトリに、○○○.cfg
として生成してください
gen.add("name",int_t,0,"An Integer parameter",50,0,100)
gen.addでパラメータを追加していきます。引数の意味はそれぞれ以下のようになっています。
引数 | 意味 |
---|---|
name |
パラメータ名 |
type |
パラメータの型(int_t/double_t/str_t/bool_t のどれか) |
level |
dynamic reconfigureコールバックに渡されるビットマスク |
description |
パラメータに関する説明 |
default |
初期値 |
min |
最小値(strとboolは不要) |
max |
最大値(strとboolは不要) |
↓のようにするとプルダウンでの変更もできます
size_enum = gen.enum([ gen.const("Small", int_t, 0, "A small constant"),
gen.const("Medium", int_t, 1, "A medium constant"),
gen.const("Large", int_t, 2, "A large constant"),
gen.const("ExtraLarge", int_t, 3, "An extra large constant") ],
"An enum to set size")
gen.add("size", int_t, 0, "A size parameter which is edited via an enum", 1, 0, 3, edit_method=size_enum)
最終行では第2引数はパッケージ名、第3第3引数はこのファイル名から拡張子を除いた物にすること
exit(gen.generate(PACKAGE, "dynamic_reconfigure_tutorial", "Sample"))
$ roscd dynamic_reconfigure_tutorial/cfg
$ chmod a+x Sample.cfg
# パッケージの依存を追加
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
dynamic_reconfigure #この行を追加
)
# configファイルを追加
generate_dynamic_reconfigure_options(
cfg/Sample.cfg
)
- パラメータを変更される側
$ rosrun dynamic_reconfigure_tutorial reconfigure_node
- GUIでパラメータを変更
$ rosrun rqt_reconfigure rqt_reconfigure
$ roslaunch dynamic_reconfigure_tutorial reconfigure_node.launch
-
cfgファイルの初期値は、node起動時のrosparamで更新可能です。
「ROS講座28 Dynamic Reconfigureを使う」