etrobocon2019 feat.KatLab  ece30a9a007fff7d3ad48592c0d09a74643377bb
NormalCourse.cpp
[詳解]
1 
6 #include "NormalCourse.h"
7 
13 NormalCourse::NormalCourse(Controller& controller_, bool isLeftCourse_, int targetBrightness_)
14  : controller(controller_), isLeftCourse(isLeftCourse_), targetBrightness(targetBrightness_)
15 {
16 }
17 
22 void NormalCourse::setIsLeftCourse(bool isLeftCourse_)
23 {
24  isLeftCourse = isLeftCourse_;
25 }
26 
32 {
33  // 配列の個数
34  constexpr int arraySize = 7;
35  int baseSpeed = 700;
36  std::array<NormalCourseProperty, arraySize> normalCourseProperty
41  = { {
42  { 600, baseSpeed, { 0.1, 0.0, 0.1 }, { 0.9, 0.01, 0.06 } }, // 第1区間
43  { 800, baseSpeed - 50, { 1.5, 0.0, 0.1 }, { 1.1, 0.01, 0.07 } }, // 第2区間
44  { 1200, baseSpeed - 180, { 0.3, 0.0, 0.1 }, { 1.1, 0.01, 0.05 } }, // 第3区間
45  { 2300, baseSpeed, { 0.1, 0.0, 0.1 }, { 1.2, 0.01, 0.05 } }, // 第4区間
46  { 1000, baseSpeed + 100, { 0.1, 0.0, 0.1 }, { 0.9, 0.01, 0.04 } }, // 第5区間
47  { 1300, baseSpeed + 100, { 2.0, 0.0, 0.1 }, { 1.0, 0.01, 0.05 } }, // 第6区間
48  { 2500, baseSpeed + 50, { 0.1, 0.0, 0.1 }, { 1.1, 0.01, 0.05 } }, // 第7区間
49  } };
50  LineTracer lineTracer(controller, targetBrightness, isLeftCourse);
51  for(auto& ncp : normalCourseProperty) {
52  lineTracer.run(ncp);
53  // 1区間終わるごとに音を奏でる.
54  controller.speakerPlayToneFS6(100);
55  }
56 }
57 
62 {
63  return isLeftCourse;
64 }
65 
70 {
71  return targetBrightness;
72 }
void runNormalCourse()
void run(NormalCourseProperty &settings)
走行距離や目標スピード、スピード制御PID、回転制御PIDを NormalCourseProperty 構造体を使用し渡す。 ...
Definition: LineTracer.cpp:22
static void speakerPlayToneFS6(int duration)
Definition: Controller.cpp:21
NormalCourseを走る
bool getIsLeftCourse() const
NormalCourse(Controller &controller_, bool isLeftCourse_, int targetBrightness_)
int getTargetBrightness() const
void setIsLeftCourse(bool isLeftCourse_)