SkyPulse UAV V0.1
Loading...
Searching...
No Matches
Control.h
Go to the documentation of this file.
1#ifndef __CONTROL_H__
2#define __CONTROL_H__
3
4#include <functional>
5
6#include "CppThread.hpp"
7
8#define defaultSampleFreq 100.0f
9#define ROLL 0
10#define PITCH 1
11#define YAW 2
12
13#define ITERM_MAX 1500.0f
14
15// Define maximum roll and pitch angles (in degrees)
16const float MAX_ROLL_ANGLE = 45.0f;
17const float MAX_PITCH_ANGLE = 45.0f;
18
19using namespace std;
20
21class ControlThread : public CppThread {
22
23protected:
24
25 void run() override;
26
27};
28
29class Control {
30
31public:
32
33 using CallbackFunction = function<void(int[4])>;
34
35 Control();
36
37 Control(float sampleFreq);
38
39 void getControlOuput(int motorDutyCycle[4]);
40
41 void readRef(float angle[3], float alt);
42
43 void readCur(float rate[3], float angle[3], float alt);
44
45 // If mode is true, manned mode is enabled. Else, automatic mode is enabled.
46 void setMode(bool mode);
47
48 void setCallback ();
49
50protected:
51
52 void doublePIDControl();
53
54 void altControl();
55
56 // void pidControlRate();
57
58 // void cascadedPID();
59
60
61private:
62
63 CallbackFunction callback_;
64
65 bool mode;
66
67 float desireAlt;
68
69 float altVelocity;
70
71 float errorAlt;
72
73 float currentAlt;
74
75 float currentRate[3];
76
77 float currentAngle[3];
78
79 float prevRateErr[3];
80
81 float prevAngleErr[3];
82
83 float prevRateIterm[3];
84
85 float prevAngleIterm[3];
86
87 //float desireRate[3];
88
89 float desireAngle[3];
90
91 float errorRate[3];
92
93 float errorAngle[3];
94
95 float outputAngle[3];
96
97 float outputRate[3];
98
99 float inputThrottle;
100
101 float PIDFreq;
102
103 int motorOutput[4];
104
105 float Kp_out[3];
106
107 float Kp_in[3];
108
109 float Ki_out[3];
110
111 float Ki_in[3];
112
113 float Kd[3];
114};
115
116
117
118#endif
const float MAX_ROLL_ANGLE
Definition Control.h:16
const float MAX_PITCH_ANGLE
Definition Control.h:17
#define sampleFreq
Definition MahonyFilter.h:10
Definition Control.h:21
void run() override
Definition ControlThread.cpp:3
Definition Control.h:29
void setCallback()
void setMode(bool mode)
Definition Control.cpp:42
void readCur(float rate[3], float angle[3], float alt)
Definition Control.cpp:48
void altControl()
Definition Control.cpp:80
void readRef(float angle[3], float alt)
Definition Control.cpp:63
function< void(int[4])> CallbackFunction
Definition Control.h:33
void doublePIDControl()
Definition Control.cpp:91
Control()
Definition Control.cpp:6
void getControlOuput(int motorDutyCycle[4])
Definition Control.cpp:128
Definition CppThread.hpp:20