-
Notifications
You must be signed in to change notification settings - Fork 0
/
controller.h
58 lines (47 loc) · 1.3 KB
/
controller.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef CONTROLLER_H
#define CONTROLLER_H
#define UPPERLIMIT 1000
#define LOWERLIMIT -1000
#define BALL_RAD 12
class Controller
{
public:
Controller();
Controller(int, int, double);
int positionControl(int, int);
int positionControl(int);
void setDesiredPos_px(int);
void setDesiredPos_mm(double);
void setCurrentPos_px(int);
void SetCurrentPos_mm(double);
void SetGainP(double);
void SetOutputMax(int);
void SetOutputMin(int);
double GetGainP();
int GetOutputMax();
int GetOutputMin();
int GetDesiredPos_px();
double GetDesiredPos_mm();
int GetCurrentPos_px();
double GetCurrentPos_mm();
int GetCurrentError();
bool atDesiredPosition();
void setMinimumPositionError(double);
double getMinumumPositionError();
protected:
int error;
int desPos_px;
double desPos_mm;
int curPos_px;
double curPos_mm;
double minimumPositionError;
void computeError();
double proportionalCorrection();
int normalizeData(double);
double clampSaturation(double);
private:
double gainP;
int outputMin_deg;
int outputMax_deg;
};
#endif // CONTROLLER_H