etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
BasicWalker.cpp
[詳解]
1 #include "BasicWalker.h"
2 
3 void BasicWalker::setPidWithoutTarget(double valueP, double valueI, double valueD)
4 {
5  p_value = valueP;
6  i_value = valueI;
7  d_value = valueD;
8 }
9 
11 {
12  walker.reset();
13 }
14 
15 void BasicWalker::spin(bool rotationalDirection, int32_t angle, int32_t turn)
16 {
17  int8_t reverseValue = rotationalDirection == SPIN_RIGHT ? -1 : 1;
18 
19  reset();
20  while((walker.get_count_R() * reverseValue)
21  < (angle / 0.645)) { // 数値は角度から回転数への変換に必要な値
22  walker.run(0, (turn * reverseValue));
23  controller.tslpTsk(4);
24  }
25  walker.run(0, 0);
26 }
27 
28 void BasicWalker::spinToCheckBlackLine(bool rotationalDirection, int32_t angle)
29 {
30  int8_t reverseValue = rotationalDirection == SPIN_RIGHT ? -1 : 1;
31 
32  reset();
33  while((walker.get_count_R() * reverseValue)
34  < (angle / 0.645)) { // 数値は角度から回転数への変換に必要な値
35  walker.run(0, (18 * reverseValue));
36 
37  int16_t now_brightness = controller.getBrightness();
38  if(now_brightness < 120) { //白が黒に近ずいたら
39  walker.run(0, 0);
40  controller.speakerPlayTone(controller.noteFs4, 100); //音で確認.
41  break;
42  }
43  controller.tslpTsk(4);
44  }
45  walker.run(0, 0);
46 }
47 
48 void BasicWalker::goStraightToCheckBlackLine(int32_t target_forward, int32_t distance,
49  int16_t target_brightness)
50 {
51  speedControl.setPid(p_value, i_value, d_value, target_forward);
52  while(((walker.get_count_L() + walker.get_count_R()) / 2) < distance) {
53  forward = speedControl.calculateSpeedForPid(walker.get_count_L(), walker.get_count_R());
54  walker.run(forward, 0);
55  controller.tslpTsk(4);
56  //リアルタイムで色を値を取得
57  int16_t now_brightness = controller.getBrightness();
58 
59  if(now_brightness < 13) {
60  walker.run(0, 0);
61  controller.speakerPlayTone(controller.noteFs4, 100); //音で確認.
62  break;
63  }
64  }
65  walker.run(0, 0);
66 }
67 
68 void BasicWalker::goStraight(int32_t target_forward, int32_t distance)
69 {
70  speedControl.setPid(p_value, i_value, d_value, target_forward);
71  while(((walker.get_count_L() + walker.get_count_R()) / 2) < distance) {
72  forward = speedControl.calculateSpeedForPid(walker.get_count_L(), walker.get_count_R());
73  walker.run(forward, 0);
74  controller.tslpTsk(4);
75  //リアルタイムで色を値を取得
76  // int16_t now_brightness = controller.getBrightness();
77  // if(now_brightness<20){
78  // walker.run(0,0);
79  // ev3_speaker_play_tone( NOTE_FS4, 100 ); //音で確認.
80  // break;
81  // }
82  }
83  walker.run(0, 0);
84 }
85 void BasicWalker::backStraight(int32_t target_forward, int32_t distance)
86 {
87  speedControl.setPid(p_value, i_value, d_value, -target_forward);
88  while(((walker.get_count_L() + walker.get_count_R()) / 2) * -1 < distance) {
89  forward = speedControl.calculateSpeedForPid(walker.get_count_L(), walker.get_count_R());
90  walker.run(forward, 0);
91  controller.tslpTsk(4);
92  }
93  walker.run(0, 0);
94 }
void speakerPlayTone(uint16_t frequency, int32_t duration)
Definition: Controller.cpp:9
void tslpTsk(int16_t time)
Definition: Controller.cpp:74
void reset(void)
Definition: BasicWalker.cpp:10
void backStraight(int32_t, int32_t)
Definition: BasicWalker.cpp:85
std::int32_t calculateSpeedForPid(std::int32_t curAngleL, std::int32_t curAngleR)
void setPid(double p_gain_, double i_gain_, double d_gain_, double target_)
Definition: Pid.cpp:40
void spinToCheckBlackLine(bool, int32_t)
Definition: BasicWalker.cpp:28
void setPidWithoutTarget(double, double, double)
Definition: BasicWalker.cpp:3
void run(std::int8_t pwm, std::int8_t turn)
Definition: Walker.cpp:30
const bool SPIN_RIGHT
Definition: BasicWalker.h:24
int16_t getBrightness()
Definition: Controller.cpp:59
uint16_t noteFs4
Definition: Controller.h:41
void goStraightToCheckBlackLine(int32_t, int32_t, int16_t)
Definition: BasicWalker.cpp:48
void spin(bool, int32_t, int32_t turn=18)
Definition: BasicWalker.cpp:15
void reset()
Definition: Walker.cpp:15
std::int32_t get_count_R()
Definition: Walker.cpp:54
void goStraight(int32_t, int32_t)
Definition: BasicWalker.cpp:68
std::int32_t get_count_L()
Definition: Walker.cpp:49