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

dynamic reconfigure accross multiple packages

asked 2018-03-08 04:55:35 -0500

Spartan_007 gravatar image

updated 2018-03-08 04:58:12 -0500

Hi,

I am using multiple packages for my application such as ,dynamixel_motor, hokuyo_node, laser_geometry and then my own package which subscribes the topics published by other packages. Now, based on some situation I want to change the extreme position limits of dynamixel servo. I want to do it from other package (say for example from within laser_geomtery based on pointcloud data I want to control servo's upper and lower position limits). I saw dynamic_reconfigure is a way to deal with such things. But I am confused if the same can be done across multiple packages. If yes, then how? By the way, I am writing my package in c++ whereas, dynamixel_motor is written in python.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2018-03-08 09:59:25 -0500

lucasw gravatar image

I don't think this is the answer to your question but I'll leave this answer here in case searches with similar keywords come across it:

I wrote a script called dr2dr.py that is meant to allow selecting individual controls from other dynamic reconfigure servers and combining them into a single server. If server 1 had controls A, B, & C and server 2 had controls D, E, & F a new server 3 could be configured that has controls A & F for example. Behind the scenes changing one of those controls on the front-end server 3 would result in interaction with the appropriate back-end reconfigure servers 1 and 2.

I haven't used it in a while a didn't leave a good demo behind (only this), so if it is of interest I can see if it works, fix it if it doesn't, and make a simple example.

In your case hokuyo_node has a dynamic reconfigure server, so the above might be useful, but I don't see a cfg in dynamixel_motor, you would have to add that functionality. I didn't look at it closely but if there are other interfaces (like topics or services) that allow changing joint limits within dynamixel motor then you could write a dynamic reconfigure server for your own package that uses the alternate interface behind the scenes. You can also manually have your reconfigure server call other reconfigure servers without dr2dr, that's just for some limited use cases.

If dynamixel motor only can be configured once at launch time then you are back in the position of having to modify it to make live changes possible.

From your description it isn't clear if your main node needs a reconfigure server, it is going to configure other nodes based on processing it does and not real time user control?

edit flag offensive delete link more

Comments

Thanks for the answer. My main node has message_filter callback for hokuyo_node and servo. Within that callback, I call laser_geometry and I want to reconfigure the servo position limits from there within laser_geometry.

Spartan_007 gravatar image Spartan_007  ( 2018-03-08 13:28:54 -0500 )edit

I found another package dynamixel-workbench which does not have any cfg but seems to have some services which could be used for configuring it dynamically. Please have a look if you can manage time.

Spartan_007 gravatar image Spartan_007  ( 2018-03-08 13:36:38 -0500 )edit

and yes, I want to configure other node based on the processing which happens in real time. But I don't want any GUI based real time user control.

Spartan_007 gravatar image Spartan_007  ( 2018-03-08 14:28:14 -0500 )edit

If you don't need a gui then no need to give your own package dynamic reconfigure server. It looks like dynamixel-workbench has position limits that can be set via services, so your callback could call those services. Just look up ros C++ service client if that isn't familiar.

lucasw gravatar image lucasw  ( 2018-03-08 18:45:46 -0500 )edit

Hey, I was able to create a separate message for the service in dynamxiel_workbench package and called it from my own package and everything worked flawlessly.

Thanks,

Spartan_007 gravatar image Spartan_007  ( 2018-03-29 23:22:46 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2018-03-08 04:55:35 -0500

Seen: 460 times

Last updated: Mar 08 '18