etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
Pid クラス

PID制御の計算を行うクラス [詳解]

#include "Pid.h"

Pid の継承関係図
Inheritance graph
Pid 連携図
Collaboration graph

公開メンバ関数

 Pid (double p_gain_, double i_gain_, double d_gain_, double target_)
 
 Pid (double p_gain_, double i_gain_, double d_gain_, double diff_, double integral_, double target_, double output_)
 
void setPid (double p_gain_, double i_gain_, double d_gain_, double target_)
 

限定公開メンバ関数

void calculate (double light_value)
 
double get_output ()
 
double limitOutput (double pid_value)
 

詳解

PID制御の計算を行うクラス

Pid.h38 行目に定義があります。

構築子と解体子

Pid::Pid ( double  p_gain_,
double  i_gain_,
double  d_gain_,
double  target_ 
)

コンストラクタ

Pid.cpp4 行目に定義があります。

5  : Pid(p_gain_, i_gain_, d_gain_, 0.0, 0.0, target_, 0.0)
6 {
7 }
Pid(double p_gain_, double i_gain_, double d_gain_, double target_)
Definition: Pid.cpp:4
Pid::Pid ( double  p_gain_,
double  i_gain_,
double  d_gain_,
double  diff_,
double  integral_,
double  target_,
double  output_ 
)

Pid.cpp9 行目に定義があります。

11  : param(p_gain_, i_gain_, d_gain_, 0.004),
12  old_diff(diff_),
13  integral(integral_),
14  target(target_),
15  output(output_)
16 {
17 }

関数詳解

void Pid::calculate ( double  light_value)
protected

PID制御の計算をする

引数
light_value現在の値

Pid.cpp19 行目に定義があります。

20 {
21  double p, i, d;
22  double diff = current_value - target;
23 
24  integral += (old_diff + diff) / 2 * param.del;
25  p = param.p_gain * diff;
26  i = param.i_gain * integral;
27  d = param.d_gain * (diff - old_diff) / param.del;
28  old_diff = diff;
29  output = p + i + d;
30 }
double p_gain
Definition: Pid.h:18
double del
Definition: Pid.h:21
double i_gain
Definition: Pid.h:19
double d_gain
Definition: Pid.h:20

被呼び出し関係図:

double Pid::get_output ( )
protected

PID計算値を取得する

戻り値
計算値

Pid.cpp32 行目に定義があります。

33 {
34  return output;
35 }

被呼び出し関係図:

double Pid::limitOutput ( double  pid_value)
protected

PID計算値を制限する

引数
PID計算値
戻り値
PID計算値

Pid.cpp46 行目に定義があります。

47 {
48  if(pid_value > 100.0) return 100.0;
49  if(pid_value < -100.0) return -100.0;
50  return pid_value;
51 }

被呼び出し関係図:

void Pid::setPid ( double  p_gain_,
double  i_gain_,
double  d_gain_,
double  target_ 
)

Kp, Ki, Kd, 目標値を設定する

引数
_p_gainKp
_i_gainKi
_d_gainKd
_target目標値

Pid.cpp40 行目に定義があります。

41 {
42  param.set(p_gain_, i_gain_, d_gain_);
43  target = target_;
44 }
void set(double p_gain_, double i_gain_, double d_gain_)
Definition: Pid.h:27

呼び出し関係図:

被呼び出し関係図:


このクラス詳解は次のファイルから抽出されました: