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

#include <SpeedControl.h>

SpeedControl 連携図
Collaboration graph

公開メンバ関数

 SpeedControl (Controller &controller_, int targetSpeed, double Kp, double Ki, double Kd)
 
double calculateSpeed (int targetSpeed, double Kp, double Ki, double Kd)
 

詳解

SpeedControl.h13 行目に定義があります。

構築子と解体子

◆ SpeedControl()

SpeedControl::SpeedControl ( Controller controller_,
int  targetSpeed,
double  Kp,
double  Ki,
double  Kd 
)

コンストラクタ

引数
controller_[Controller]
targetSpeed[目標速度]
Kp[Pゲイン]
Ki[Iゲイン]
Kd[Dゲイン]

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

11  : controller(controller_), dist(), pid(targetSpeed, Kp, Ki, Kd)
12 {
13  // 左右のモータの角位置を取得
14  int leftAngle = controller.getLeftMotorCount();
15  int rightAngle = controller.getRightMotorCount();
16 
17  // 走行距離の取得[mm]
18  prevDistance = dist.getDistance(leftAngle, rightAngle);
19 }
int getRightMotorCount()
Definition: Controller.cpp:188
int getLeftMotorCount()
Definition: Controller.cpp:183
double getDistance(int leftAngle, int rightAngle)
左右の平均走行距離を計算して戻り値として返す
Definition: Distance.cpp:15
呼び出し関係図:

関数詳解

◆ calculateSpeed()

double SpeedControl::calculateSpeed ( int  targetSpeed,
double  Kp,
double  Ki,
double  Kd 
)

[SpeedControl::calculateSpeed]

引数
targetSpeed[目標の速度] [mm/s]
Kp[Pゲイン]
Ki[Iゲイン]
Kd[Dゲイン]
戻り値
[PWM値]

SpeedControl.cpp21 行目に定義があります。

22 {
23  // pidの値を更新(パラメータに変更がなくても更新する)
24  pid.setParameter(targetSpeed, Kp, Ki, Kd);
25 
26  // 4ms後の左右のモータの角位置を取得
27  int leftAngle = controller.getLeftMotorCount();
28  int rightAngle = controller.getRightMotorCount();
29 
30  // 4ms後の走行距離の取得[mm]
31  double nextDistance = dist.getDistance(leftAngle, rightAngle);
32 
33  //現在の速度を求める
34  double currentSpeed = nextDistance - prevDistance;
35 
36  // prevDistanceの更新
37  prevDistance = dist.getDistance(leftAngle, rightAngle);
38 
39  // pid値を求める
40  double pidValue = pid.control(currentSpeed);
41 
42  // PWM値 = pid値
43  double pwmValue = pidValue;
44 
45  // PWM値を返す
46  return pwmValue;
47 }
int getRightMotorCount()
Definition: Controller.cpp:188
const double setParameter(double target_, double Kp_, double Ki_=0.0, double Kd_=0.0)
目標値とPIDゲインの設定をする関数
Definition: Pid.cpp:58
int getLeftMotorCount()
Definition: Controller.cpp:183
double control(double value, double delta=0.004)
Definition: Pid.cpp:28
double getDistance(int leftAngle, int rightAngle)
左右の平均走行距離を計算して戻り値として返す
Definition: Distance.cpp:15
呼び出し関係図:
被呼び出し関係図:

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