robocup-software
robocup-software copied to clipboard
Global Parameter Server
Description
There are some parameters, like world/robot parameters, that need to be stored globally. Some examples are listed:
- Robot motion parameters (max linear/angular velocity and acceleration)
- Kick and chip speed
- Ball friction
Requirements
- Add a global parameter server node
- Create a parameter provider that pulls parameters from another node
- Use the
AsyncParameterClientto listen to events on the global parameter server and update parameters accordingly
- Use the
- Add a way of creating a callback on a parameter so we can call some function when it updates
Design
We will want a new global_parameters node responsible for storing global parameters. Then, we will want two parameter providers that should be used with the params::kGlobalParamModule tag: one for the actual global parameters node (which takes care of actually registering parameters) and one for the client nodes that internally uses AsyncParameterClient to dispatch callbacks to the correct parameter objects and apply changes.