MOS
include
mos
sim
pid.hpp
1
#pragma once
2
namespace
mos::sim
{
3
4
template
<
class
T>
6
class
Pid
{
7
public
:
8
Pid
(
const
T &error = T(0),
const
float
Kp = 1.0f,
const
float
Ki = 0.0f,
const
float
Kd = 0.1f)
9
: Kp(Kp), Ki(Ki), Kd(Kd), prev_error(error), P(error), I(error), D(error) {
10
}
11
auto
get
(
const
T error,
float
dt) -> T {
12
P = error;
13
I += P * dt;
14
D = (P - prev_error) / dt;
15
if
(dt == 0){
16
D = T(0);
17
}
18
19
prev_error = error;
20
return
P * Kp + I * Ki + D * Kd;
21
}
22
float
Kp, Ki, Kd;
23
private
:
24
T P, I, D;
25
T prev_error;
26
};
27
}
28
29
mos::sim
Definition:
pid.hpp:2
mos::sim::Pid
Pid controller.
Definition:
pid.hpp:6
Generated on Sat Jan 22 2022 12:45:29 for MOS by
1.8.13