etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
Pid.h
[詳解]
1 
6 #ifndef PID_H
7 #define PID_H
8 
17 struct PidParameter {
18  double p_gain;
19  double i_gain;
20  double d_gain;
21  double del;
22  constexpr PidParameter(double p_gain_ = 0.0, double i_gain_ = 0.0, double d_gain_ = 0.0,
23  double del_ = 0.004)
24  : p_gain(p_gain_), i_gain(i_gain_), d_gain(d_gain_), del(del_)
25  {
26  }
27  void set(double p_gain_, double i_gain_, double d_gain_)
28  {
29  p_gain = p_gain_;
30  i_gain = i_gain_;
31  d_gain = d_gain_;
32  }
33 };
34 
38 class Pid {
39  public:
41  Pid(double p_gain_, double i_gain_, double d_gain_, double target_);
42  Pid(double p_gain_, double i_gain_, double d_gain_, double diff_, double integral_,
43  double target_, double output_);
44 
50  void setPid(double p_gain_, double i_gain_, double d_gain_, double target_);
51 
52  protected:
55  void calculate(double light_value);
56 
59  double get_output();
60 
64  double limitOutput(double pid_value);
65 
66  private:
67  PidParameter param;
68  double old_diff;
69  double integral;
70  double target;
71  double output;
72 };
73 
74 #endif
PID制御で用いるパラメータをまとめたリテラルクラス
Definition: Pid.h:17
double get_output()
Definition: Pid.cpp:32
void calculate(double light_value)
Definition: Pid.cpp:19
constexpr PidParameter(double p_gain_=0.0, double i_gain_=0.0, double d_gain_=0.0, double del_=0.004)
Definition: Pid.h:22
Pid(double p_gain_, double i_gain_, double d_gain_, double target_)
Definition: Pid.cpp:4
double p_gain
Definition: Pid.h:18
void setPid(double p_gain_, double i_gain_, double d_gain_, double target_)
Definition: Pid.cpp:40
double del
Definition: Pid.h:21
double i_gain
Definition: Pid.h:19
double limitOutput(double pid_value)
Definition: Pid.cpp:46
double d_gain
Definition: Pid.h:20
PID制御の計算を行うクラス
Definition: Pid.h:38
void set(double p_gain_, double i_gain_, double d_gain_)
Definition: Pid.h:27