Ask Your Question
8

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

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

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
2

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

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 imageAsomerville ( 2011-06-17 12:31:23 -0500 )edit
Deductive, but correct.
Mac gravatar imageMac ( 2011-06-17 12:32:27 -0500 )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 imageAsomerville ( 2011-06-17 12:51:53 -0500 )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 imageMac ( 2011-06-18 08:01:48 -0500 )edit
I've created us a ticket; see #5015.
Mac gravatar imageMac ( 2011-06-18 08:18:36 -0500 )edit
Thanks : )
Asomerville gravatar imageAsomerville ( 2011-06-19 18:37:02 -0500 )edit
3

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

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

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

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

Seen: 1,528 times

Last updated: Jul 20 '11