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

What are the semantics of 'reconfiguration level' for dynamic reconfigure?

asked 2011-05-03 11:18:51 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

In the dynamic_reconfigure tutorial, it is claimed that dependence on driver_base is specific to the tutorial, yet an enum type from driver_base is used to set the 'reconfiguration level'.

Is this just a field to be interpreted however we like, and just used with the driver_base/SensorLevels message in this case? Or is the driver_base/SensorLevels message the standard for the 'reconfiguration level' field semantics?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
3

answered 2011-06-17 11:11:55 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

Whatever value you send there gets passed through to the dynamic_reconfigure callback as a second argument (note that the callback takes two arguments, not the usual one). Ergo, the reconfiguration level semantics are up to you.

Sticking with the driver_base model probably isn't a bad idea, though.

edit flag offensive delete link more

Comments

Is your answer authoritative, or deduced? It seems like a really bad idea for people to be arbitrarily determining their own semantics for such a thing?
Asomerville gravatar image Asomerville  ( 2011-06-17 12:31:23 -0600 )edit
Deductive, but correct.
Mac gravatar image Mac  ( 2011-06-17 12:32:27 -0600 )edit
Correct by what standard? Yes, it will compile/function, but the question is more about agreed convention to prevent confusion in the future/prevent code rot.
Asomerville gravatar image Asomerville  ( 2011-06-17 12:51:53 -0600 )edit
Correct by the standard of "what I wrote correctly describes the behavior". I agree that the wiki documentation should be improved to specify the intended semantics.
Mac gravatar image Mac  ( 2011-06-18 08:01:48 -0600 )edit
I've created us a ticket; see #5015.
Mac gravatar image Mac  ( 2011-06-18 08:18:36 -0600 )edit
Thanks : )
Asomerville gravatar image Asomerville  ( 2011-06-19 18:37:02 -0600 )edit
4

answered 2011-07-20 09:05:56 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

I agree with Mac's answer.

I had this discussion with Blaise Gassend a year or so ago. He said the level parameter is just a bit mask. It can be used to classify sets of parameters in any way that is convenient to the package defining the server. The bits for all parameter classes that have changed will be ORed together for the service callback.

One useful classification scheme is suggested by the driver_base states:

  1. Parameters that can only be changed while the device is closed.
  2. Parameters that can be changed while the device is not streaming.
  3. Parameters that can be changed while the device is open and streaming.

But, servers are free to classify their parameters any way they like.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2011-05-03 11:18:51 -0600

Seen: 2,118 times

Last updated: Jul 20 '11