etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
公開メンバ関数 | 全メンバ一覧
AIAnswer クラス

#include <AIAnswer.h>

AIAnswer 連携図
Collaboration graph

公開メンバ関数

 AIAnswer (Controller &controller, Walker &walker, std::int16_t white_, std::int16_t black_, std::int16_t gray_, std::int16_t brightness)
 
void run ()
 
void moveToDigitalNumber ()
 デジタル数字の場所まで行く [詳解]
 
void solveDigitalNumber ()
 デジタル数字を読み取る [詳解]
 
void shiftAIAnswerBlock (std::int8_t analog_number, std::int8_t digital_number)
 数字に応じてブロックを動かす [詳解]
 
void throughNumber ()
 数字を無視してAIアンサーのブロック並べへ行く [詳解]
 

詳解

AIAnswer.h14 行目に定義があります。

構築子と解体子

AIAnswer::AIAnswer ( Controller controller,
Walker walker,
std::int16_t  white_,
std::int16_t  black_,
std::int16_t  gray_,
std::int16_t  brightness 
)
inline

AIAnswer.h27 行目に定義があります。

29  : navigator(controller, walker),
30  ai_answer_block(controller, walker, brightness),
31  white(white_),
32  black(black_),
33  gray(gray_),
34  target_brightness(brightness),
35  solve_number(0)
36  {
37  }

関数詳解

void AIAnswer::moveToDigitalNumber ( )

デジタル数字の場所まで行く

[AIAnswer::moveToDigitalNumber]

AIAnswer.cpp44 行目に定義があります。

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 }
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 spin(float angle, bool clockwise=false, std::int8_t pwm=10)
指定した角度まで走行体を回転させる(基本左エッジ)
Definition: Navigator.cpp:25

呼び出し関係図:

void AIAnswer::run ( )

AIAnswer.cpp8 行目に定義があります。

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 }
void throughNumber()
数字を無視してAIアンサーのブロック並べへ行く
Definition: AIAnswer.cpp:25
void block01()
アナログ数字が0,デジタル数字が1

呼び出し関係図:

void AIAnswer::shiftAIAnswerBlock ( std::int8_t  analog_number,
std::int8_t  digital_number 
)

数字に応じてブロックを動かす

読み取った数字に対してブロックを動かす

[AIAnswer::shiftAIAnswerBlock]

AIAnswer.cpp80 行目に定義があります。

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 block00()
アナログ数字が0,デジタル数字が0

呼び出し関係図:

void AIAnswer::solveDigitalNumber ( )

デジタル数字を読み取る

数字を読み取る

[AIAnswer::solveDigitalNumber]

AIAnswer.cpp59 行目に定義があります。

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 }
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 spin(float angle, bool clockwise=false, std::int8_t pwm=10)
指定した角度まで走行体を回転させる(基本左エッジ)
Definition: Navigator.cpp:25

呼び出し関係図:

void AIAnswer::throughNumber ( )

数字を無視してAIアンサーのブロック並べへ行く

数字を無視する

[AIAnswer::throughNumber]

AIAnswer.cpp25 行目に定義があります。

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 }
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 spin(float angle, bool clockwise=false, std::int8_t pwm=10)
指定した角度まで走行体を回転させる(基本左エッジ)
Definition: Navigator.cpp:25
void moveToColorCheck(float distance, Color target_color, std::int8_t pwm=20)
指定した距離特定の色を探しながら進む(ライントレースしない)
Definition: Navigator.cpp:191

呼び出し関係図:

被呼び出し関係図:


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