scripts/base_controller/lib/pid/pid.cpp
Go to the documentation of this file.
1 #include "Arduino.h"
2 #include "pid.h"
3 
4 diffbot::PID::PID(float min_val, float max_val, float kp, float ki, float kd):
5  min_val_(min_val),
6  max_val_(max_val),
7  kp_(kp),
8  ki_(ki),
9  kd_(kd)
10 {
11 }
12 
13 double diffbot::PID::compute(float setpoint, float measured_value)
14 {
15  double error;
16  double pid;
17 
18  //setpoint is constrained between min and max to prevent pid from having too much error
19  error = setpoint - measured_value;
20  proportional_ = error;
21  integral_ += error;
22  derivative_ = error - prev_error_;
23 
24  if(setpoint == 0 && error == 0)
25  {
26  integral_ = 0;
27  }
28 
29  pid = (kp_ * proportional_) + (ki_ * integral_) + (kd_ * derivative_);
30  prev_error_ = error;
31 
32  return constrain(pid, min_val_, max_val_);
33 }
34 
35 void diffbot::PID::updateConstants(float kp, float ki, float kd)
36 {
37  kp_ = kp;
38  ki_ = ki;
39  kd_ = kd;
40 }
pid.h
diffbot::PID::updateConstants
void updateConstants(float kp, float ki, float kd)
Definition: scripts/base_controller/lib/pid/pid.cpp:35
diffbot::PID::compute
double compute(float setpoint, float measured_value)
Definition: scripts/base_controller/lib/pid/pid.cpp:13
diffbot::PID::PID
PID(float min_val, float max_val, float kp, float ki, float kd)
Definition: scripts/base_controller/lib/pid/pid.cpp:4


diffbot_base
Author(s):
autogenerated on Thu Sep 7 2023 02:35:23