diff options
author | Craig Tiller <ctiller@google.com> | 2016-10-21 08:15:51 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2016-10-21 08:15:51 -0700 |
commit | 6d4340dda88f6f8771dde54e21620dc32dc4e65a (patch) | |
tree | f5f48bc1ae961869aa4fffd2a97f36efed281527 | |
parent | dd2fa6482a945c17eba4c37ff42a8af0e9c4fa26 (diff) |
Add documentation
-rw-r--r-- | src/core/lib/transport/pid_controller.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/core/lib/transport/pid_controller.h b/src/core/lib/transport/pid_controller.h index aa3d0a77f7..ecb9deedaa 100644 --- a/src/core/lib/transport/pid_controller.h +++ b/src/core/lib/transport/pid_controller.h @@ -34,6 +34,13 @@ #ifndef GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H #define GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H +/* \file Simple PID controller. + Implements a proportial-integral-derivative controller. + Used when we want to iteratively control a variable to converge some other + observed value to a 'set-point'. + Gains can be set to adjust sensitivity to current error (p), the integral + of error (i), and the derivative of error (d). */ + typedef struct { double gain_p; double gain_i; @@ -42,11 +49,15 @@ typedef struct { double error_integral; } grpc_pid_controller; +/** Initialize the controller */ void grpc_pid_controller_init(grpc_pid_controller *pid_controller, double gain_p, double gain_i, double gain_d); +/** Reset the controller: useful when things have changed significantly */ void grpc_pid_controller_reset(grpc_pid_controller *pid_controller); +/** Update the controller: given a current error estimate, and the time since + the last update, returns a delta to the control value */ double grpc_pid_controller_update(grpc_pid_controller *pid_controller, double error, double dt); |