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

#include <TurnControl.h>

TurnControl 連携図
Collaboration graph

公開メンバ関数

 TurnControl (int targetBrightness, double Kp, double Ki, double Kd)
 
double calculateTurn (int forward, int currentBrightness, int targetBrightness, double Kp, double Ki, double Kd)
 旋回値を計算する関数 [詳解]
 

詳解

TurnControl.h12 行目に定義があります。

構築子と解体子

◆ TurnControl()

TurnControl::TurnControl ( int  targetBrightness,
double  Kp,
double  Ki,
double  Kd 
)

コンストラクタ

引数
tragetBrightness[目標の光センサー値]
Kp[Pゲイン]
Ki[Iゲイン]
Kd[Dゲイン]

TurnControl.cpp15 行目に定義があります。

16  : filter(), pid(static_cast<double>(targetBrightness), Kp, Ki, Kd)
17 {
18 }

関数詳解

◆ calculateTurn()

double TurnControl::calculateTurn ( int  forward,
int  currentBrightness,
int  targetBrightness,
double  Kp,
double  Ki,
double  Kd 
)

旋回値を計算する関数

[TurnControl::calculateTurn]

引数
currentBrightness[現在の光センサー値]
tragetBrightness[目標の光センサー値]
Kp[Pゲイン]
Ki[Iゲイン]
Kd[Dゲイン]
戻り値
[旋回値]

TurnControl.cpp30 行目に定義があります。

32 {
33  double filteredBrightness = filter.lowPassFilter(currentBrightness);
34 
35  // pidの値を更新(パラメータに変更がなくても更新する)
36  pid.setParameter(static_cast<double>(targetBrightness), Kp, Ki, Kd);
37 
38  auto pidValue = pid.control(filteredBrightness);
39 
40  double forwardPercent = forward / 100.0;
41  return pidValue * forwardPercent;
42 }
const double setParameter(double target_, double Kp_, double Ki_=0.0, double Kd_=0.0)
目標値とPIDゲインの設定をする関数
Definition: Pid.cpp:58
double control(double value, double delta=0.004)
Definition: Pid.cpp:28
double lowPassFilter(T value, double rate=0.9)
ローパスフィルター(現在値と前回値を参考にして値を決定する)
Definition: Filter.cpp:28
呼び出し関係図:
被呼び出し関係図:

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