aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-10-21 08:15:51 -0700
committerGravatar Craig Tiller <ctiller@google.com>2016-10-21 08:15:51 -0700
commit6d4340dda88f6f8771dde54e21620dc32dc4e65a (patch)
treef5f48bc1ae961869aa4fffd2a97f36efed281527
parentdd2fa6482a945c17eba4c37ff42a8af0e9c4fa26 (diff)
Add documentation
-rw-r--r--src/core/lib/transport/pid_controller.h11
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);