etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
AIAnswer.cpp
[詳解]
1 
6 #include "AIAnswer.h"
7 
9 {
10  throughNumber(); // 数字の箇所まで進む
11  // moveToDigitalNumber();
12  // solveDigitalNumber();
13  // navigator.spin(90); // 90度左回転
14  // navigator.move(600);
15  // shiftAIAnswerBlock(0, 0);
16  // navigator.moveToColor(1000, target_brightness, Color::RED);
17  // ai_answer_block.block00();
18  ai_answer_block.block01();
19 }
20 
26 {
27  navigator.moveOnLine(150, target_brightness, 30, true); // 15cmライントレースしながら進む
28  navigator.move(585); // 58.5cm前進
29  // navigator.spin(45, true); // 45度右回転
30  navigator.spin(90, false); // 90度左回転
31  navigator.move(500); // 50cm前進
32  navigator.moveToColorCheck(200, Color::BLACK); // 20cm黒を探す旅に出る
33  navigator.move(50);
34  navigator.spin(70, true); // 70度右回転
35  navigator.moveToColorCheck(200, Color::BLACK);
36  navigator.move(30);
37  navigator.spin(60, false); // 60度左回転
38 }
39 
45 {
46  navigator.moveOnLine(100, target_brightness, 30, true); // 20cmライントレースしながら進む
47  navigator.move(585); // 29cm前進
48  // navigator.spin(45, true); // 45度右回転
49  navigator.spin(90, false);
50  navigator.move(600); // 20cm前進
51  // navigator.spin(135); // 135度左回転
52  // navigator.spin(90); // 90度左回転
53 }
54 
60 {
61  // navigator.moveWhileDetecting(530, black); // 37cm進む
62  // navigator.spin(135, true); // 135度右回転
63  // navigator.moveWhileDetecting(160, black); // 16cm進む
64  // navigator.spin(90, true); // 90度右回転
65  // navigator.moveWhileDetecting(460, black); // 26cm進む
66  // navigator.spin(135); // 135度左回転
67  // navigator.move(530); // ここ適当
68  navigator.moveWhileDetecting(530, black);
69  navigator.move(250);
70  navigator.spin(90, true); // 90度右回転
71  navigator.moveOnLine(200, target_brightness, 30, true);
72  navigator.spin(90, false); // 90度左回転
73 }
74 
80 void AIAnswer::shiftAIAnswerBlock(std::int8_t analog_number, std::int8_t digital_number)
81 {
82  // アナログ数字を10の位,デジタル数字を1の位に変換
83  solve_number = (analog_number * 10) + digital_number;
84  // 読み取った数字に応じて分岐
85  switch(solve_number) {
86  case 0:
87  ai_answer_block.block00();
88  break;
89 
90  default:
91  ai_answer_block.block00();
92  break;
93  }
94 }
void moveOnLine(float distance, std::int16_t target, std::int8_t pwm=20, bool is_leftside_line=true)
指定した距離だけライントレースする
Definition: Navigator.cpp:163
void move(float distance, std::int8_t pwm=20)
指定した距離まで走行体を移動させる
Definition: Navigator.cpp:48
void moveWhileDetecting(float distance, std::int16_t target, std::int8_t pwm=10)
指定した距離まで黒色の点を検出しながら走行体を移動させる
Definition: Navigator.cpp:92
void throughNumber()
数字を無視してAIアンサーのブロック並べへ行く
Definition: AIAnswer.cpp:25
void run()
Definition: AIAnswer.cpp:8
void solveDigitalNumber()
デジタル数字を読み取る
Definition: AIAnswer.cpp:59
void moveToDigitalNumber()
デジタル数字の場所まで行く
Definition: AIAnswer.cpp:44
void spin(float angle, bool clockwise=false, std::int8_t pwm=10)
指定した角度まで走行体を回転させる(基本左エッジ)
Definition: Navigator.cpp:25
void block00()
アナログ数字が0,デジタル数字が0
void block01()
アナログ数字が0,デジタル数字が1
AIアンサー
void shiftAIAnswerBlock(std::int8_t analog_number, std::int8_t digital_number)
数字に応じてブロックを動かす
Definition: AIAnswer.cpp:80
void moveToColorCheck(float distance, Color target_color, std::int8_t pwm=20)
指定した距離特定の色を探しながら進む(ライントレースしない)
Definition: Navigator.cpp:191