dynamic_reconfigure icon indicating copy to clipboard operation
dynamic_reconfigure copied to clipboard

Dynamic dynamic reconfigure for python

Open awesomebytes opened this issue 9 years ago • 49 comments
trafficstars

I implemented a tiny layer to be able to do a "dynamic dynamic reconfigure" server at https://github.com/pal-robotics/ddynamic_reconfigure_python

It allows to add some dynamic reconfigure variables and then just call a start method with a callback to have a dynamic reconfigure server running (instead of using a .cfg file and all the stuff necessary currently for having the server). Give a look to the README with an example. Maybe we want this to be added to the dynamic_reconfigure package itself?

If you give a look at the code I needed to write to achieve this, it's very short: https://github.com/pal-robotics/ddynamic_reconfigure_python/blob/master/src/ddynamic_reconfigure_python/ddynamic_reconfigure.py

@ibaranov-cp I think you already tried it and liked it too :)

awesomebytes avatar May 31 '16 15:05 awesomebytes

I tired it, quite liked it actually. From a demo/quick prototype phase, very nice to be able to just write pure Python, and still use dynamic reconfigure for tuning.

ibaranov-cp avatar May 31 '16 15:05 ibaranov-cp

@awesomebytes Nice work, that's a cool feature addition. In order to integrate it to the dynamic_reconfigure package we would need to provide the same feature for c++ to keep the feature set symmetrical. If nobody has time to implement the c++ counterpart, it can be released as a standalone package (like ddynamic-reconfigure-python) depending on dynamic_reconfigure.

mikaelarguedas avatar Jun 13 '16 23:06 mikaelarguedas

Internally at PAL we have a c++ version. I'll check if it can be released somehow :) On Jun 14, 2016 01:06, "Mikael Arguedas" [email protected] wrote:

@awesomebytes https://github.com/awesomebytes Nice work, that's a cool feature addition. In order to integrate it to the dynamic_reconfigure package we would need to provide the same feature for c++ to keep the feature set symmetrical. If nobody has time to implement the c++ counterpart, it can be released as a standalone package (like ddynamic-reconfigure-python) depending on dynamic_reconfigure.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ros/dynamic_reconfigure/issues/62#issuecomment-225734664, or mute the thread https://github.com/notifications/unsubscribe/ABpFdO2i7z5706lTp8ulvFnpk2Ure0Nnks5qLeJpgaJpZM4Iqpn8 .

awesomebytes avatar Jun 13 '16 23:06 awesomebytes

Great! thanks

mikaelarguedas avatar Jun 13 '16 23:06 mikaelarguedas

Internally at PAL we have a c++ version. I'll check if it can be released somehow :)

I was just looking for something like this and came across this issue. My use-case is exposing the configuration of an existing application to ROS (as a developer interface). The configuration is currently specified programmatically in the source code itself such that all the type information is available at runtime and could be used to feed dynamic reconfigure. Your ddynamic-reconfigure looks like exactly the tool I would need for that, so if releasing it would be a possibilty, that would be pretty neat!

NikolausDemmel avatar Jun 29 '16 19:06 NikolausDemmel

Internally at PAL we have a c++ version. I'll check if it can be released somehow :)

@awesomebytes, any updates on the above?

NikolausDemmel avatar Aug 15 '16 20:08 NikolausDemmel

I'm on holidays, I don't expect to get near a computer soon, sorry! On Aug 16, 2016 05:45, "Nikolaus Demmel" [email protected] wrote:

Internally at PAL we have a c++ version. I'll check if it can be released somehow :)

@awesomebytes https://github.com/awesomebytes, any updates on the above?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ros/dynamic_reconfigure/issues/62#issuecomment-239923698, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpFdMNk9E3LLOTekvgPHGA-W_rFBiXJks5qgM_qgaJpZM4Iqpn8 .

awesomebytes avatar Aug 16 '16 02:08 awesomebytes

Sure, no worries, enjoy!

NikolausDemmel avatar Aug 16 '16 03:08 NikolausDemmel

@awesomebytes, could you somehow get me access to that C++ version?

NikolausDemmel avatar Oct 08 '16 16:10 NikolausDemmel

@NikolausDemmel & @mikaelarguedas as spoken personally in ROSCON, I've given you access to a bitbucket repo of the current implementation so we can move it from supporting int's and double's to support all of dynamic reconfigure types (bools, strings, evil_enumerates). Let's see if we can make it work soon and add everything directly to dynamic_reconfigure.

awesomebytes avatar Oct 08 '16 17:10 awesomebytes

@awesomebytes, cheers, I started work on this. Since I need a bit more than just the basic "here is a pointer, please update the variable directly when the reconfigure service is called", I'm considering to take ideas from the currently implementation but effectively write it from scratch. If course I would like to retain the simple use cases in the same style as they are now.

Where would be a good place to discuss design and implementation (in case someone is interested)?

cc @mikaelarguedas

NikolausDemmel avatar Oct 10 '16 02:10 NikolausDemmel

@NikolausDemmel, @awesomebytes, How is it going? Any plans on releasing the C++ version of ddynamic_reconfigure?

ubuntuslave avatar Jan 04 '17 22:01 ubuntuslave

Hello Carlos,

I haven't looked into it again, it got some interest at the moment but nothing was finished. Maybe your comment will ping my friends? :)

On Jan 5, 2017 09:43, "Carlos Jaramillo" [email protected] wrote:

