RIT VEXU Core API
Toggle main menu visibility
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
21
class
PID
:
public
Feedback
{
22
public
:
27
enum
ERROR_TYPE
{
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
;
46
double
on_target_time
;
48
ERROR_TYPE
error_method
;
50
};
51
56
PID
(
pid_config_t
&
config
);
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
152
pid_config_t
&
config
;
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
};
Feedback
Definition
feedback_base.h:10
PID::ERROR_TYPE
ERROR_TYPE
Definition
pid.h:27
PID::set_target
void set_target(double target)
Definition
pid.cpp:114
PID::get_output
double get_output()
Definition
pid.cpp:107
PID::PID
PID(pid_config_t &config)
Definition
pid.cpp:7
PID::update
double update(double sensor_val) override
Definition
pid.cpp:23
PID::config
pid_config_t & config
Definition
pid.h:152
PID::get
double get() override
Definition
pid.cpp:92
PID::set_limits
void set_limits(double lower, double upper) override
Definition
pid.cpp:120
PID::get_sensor_val
double get_sensor_val() const
gets the sensor value that we were last updated with
Definition
pid.cpp:73
PID::is_on_target
bool is_on_target() override
Definition
pid.cpp:129
PID::init
void init(double start_pt, double set_pt) override
Definition
pid.cpp:9
PID::get_error
double get_error()
Definition
pid.cpp:97
PID::get_target
double get_target() const
Definition
pid.cpp:109
PID::reset
void reset()
Definition
pid.cpp:78
PID::pid_config_t
Definition
pid.h:41
PID::pid_config_t::on_target_time
double on_target_time
Definition
pid.h:46
PID::pid_config_t::d
double d
derivitave coeffecient d * derivative(error)
Definition
pid.h:44
PID::pid_config_t::p
double p
proportional coeffecient p * error()
Definition
pid.h:42
PID::pid_config_t::i
double i
integral coeffecient i * integral(error)
Definition
pid.h:43
PID::pid_config_t::deadband
double deadband
at what threshold are we close enough to be finished
Definition
pid.h:45
PID::pid_config_t::error_method
ERROR_TYPE error_method
Definition
pid.h:48
include
core
utils
controls
pid.h
Generated by
1.17.0