WIP: Resolve "Implement a PID Controller"
Closes #144 (closed)
Current status: a simple PID controller that publishes a control output (on topic control_output) at a regular period (sampletime).
Run with: $ ros2 run pid_controller pid_controller_node_exe
-
add subscribers for setpoint and plantstate -
add an example plant node to drive the controller -
Sample Time – The PID algorithm functions best if it is evaluated at a regular interval. If the algorithm is aware of this interval, we can also simplify some of the internal math. -
Derivative Kick – Not the biggest deal, but easy to get rid of, so we’re going to do just that. -
On-The-Fly Tuning Changes – A good PID algorithm is one where tuning parameters can be changed without jolting the internal workings. -
Reset Windup Mitigation –We’ll go into what Reset Windup is, and implement a solution with side benefits -
On/Off (Auto/Manual) – In most applications, there is a desire to sometimes turn off the PID controller and adjust the output by hand, without the controller interfering -
Initialization – When the controller first turns on, we want a “bumpless transfer.” That is, we don’t want the output to suddenly jerk to some new value -
Controller Direction – This last one isn’t a change in the name of robustness per se. it’s designed to ensure that the user enters tuning parameters with the correct sign. -
Proportional on Measurement – Adding this feature makes it easier to control certain types of processes -
improve the design and usage documentation
Edited by Joshua Whitley