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
7using namespace vex;
8
23class PID : public Feedback {
24 public:
30 LINEAR,
31 ANGULAR // assumes degrees
32 };
33
43 struct pid_config_t {
44 double p;
45 double i;
46 double d;
47 double deadband;
52 };
53
59
72 void init(double start_pt, double set_pt) override;
73
81 double update(double sensor_val) override;
82
92 double update(double sensor_val, double v_setpt);
93
98 double get_sensor_val() const;
99
105 double get() override;
106
115 void set_limits(double lower, double upper) override;
116
121 bool is_on_target() override;
122
126 void reset();
127
133 double get_error();
134
140 double get_output();
141
146 double get_target() const;
147
152 void set_target(double target);
153
156
157 private:
158 double last_error = 0;
159 double accum_error = 0;
160
161 double last_time = 0;
162 double on_target_last_time = 0;
163
164 double lower_limit = 0;
165 double upper_limit = 0;
166
167 double target = 0;
169 double target_vel = 0;
171 double sensor_val = 0;
173 double out = 0;
176
177 bool is_checking_on_target = false;
178
179 timer pid_timer;
182};
Definition feedback_base.h:10
ERROR_TYPE
Definition pid.h:29
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:154
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:43
double on_target_time
Definition pid.h:48
double d
derivitave coeffecient d * derivative(error)
Definition pid.h:46
double p
proportional coeffecient p * error()
Definition pid.h:44
double i
integral coeffecient i * integral(error)
Definition pid.h:45
double deadband
at what threshold are we close enough to be finished
Definition pid.h:47
ERROR_TYPE error_method
Definition pid.h:50