@NikolausDemmel https://github.com/NikolausDemmel, @awesomebytes https://github.com/awesomebytes, How is it going? Any plans on releasing the C++ version of ddynamic_reconfigure https://github.com/pal-robotics/ddynamic_reconfigure_python?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ros/dynamic_reconfigure/issues/62#issuecomment-270508952, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpFdPLg6wu8VwXKA3lh-pMetpAiSt0lks5rPCClgaJpZM4Iqpn8 .

awesomebytes avatar Jan 04 '17 22:01 awesomebytes

I didn't have any time to work on the C++ implementation since we mentionned it at ROSCon. @NikolausDemmel started working on it a while back but I don't know what the status is

mikaelarguedas avatar Jan 10 '17 07:01 mikaelarguedas

Unfortunatly I didn't ever find the time to continue work here. Concepts I have, and use cases, just no time to implement :-|.

NikolausDemmel avatar Jan 18 '17 22:01 NikolausDemmel

As mainly a c++ dev I have been interested in adding this for a bit now. @NikolausDemmel it seems like you have some ideas on the implementation and use cases. I am willing to start from scratch on this but if theres something available to start with it might come together faster...

linknum23 avatar Nov 24 '17 03:11 linknum23

@linknum23, I have nothing to base any further work on. Maybe @awesomebytes can give you access to his internal version from a few years ago.

NikolausDemmel avatar Nov 27 '17 00:11 NikolausDemmel

@linknum23 @NikolausDemmel let me give it a try asking.

awesomebytes avatar Nov 27 '17 05:11 awesomebytes

Ok, I didn't really remember how was the status of this. I added you to a private repository with the partial implementation. The caveats of it:

the current implementation so we can move it from supporting int's and double's to support all of dynamic reconfigure types (bools, strings, evil_enumerates)

There is a branch by @NikolausDemmel called niko-devel with some changes.

awesomebytes avatar Nov 27 '17 05:11 awesomebytes

Fantastic. Thanks @awesomebytes! I will start diving into this.

linknum23 avatar Nov 27 '17 14:11 linknum23

Ah, see, I didn't even remember I pushed this :-). Thanks @awesomebytes and have fun @linknum23.

NikolausDemmel avatar Nov 27 '17 14:11 NikolausDemmel

@linknum23 I ignore it it will be useful but an implementation of the dynamic reconfigure client for c++ was merged relatively recently: https://github.com/ros/dynamic_reconfigure/pull/78

awesomebytes avatar Nov 29 '17 15:11 awesomebytes

Thanks, this has the potential to be useful for dd_reconfigure. The c++ client looks well documented.

linknum23 avatar Nov 29 '17 16:11 linknum23

Hey @NikolausDemmel @linknum23 did you get any work done on this? :)

awesomebytes avatar Feb 27 '18 09:02 awesomebytes

I haven't worked on it... :-/

NikolausDemmel avatar Feb 27 '18 09:02 NikolausDemmel

I have no progress to report. The extra time I had to work on this faded away quickly. I have some hope of working on it in the future but no concrete plans.

On Tue, Feb 27, 2018, 1:37 AM Nikolaus Demmel [email protected] wrote:

I haven't worked on it... :-/

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ros/dynamic_reconfigure/issues/62#issuecomment-368808866, or mute the thread https://github.com/notifications/unsubscribe-auth/AAmXu9OzjQG7MB3xW-ZIgNP65wY6b-Gkks5tY8zlgaJpZM4Iqpn8 .

linknum23 avatar Feb 27 '18 12:02 linknum23

My team and I are encountering these limits to dynamic reconfigure as well. We would would like to build a full python/cpp fix to it. @awesomebytes it would be great to have something to start with. Any chance of getting access to your Bitbucket as well?

wew84 avatar May 29 '18 12:05 wew84

@wew84 hello! I can give you access, could you drop me a line of who you are and what you do (maybe by email if you prefer) just to have a reference of who has access to it. I don't own the specific intellectual property of it (even tho I'm allowed to share it privately for the purpose of creating this open source tool) so I need to at least know who you are. Thank you :)

awesomebytes avatar May 29 '18 14:05 awesomebytes

Thank you @awesomebytes for giving me access to the repo. We are currently working on a fairly large overhaul of dynamic_reconfigure where we will be implementing the following:

  1. C++ API for dynamic_reconfigure client.
  2. dDynamic_reconfigure in all of its functionality for both python and C++
  3. 3d_reconfigure: a new feature where the clients will be able to change the limits, defaults, and whether a param is enabled or not

We are trying to do this over the course of the next month or two. And would be happy to hear your input on this

wew84 avatar Jun 06 '18 09:06 wew84

I believe there is a C++ client API already, I'm on mobile so I can't link it... But it should be in this repo!

And there is a Python dynamic dynamic reconfigure server too (which I wrote), are you going to rewrite it? Why?

3d configure sounds cool! (3d as dynamic dynamic dynamic? Haha)

On Wed, Jun 6, 2018, 19:26 Noam C. Golombek [email protected] wrote:

Thank you @awesomebytes https://github.com/awesomebytes for giving me access to the repo. We are currently working on a fairly large overhaul of dynamic_reconfigure where we will be implementing the following:

  1. C++ API for dynamic_reconfigure client.
  2. dDynamic_reconfigure in all of its functionality for both python and C++
  3. 3d_reconfigure: a new feature where the clients will be able to change the limits, defaults, and whether a param is enabled or not

We are trying to do this over the course of the next month or two. And would be happy to hear your input on this

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ros/dynamic_reconfigure/issues/62#issuecomment-395005308, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpFdAgFPx2dm_MiWD5x4NQD1k9HUS2Rks5t56AugaJpZM4Iqpn8 .

awesomebytes avatar Jun 06 '18 11:06 awesomebytes