RIT VEXU Core API
Loading...
Searching...
No Matches
core/utils/controls/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
139 double get_target() const;
140
145 void set_target(double target);
146
149
150 private:
151 double last_error = 0;
152 double accum_error = 0;
153
154 double last_time = 0;
155 double on_target_last_time = 0;
156
157 double lower_limit = 0;
158 double upper_limit = 0;
159
160 double target = 0;
162 double start_pt = 0;
163 double target_vel = 0;
165 double sensor_val = 0;
167 double out = 0;
170
171 bool is_checking_on_target = false;
172
173 timer pid_timer;
176};
Definition feedback_base.h:10
ERROR_TYPE
Definition core/utils/controls/pid.h:29
void set_target(double target)
Definition pid.cpp:111
PID(pid_config_t &config)
Definition pid.cpp:7
double update(double sensor_val) override
Definition pid.cpp:24
pid_config_t & config
Definition core/utils/controls/pid.h:147
double get() override
Definition pid.cpp:94
void set_limits(double lower, double upper) override
Definition pid.cpp:117
double get_sensor_val() const
gets the sensor value that we were last updated with
Definition pid.cpp:75
bool is_on_target() override
Definition pid.cpp:126
void init(double start_pt, double set_pt) override
Definition pid.cpp:9
double get_error()
Definition pid.cpp:99
double get_target() const
Definition pid.cpp:106
void reset()
Definition pid.cpp:80
Definition core/utils/controls/pid.h:43
double on_target_time
Definition core/utils/controls/pid.h:48
double d
derivitave coeffecient d * derivative(error)
Definition core/utils/controls/pid.h:46
double p
proportional coeffecient p * error()
Definition core/utils/controls/pid.h:44
double i
integral coeffecient i * integral(error)
Definition core/utils/controls/pid.h:45
double deadband
at what threshold are we close enough to be finished
Definition core/utils/controls/pid.h:47
ERROR_TYPE error_method
Definition core/utils/controls/pid.h:50