RIT VEXU Core API
Loading...
Searching...
No Matches
pid.h
1#pragma once
2
3#include "core/utils/controls/feedback_base.h"
4#include "vex.h"
5#include <cmath>
6
21class PID : public Feedback {
22 public:
28 LINEAR,
29 ANGULAR // assumes degrees
30 };
31
41 struct pid_config_t {
42 double p;
43 double i;
44 double d;
45 double deadband;
50 };
51
57
70 void init(double start_pt, double set_pt) override;
71
79 double update(double sensor_val) override;
80
90 double update(double sensor_val, double v_setpt);
91
96 double get_sensor_val() const;
97
103 double get() override;
104
113 void set_limits(double lower, double upper) override;
114
119 bool is_on_target() override;
120
124 void reset();
125
131 double get_error();
132
138 double get_output();
139
144 double get_target() const;
145
150 void set_target(double target);
151
154
155 private:
156 double last_error = 0;
157 double accum_error = 0;
158
159 double last_time = 0;
160 double on_target_last_time = 0;
161
162 double lower_limit = 0;
163 double upper_limit = 0;
164
165 double target = 0;
167 double target_vel = 0;
169 double sensor_val = 0;
171 double out = 0;
174
175 bool is_checking_on_target = false;
176
177 vex::timer pid_timer;
180};
Definition feedback_base.h:10
ERROR_TYPE
Definition pid.h:27
void set_target(double target)
Definition pid.cpp:114
double get_output()
Definition pid.cpp:107
PID(pid_config_t &config)
Definition pid.cpp:7
double update(double sensor_val) override
Definition pid.cpp:23
pid_config_t & config
Definition pid.h:152
double get() override
Definition pid.cpp:92
void set_limits(double lower, double upper) override
Definition pid.cpp:120
double get_sensor_val() const
gets the sensor value that we were last updated with
Definition pid.cpp:73
bool is_on_target() override
Definition pid.cpp:129
void init(double start_pt, double set_pt) override
Definition pid.cpp:9
double get_error()
Definition pid.cpp:97
double get_target() const
Definition pid.cpp:109
void reset()
Definition pid.cpp:78
Definition pid.h:41
double on_target_time
Definition pid.h:46
double d
derivitave coeffecient d * derivative(error)
Definition pid.h:44
double p
proportional coeffecient p * error()
Definition pid.h:42
double i
integral coeffecient i * integral(error)
Definition pid.h:43
double deadband
at what threshold are we close enough to be finished
Definition pid.h:45
ERROR_TYPE error_method
Definition pid.h:48