Design choices for Parameter Server [closed]
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.
Not relevant with ROS2 in the horizon, and it's just poor architecture to have this issue.
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.