MRMS
mrm-robot-soccer.h
1 #pragma once
2 #include <mrm-action.h>
3 #include <mrm-pid.h>
4 #include <mrm-robot.h>
5 
8 class RobotSoccer : public Robot {
9 
10  // Actions' declarations
11  ActionBase* actionCatch;
12  ActionBase* actionIdle;
13 
14  float headingToMaintain; // Heading towards opponent's goal.
15  MotorGroupStar* motorGroup; // Class that conveys commands to motors.
16  Mrm_pid* pidXY; // PID controller, regulates motors' speeds for linear motion in the x-y plane.
17  Mrm_pid* pidRotation; // PID controller, regulates rotation around z axis.
18 public:
22  RobotSoccer(char name[] = (char*)"RCJ Soccer");
23 
27  uint16_t back();
28 
32  int16_t ballAngle();
33 
37  bool barrier();
38 
41  void bitmapsSet();
42 
48  uint16_t brightness(uint8_t transistorNumber, uint8_t deviceNumber);
49 
54  bool button(uint8_t number);
55 
58  void catchBall();
59 
63  uint16_t front();
64 
73  void go(float speed, float angleDegrees, float rotation, uint8_t speedLimit);
74 
77  void goAhead();
78 
82  float heading();
83 
86  void idle();
87 
91  uint16_t left();
92 
98  bool line(uint8_t transistorNumber, uint8_t deviceNumber);
99 
102  void loop();
103 
106  void play();
107 
111  float pitch();
112 
116  uint16_t right();
117 
121  float roll();
122 
126  void sign(uint8_t number);
127 };
128 
154  void perform() { ((RobotSoccer*)_robot)->catchBall(); }
155 public:
156  ActionSoccerCatch(RobotSoccer* robot) : ActionBase(robot, "cat", "Soccer catch", 0) {}
157 };
158 
161 class ActionSoccerPlay : public ActionBase {
162  void perform(){ ((RobotSoccer*)_robot)->play(); }
163 public:
164  ActionSoccerPlay(RobotSoccer* robot) : ActionBase(robot, "soc", "Soccer play") {}
165 };
166 
169 class ActionSoccerIdle : public ActionBase {
170  void perform() { ((RobotSoccer*)_robot)->idle(); }
171 public:
172  ActionSoccerIdle(RobotSoccer* robot) : ActionBase(robot, "idl", "Soccer idle", 0) {}
173 };
Definition: mrm-action.h:7
ActionBase(Robot *robot, const char shortcut[4], const char text[20], uint8_t menuLevel=1, BoardId boardsId=ID_ANY)
Definition: mrm-action.cpp:23
Definition: mrm-robot-soccer.h:153
Definition: mrm-robot-soccer.h:169
Definition: mrm-robot-soccer.h:161
Definition: mrm-board.h:435
Definition: mrm-pid.h:13
Definition: mrm-robot.h:42
Definition: mrm-robot-soccer.h:8
void idle()
Definition: mrm-robot-soccer.cpp:124
void play()
Definition: mrm-robot-soccer.cpp:176
bool line(uint8_t transistorNumber, uint8_t deviceNumber)
Definition: mrm-robot-soccer.cpp:150
void bitmapsSet()
Definition: mrm-robot-soccer.cpp:55
int16_t ballAngle()
Definition: mrm-robot-soccer.cpp:42
bool barrier()
Definition: mrm-robot-soccer.cpp:49
void go(float speed, float angleDegrees, float rotation, uint8_t speedLimit)
Definition: mrm-robot-soccer.cpp:103
uint16_t front()
Definition: mrm-robot-soccer.cpp:91
float heading()
Definition: mrm-robot-soccer.cpp:118
uint16_t brightness(uint8_t transistorNumber, uint8_t deviceNumber)
Definition: mrm-robot-soccer.cpp:74
uint16_t left()
Definition: mrm-robot-soccer.cpp:141
float roll()
Definition: mrm-robot-soccer.cpp:202
RobotSoccer(char name[]=(char *)"RCJ Soccer")
Definition: mrm-robot-soccer.cpp:15
void goAhead()
Definition: mrm-robot-soccer.cpp:109
float pitch()
Definition: mrm-robot-soccer.cpp:188
bool button(uint8_t number)
Definition: mrm-robot-soccer.cpp:65
void catchBall()
Definition: mrm-robot-soccer.cpp:80
void loop()
Definition: mrm-robot-soccer.cpp:156
uint16_t right()
Definition: mrm-robot-soccer.cpp:195
uint16_t back()
Definition: mrm-robot-soccer.cpp:35
void sign(uint8_t number)
Definition: mrm-robot-soccer.cpp:209