aboutsummaryrefslogtreecommitdiff
path: root/src/modules/systemlib/pid/pid.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/systemlib/pid/pid.c')
-rw-r--r--src/modules/systemlib/pid/pid.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/modules/systemlib/pid/pid.c b/src/modules/systemlib/pid/pid.c
index 4996a8f66..9308100b0 100644
--- a/src/modules/systemlib/pid/pid.c
+++ b/src/modules/systemlib/pid/pid.c
@@ -124,7 +124,7 @@ __EXPORT int pid_set_parameters(PID_t *pid, float kp, float ki, float kd, float
* @param dt
* @return
*/
-__EXPORT float pid_calculate(PID_t *pid, float sp, float val, float val_dot, float dt)
+__EXPORT float pid_calculate(PID_t *pid, float sp, float val, float val_dot, float dt, float *ctrl_p, float *ctrl_i, float *ctrl_d)
{
/* error = setpoint - actual_position
integral = integral + (error*dt)
@@ -196,6 +196,10 @@ __EXPORT float pid_calculate(PID_t *pid, float sp, float val, float val_dot, flo
pid->last_output = output;
}
+ *ctrl_p = (error * pid->kp);
+ *ctrl_i = (i * pid->ki);
+ *ctrl_d = (d * pid->kd);
+
return pid->last_output;
}