etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
BlockSolver.h
[詳解]
1 
6 #ifndef BLOCK_SOLVER_H
7 #define BLOCK_SOLVER_H
8 
9 #include "BlockStrategy.h"
10 #include "Controller.h"
11 #include "Distinguisher.h"
12 #include "Lifter.h"
13 #include "Navigator.h"
14 #include "Selector.h"
15 #include "Walker.h"
16 #include <cstdint>
17 #include <vector>
18 
19 class BlockSolver {
20  public:
21  BlockSolver() = default;
22  explicit BlockSolver(Controller& controller_, Walker& walker_, std::int32_t ipc_,
23  const std::int16_t& targetBrightness_)
24  : controller(controller_),
25  walker(walker_),
26  distinguisher(controller_),
27  lifter(controller_),
28  navigator(controller_, walker_),
29  blockStrategy(ipc_),
30  targetBrightness(targetBrightness_),
31  ipc(ipc_)
32  {
33  }
34 
36  void demo();
37 
39  void run();
40 
42  void moveRoute(std::vector<int>& route);
43 
45  void getBlockColor();
46 
48  void passCircle(const Color& circle_color);
49 
51  void moveOnLineToColor(std::int8_t pwm, std::int16_t target, const Color& circle_color,
52  bool isRight);
53 
55  void moveDirection(const std::int8_t& nextPlace, bool remove_block = false);
56 
59 
61  void byeByeBlock();
62 
65 
67  void spinParkingArea();
68 
69  private:
70  Controller controller;
71  Walker walker;
72  Distinguisher distinguisher;
73  Lifter lifter;
74  Navigator navigator;
75  LineTracerWalker lineTracer;
76  Color blockColor = Color::NONE;
77  BlockSideBySide::BlockStrategy blockStrategy;
78  std::int16_t targetBrightness;
79  std::int8_t nowPlace = 8;
80  std::int32_t ipc;
81  Color convertColor(const BlockSideBySide::GameColor& gameColor);
82 };
83 
84 #endif
void byeByeBlock()
バックして180ど回転し、来た方向へ戻ります。ブロックを放置するときに使います。
Definition: BlockSolver.cpp:90
走行体のアームを操作するクラス。
Definition: Lifter.h:20
void spinParkingArea()
Color
Definition: Distinguisher.h:16
void moveDirection(const std::int8_t &nextPlace, bool remove_block=false)
指定した方角へ移動します。
BlockSideBySide::Direction getChangeDirection(std::int8_t angle)
次に向かうべき方角を切り替えます。
void passCircle(const Color &circle_color)
ブロック置き場を乗り越えます。
void run()
ブロック並べを攻略します。
Definition: BlockSolver.cpp:48
void demo()
デモです。アリアに従って移動します。
Definition: BlockSolver.cpp:8
BlockSolver(Controller &controller_, Walker &walker_, std::int32_t ipc_, const std::int16_t &targetBrightness_)
Definition: BlockSolver.h:22
走行体のカラーセンサを用いて、RGB情報より色を推定するクラス。
走行体のカラーセンサを用いて、RGB情報より色を推定するクラス。
Definition: Distinguisher.h:55
void getBlockColor()
ブロックの色を取得し、blockColorに格納します。
void moveOnLineToColor(std::int8_t pwm, std::int16_t target, const Color &circle_color, bool isRight)
指定した色のブロック置き場までライントレースします。
void moveRoute(std::vector< int > &route)
ルートを移動します。
Definition: BlockSolver.cpp:98
Selector::BlockColor convertSelectorColor(const Color &gameColor)
Definition: BlockSolver.cpp:34
走行体のアームを操作するクラス。
BlockSideBySide::Direction nowDirection
今向いてる方角です。
Definition: BlockSolver.h:58
Definition: Walker.h:7
ブロック選択クラス
BlockSolver()=default
走行制御と回転制御を実行するクラス