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

#include <LineTracer.h>

LineTracer 連携図
Collaboration graph

公開メンバ関数

 LineTracer (Controller &controller_, int targetBrightness_, bool isLeftCourse_)
 
void run (NormalCourseProperty &settings)
 走行距離や目標スピード、スピード制御PID、回転制御PIDを NormalCourseProperty 構造体を使用し渡す。 [詳解]
 
void setTargetBrightness (int targetBrightness_)
 カラーセンサーの目標値を再設定する [詳解]
 

詳解

LineTracer.h26 行目に定義があります。

構築子と解体子

◆ LineTracer()

LineTracer::LineTracer ( Controller controller_,
int  targetBrightness_,
bool  isLeftCourse_ 
)

コンストラクタ

引数
controller_[Controller]
targetBrightness_[カラーセンサーの目標値]
isLeftCourse_[Leftコースである場合True]

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

11  : controller(controller_),
12  targetBrightness(targetBrightness_),
13  isLeftCourse(isLeftCourse_),
14  distance(),
15  speedControl(controller, 0.0, 0.0, 0.0, 0.0),
16  turnControl(targetBrightness_, 0.0, 0.0, 0.0)
17 {
18 // Logger logger{ "dataw.csv" };
19 // logger << "Distance"<< "speed";
20 }

関数詳解

◆ run()

void LineTracer::run ( NormalCourseProperty settings)

走行距離や目標スピード、スピード制御PID、回転制御PIDを NormalCourseProperty 構造体を使用し渡す。

指定された距離だけ走行する。

引数
settings[各種パラメータが入っている NormalCourseProperty 構造体]

LineTracer.cpp22 行目に定義があります。

23 {
24  // 関数呼び出し時の走行距離を取得・設定
25  int initialDistance
26  = distance.getDistance(controller.getLeftMotorCount(), controller.getRightMotorCount());
27 
28  int currentDistance = initialDistance; // 現在の走行距離
29  int turnValue = 0; // 旋回値
30  int speedValue = 0; // 直進値
31  int leftPWM = 0; // 左モータの出力
32  int rightPWM = 0; // 右モータの出力
33  //Logger logger{ "a" };
34 
35  // 目標距離を走り終えるまでループ
36  while(currentDistance - initialDistance < settings.targetDistance) {
37  // 前進値の計算
38  speedValue = speedControl.calculateSpeed(settings.targetSpeed, settings.speedPid.Kp,
39  settings.speedPid.Ki, settings.speedPid.Kd);
40 
41  // 旋回値の計算
42  turnValue
43  = turnControl.calculateTurn(speedValue, controller.getBrightness(), targetBrightness,
44  settings.turnPid.Kp, settings.turnPid.Ki, settings.turnPid.Kd);
45 
46  // モータ出力の計算
47  if(isLeftCourse) {
48  // Leftコースの場合
49  leftPWM = speedValue - turnValue;
50  rightPWM = speedValue + turnValue;
51  } else {
52  // Rightコースの場合
53  leftPWM = speedValue + turnValue;
54  rightPWM = speedValue - turnValue;
55  }
56  // PWM値の設定
57  controller.setLeftMotorPwm(leftPWM);
58  controller.setRightMotorPwm(rightPWM);
59 
60  // 現在の走行距離の取得
61  currentDistance
62  = distance.getDistance(controller.getLeftMotorCount(), controller.getRightMotorCount());
63  // Logger logger{"dataw.csv","a"};
64  // logger << currentDistance << speedValue;
65  controller.tslpTsk(4);
66  }
67 }
int getRightMotorCount()
Definition: Controller.cpp:188
double calculateSpeed(int targetSpeed, double Kp, double Ki, double Kd)
double calculateTurn(int forward, int currentBrightness, int targetBrightness, double Kp, double Ki, double Kd)
旋回値を計算する関数
Definition: TurnControl.cpp:30
double Kp
Definition: Pid.h:11
double Kd
Definition: Pid.h:13
double Ki
Definition: Pid.h:12
void setLeftMotorPwm(const int pwm)
Definition: Controller.cpp:203
int getLeftMotorCount()
Definition: Controller.cpp:183
int getBrightness()
Definition: Controller.cpp:71
void setRightMotorPwm(const int pwm)
Definition: Controller.cpp:208
static void tslpTsk(int time)
Definition: Controller.cpp:163
double getDistance(int leftAngle, int rightAngle)
左右の平均走行距離を計算して戻り値として返す
Definition: Distance.cpp:15
呼び出し関係図:
被呼び出し関係図:

◆ setTargetBrightness()

void LineTracer::setTargetBrightness ( int  targetBrightness_)

カラーセンサーの目標値を再設定する

セッター

引数
targetBrightness_[カラーセンサーの目標値]

LineTracer.cpp69 行目に定義があります。

70 {
71  targetBrightness = targetBrightness_;
72 }

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