[ros-users] Best way to set the parameters for the controllers (param or message?)

Stuart Glaser sglaser at willowgarage.com
Mon Apr 19 18:37:18 UTC 2010


Hi Ugo,

The best way to load pid gains is to place them on the parameter
server and load them from your controller's init() function.  If you'd
like to change them on the fly, then check out the dynamic reconfigure
tool:

http://www.ros.org/wiki/dynamic_reconfigure

If dynamic reconfigure is too heavyweight, then write an
updateParametersFromServer() function (as Dejan suggested).  Next, add
a service call (likely of type std_srvs/Empty) that calls the
function.  Then you can use `rosparam set` to change the parameters
and then `rosservice call` to pull the new configuration into your
controller.

But try dynamic_reconfigure first.

-Stu

On Mon, Apr 19, 2010 at 11:18 AM, Dejan Pangercic
<dejan.pangercic at gmail.com> wrote:
> Hi Ugo,
>
> I am by no means authority but this is the way I update parameters in my nodes:
> Define node's member function, e.g.:
> /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>  double param_;
>  void
>      updateParametersFromServer ()
>    {
>      nh_.getParam ("my_param", param_);
>    }
> and then constantly call it in that node's spin function:
>
>      updateParametersFromServer ();
>
> See also an attached example file.
>
> Furthermore, I just recently stumbled upon
> http://www.ros.org/wiki/dynamic_reconfigure which "facilitates dynamic
> node reconfiguration". However I do not really understand in how far
> is it different to conventional updating of parameters as discussed
> before. But maybe Blaise can tell here more.
>
> D.
> On Mon, Apr 19, 2010 at 6:56 PM, Ugo Cupcic <ugo at shadowrobot.com> wrote:
>> Hi,
>>
>> I'm currently setting the parameters for the controllers (PID and so on)
>> via a message (I have a subscriber which updates the values when it
>> receives the corresponding message).
>>
>> It works well, but I wanted to know what was the recommended way of
>> doing that in ROS. Is it better to do it using parameters? (But then how
>> can I  change the corresponding values when the parameters are updated?)
>>
>> Cheers,
>>
>> Ugo
>>
>> --
>> Ugo Cupcic         |  Shadow Robot Company | ugo at shadowrobot.com
>> Software Engineer      251 Liverpool Road
>> need a Hand?           London  N1 1LX       | +44 20 7700 2487
>> http://www.shadowrobot.com/hand/              @shadowrobot
>>
>>
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>>
>
>
>
> --
> MSc. Dejan Pangercic
> PhD Student/Researcher
> Computer Science IX
> Technische Universität München
> Telephone: +49 (89) 289-17780
> E-Mail: dejan.pangercic at in.tum.de
> WWW: http://ias.cs.tum.edu/people/pangercic
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>



-- 
Stuart Glaser
sglaser -at- willowgarage -dot- com
www.willowgarage.com



More information about the ros-users mailing list