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を使う」
