Design choices for Parameter Server [closed]

asked 2020-03-02 05:31:00 -0500

Alsing gravatar image

I was reading in depth the wiki for Parameter Server and am curious about the right way to use it. It would seem that by default, most parameters are loaded into a node's namespace (with ros::param::get()) or a nodehandle's namespace.

This segregates all parameters into seperate namespaces to avoid name clashes and seem to be intended to be used by the node itself. If I am not wrong, ROS uses YAML-CPP to parse the configuration file into the server, but wouldnt direct loading of the parameters into the node be better than loading everything (shared and custom) parameters into a server? Would loading the node-specific parameters through YAML-CPP and only shared parameters through the parameter server be better?

Im unsure what disadvantages there are to loading everything into the Parameter Server. From what i understand theres a potential performance hit with having all the parameters cached.

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by Alsing
close date 2020-12-03 23:01:27.717936

Comments

Not relevant with ROS2 in the horizon, and it's just poor architecture to have this issue.

Alsing gravatar image Alsing  ( 2020-12-03 23:02:11 -0500 )edit

I'm not sure which issue you are referring to in your comment, but I believe the main idea behind "sharing everything" is that it facilitates location independence/agnosticity. If all parameters were loaded by nodes themselves, you'd have to update files on different machines in case of applications distributed over multiple machines.

Instead, the parameter server provides easy access to parameters wherever nodes happen to be running.

gvdhoorn gravatar image gvdhoorn  ( 2020-12-04 05:29:06 -0500 )edit