ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

dynamic_reconfigure group defaults

asked 2015-07-09 14:38:33 -0500

thebyohazard gravatar image

I stumbled upon the not-quite-as-well-documented feature of dynamic_reconfigure groups.

As I understand, whenever you set up a server, it should call the callback and initialize the config parameter with the values found in the cfg file. However, my groups are not being set to defaults, only my "bare" parameters are. If I change one of the group parameters, then the change takes effect.

Is there something I'm missing, or should I file a ticket?

(btw this ticket mentions inconsistent behavior, but it's talking about states rather than defaults, so I'm not sure it's related.)

void dynamic_cb(pkgConfig &config, uint32_t){
        a = Duration(config.a);
        b1 = config.groups.b.part1;
        b2 = config.groups.b.part2;

cfg file:

gen.add("a", double_t, 0, "a_description", 1, 0, 10000)
group = gen.add_group("b")
group.add("part1", double_t, 0, "b1", 3.0, 0.0, 10.0)
group.add("part2", double_t, 0, "b2", 3.0, 0.0, 10.0)
edit retag flag offensive close merge delete


any update on this?

ffurrer gravatar image ffurrer  ( 2016-06-07 06:22:33 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-06-07 08:24:37 -0500

ffurrer gravatar image

Ok, I figured it out :).

In the current implementation the generated <name>Config class contains the variables of all groups as members directly. The ones under the corresponding group (class), the ones you (and I as well) accessed, never get assigned the default values.

So what you should do instead (at least until this code gets cleaned up):

void dynamic_cb(pkgConfig &config, uint32_t){
  a = Duration(config.a);
  b1 = config.part1;
  b2 = config.part2;

You can take a look at the implementation of the code generator here.

Just adding this small note here: you can also not add parameters with the same name to different groups, as they would get the same variable name in the main <name>Config class.


edit flag offensive delete link more

Question Tools



Asked: 2015-07-09 14:38:33 -0500

Seen: 1,922 times

Last updated: Jun 07 '16