Common
common packages for kyubic
 
Loading...
Searching...
No Matches
pid.hpp
Go to the documentation of this file.
1
10#ifndef _PID_HPP
11#define _PID_HPP
12
13#include <array>
14#include <chrono>
15
20namespace pid_controller
21{
22
28{
29 double kp;
30 double ki;
31 double kd;
32 double kf;
33 double offset = 0.0;
34};
35
40{
41private:
42 double kp, ki, kd, kf;
43 double offset;
44 double p, i, d;
45
46 double pre_p = 0;
47 double pre_i = 0;
48 double pre_d = 0;
49
50 bool first_run = true;
51
52 std::chrono::high_resolution_clock::time_point pre_time =
53 std::chrono::high_resolution_clock::now();
54
55public:
60 explicit PositionPID(const PositionPIDParameter param);
61
66 void reset();
67
72 std::array<double, 3> get_each_term();
73
78 void set_offset(double offset);
79
88 double update(double current, double target, double last_saturated);
89};
90
96{
97 double kp;
98 double ki;
99 double kd;
100 double kf;
101 double lo;
102 double hi;
103 double offset = 0.0;
104};
105
110{
111private:
112 double kp, ki, kd, kf;
113 double lo, hi;
114 double offset;
115 double p, i, d;
116
117 double pre_error = 0;
118 double pre_p = 0;
119 double pre_d = 0;
120 double pre_u = 0;
121 double dt = 0.0;
122
123 bool first_run = true;
124
125 std::chrono::high_resolution_clock::time_point pre_time =
126 std::chrono::high_resolution_clock::now();
127
128public:
133 explicit VelocityPID(const VelocityPIDParameter param);
134
139 std::array<double, 3> get_each_term();
140
145 double get_dt() const;
146
154 double update(double current, double target);
155
160 void set_offset(double offset);
161
166 void reset();
167};
168
169} // namespace pid_controller
170
171#endif
Position Form PID Controller class.
Definition: pid.hpp:40
double update(double current, double target, double last_saturated)
Update PID cycle.
Definition: pid.cpp:23
std::array< double, 3 > get_each_term()
Get each term value of pid.
Definition: pid.cpp:63
void set_offset(double offset)
Set offset.
Definition: pid.cpp:69
void reset()
Reset pid.
Definition: pid.cpp:71
Velocity Form PID Controller class.
Definition: pid.hpp:110
void set_offset(double offset)
Set offset.
Definition: pid.cpp:126
double get_dt() const
Get dt.
Definition: pid.cpp:136
double update(double current, double target)
Update PID cycle.
Definition: pid.cpp:84
void reset()
Reset previous output.
Definition: pid.cpp:128
std::array< double, 3 > get_each_term()
Get each term value of pid.
Definition: pid.cpp:130
For PID controller.
Hyperparameter for PositionPID.
Definition: pid.hpp:28
double kd
Integral gain.
Definition: pid.hpp:31
double offset
Low-pass filter coefficient.
Definition: pid.hpp:33
double ki
Proportional gain.
Definition: pid.hpp:30
double kp
Definition: pid.hpp:29
double kf
Derivative gain.
Definition: pid.hpp:32
Hyperparameter for VelocityPID.
Definition: pid.hpp:96
double hi
Minimal value.
Definition: pid.hpp:102
double ki
Proportional gain.
Definition: pid.hpp:98
double kf
Derivative gain.
Definition: pid.hpp:100
double offset
Maximun value.
Definition: pid.hpp:103
double kd
Integral gain.
Definition: pid.hpp:99
double kp
Definition: pid.hpp:97
double lo
Low-pass filter coefficient.
Definition: pid.hpp:101