etrobocon2019 feat.KatLab  ece30a9a007fff7d3ad48592c0d09a74643377bb
公開メンバ関数 | 全メンバ一覧
Pid クラス

#include <Pid.h>

Pid 連携図
Collaboration graph

公開メンバ関数

 Pid (double target_, double Kp_, double Ki_=0.0, double Kd_=0.0)
 
double control (double value, double delta=0.004)
 
const double setParameter (double target_, double Kp_, double Ki_=0.0, double Kd_=0.0)
 目標値とPIDゲインの設定をする関数 [詳解]
 
const PidGainsetPidGain (double Kp_, double Ki_=0.0, double Kd_=0.0)
 PIDゲインの設定をする関数 [詳解]
 
double limit (double value)
 

詳解

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

構築子と解体子

◆ Pid()

Pid::Pid ( double  target_,
double  Kp_,
double  Ki_ = 0.0,
double  Kd_ = 0.0 
)

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

11  : target(target_), gain(Kp_, Ki_, Kd_), integral(0.0f), preError(0.0f)
12 {
13 }

関数詳解

◆ control()

double Pid::control ( double  value,
double  delta = 0.004 
)

[Pid::control]

引数
value[現在値]
delta[タスク周期]
戻り値
[PID制御後の操作量]

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

29 {
30  // 目標値と現在値との偏差を求める
31  double error = target - value;
32  // 偏差の積分処理
33  integral += error * delta;
34  // 偏差の微分処理
35  double diff = (error - preError) / delta;
36 
37  // 前回偏差の更新
38  preError = error;
39 
40  // P制御の計算(Pゲイン * 偏差)
41  double p = gain.Kp * error;
42  // I制御の計算(Iゲイン * 偏差の積分値)
43  double i = gain.Ki * integral;
44  // D制御の計算(Dゲイン * 偏差の微分値)
45  double d = gain.Kd * diff;
46 
47  return limit(p + i + d);
48 }
double Kp
Definition: Pid.h:11
double Kd
Definition: Pid.h:13
double Ki
Definition: Pid.h:12
double limit(double value)
Definition: Pid.cpp:84
呼び出し関係図:
被呼び出し関係図:

◆ limit()

double Pid::limit ( double  value)

[Pid::limit 操作量を[-100, 100]の間に設定する]

引数
value[操作量]
戻り値
[制限をかけた後の操作量]

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

85 {
86  if(value > 100.0) return 100.0;
87  if(value < -100.0) return -100.0;
88 
89  return value;
90 }
被呼び出し関係図:

◆ setParameter()

const double Pid::setParameter ( double  target_,
double  Kp_,
double  Ki_ = 0.0,
double  Kd_ = 0.0 
)

目標値とPIDゲインの設定をする関数

引数
target_[設定する目標値]
Kp_[Pゲイン]
Ki_[Iゲイン]
Kd_[Dゲイン]
設定した目標値

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

59 {
60  target = target_;
61  setPidGain(Kp_, Ki_, Kd_);
62 
63  return target;
64 }
const PidGain & setPidGain(double Kp_, double Ki_=0.0, double Kd_=0.0)
PIDゲインの設定をする関数
Definition: Pid.cpp:73
呼び出し関係図:
被呼び出し関係図:

◆ setPidGain()

const PidGain & Pid::setPidGain ( double  Kp_,
double  Ki_ = 0.0,
double  Kd_ = 0.0 
)

PIDゲインの設定をする関数

引数
Kp_[Pゲイン]
Ki_[Iゲイン]
Kd_[Dゲイン]
PidGain構造体の参照

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

74 {
75  gain.setPidGain(Kp_, Ki_, Kd_);
76  return gain;
77 }
void setPidGain(double Kp_, double Ki_, double Kd_)
Definition: Pid.cpp:15
呼び出し関係図:
被呼び出し関係図:

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