TeamSurface / Mbed 2 deprecated ROME_P3

Dependencies:   mbed

Committer:
kueenste
Date:
Fri Mar 23 13:07:58 2018 +0000
Revision:
0:7cf5bf7e9486
Child:
1:7bf9b6c007a1
P3 Anfang;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kueenste 0:7cf5bf7e9486 1 /*
kueenste 0:7cf5bf7e9486 2 * StateMachine.h
kueenste 0:7cf5bf7e9486 3 * Copyright (c) 2018, ZHAW
kueenste 0:7cf5bf7e9486 4 * All rights reserved.
kueenste 0:7cf5bf7e9486 5 */
kueenste 0:7cf5bf7e9486 6
kueenste 0:7cf5bf7e9486 7 #ifndef STATE_MACHINE_H_
kueenste 0:7cf5bf7e9486 8 #define STATE_MACHINE_H_
kueenste 0:7cf5bf7e9486 9
kueenste 0:7cf5bf7e9486 10 #include <cstdlib>
kueenste 0:7cf5bf7e9486 11 #include <mbed.h>
kueenste 0:7cf5bf7e9486 12 #include "Controller.h"
kueenste 0:7cf5bf7e9486 13 #include "IRSensor.h"
kueenste 0:7cf5bf7e9486 14
kueenste 0:7cf5bf7e9486 15 /**
kueenste 0:7cf5bf7e9486 16 * This class implements a simple state machine for a mobile robot.
kueenste 0:7cf5bf7e9486 17 * It allows to move the robot forward, and to turn left or right,
kueenste 0:7cf5bf7e9486 18 * depending on distance measurements, to avoid collisions with
kueenste 0:7cf5bf7e9486 19 * obstacles.
kueenste 0:7cf5bf7e9486 20 */
kueenste 0:7cf5bf7e9486 21 class StateMachine {
kueenste 0:7cf5bf7e9486 22
kueenste 0:7cf5bf7e9486 23 public:
kueenste 0:7cf5bf7e9486 24
kueenste 0:7cf5bf7e9486 25 static const int ROBOT_OFF = 0; // discrete states of this state machine
kueenste 0:7cf5bf7e9486 26 static const int MOVE_FORWARD = 1;
kueenste 0:7cf5bf7e9486 27 static const int TURN_LEFT = 2;
kueenste 0:7cf5bf7e9486 28 static const int TURN_RIGHT = 3;
kueenste 0:7cf5bf7e9486 29 static const int SLOWING_DOWN = 4;
kueenste 0:7cf5bf7e9486 30
kueenste 0:7cf5bf7e9486 31 StateMachine(Controller& controller, DigitalOut& enableMotorDriver, DigitalOut& led0, DigitalOut& led1, DigitalOut& led2, DigitalOut& led3, DigitalOut& led4, DigitalOut& led5, DigitalIn& button, IRSensor& irSensor0, IRSensor& irSensor1, IRSensor& irSensor2, IRSensor& irSensor3, IRSensor& irSensor4, IRSensor& irSensor5);
kueenste 0:7cf5bf7e9486 32 virtual ~StateMachine();
kueenste 0:7cf5bf7e9486 33 int getState();
kueenste 0:7cf5bf7e9486 34
kueenste 0:7cf5bf7e9486 35 private:
kueenste 0:7cf5bf7e9486 36
kueenste 0:7cf5bf7e9486 37 static const float PERIOD; // period of task in [s]
kueenste 0:7cf5bf7e9486 38 static const float DISTANCE_THRESHOLD; // minimum allowed distance to obstacle in [m]
kueenste 0:7cf5bf7e9486 39 static const float TRANSLATIONAL_VELOCITY; // translational velocity in [m/s]
kueenste 0:7cf5bf7e9486 40 static const float ROTATIONAL_VELOCITY; // rotational velocity in [rad/s]
kueenste 0:7cf5bf7e9486 41
kueenste 0:7cf5bf7e9486 42 Controller& controller;
kueenste 0:7cf5bf7e9486 43 DigitalOut& enableMotorDriver;
kueenste 0:7cf5bf7e9486 44 DigitalOut& led0;
kueenste 0:7cf5bf7e9486 45 DigitalOut& led1;
kueenste 0:7cf5bf7e9486 46 DigitalOut& led2;
kueenste 0:7cf5bf7e9486 47 DigitalOut& led3;
kueenste 0:7cf5bf7e9486 48 DigitalOut& led4;
kueenste 0:7cf5bf7e9486 49 DigitalOut& led5;
kueenste 0:7cf5bf7e9486 50 DigitalIn& button;
kueenste 0:7cf5bf7e9486 51 IRSensor& irSensor0;
kueenste 0:7cf5bf7e9486 52 IRSensor& irSensor1;
kueenste 0:7cf5bf7e9486 53 IRSensor& irSensor2;
kueenste 0:7cf5bf7e9486 54 IRSensor& irSensor3;
kueenste 0:7cf5bf7e9486 55 IRSensor& irSensor4;
kueenste 0:7cf5bf7e9486 56 IRSensor& irSensor5;
kueenste 0:7cf5bf7e9486 57 int state;
kueenste 0:7cf5bf7e9486 58 int buttonNow;
kueenste 0:7cf5bf7e9486 59 int buttonBefore;
kueenste 0:7cf5bf7e9486 60 Ticker ticker;
kueenste 0:7cf5bf7e9486 61
kueenste 0:7cf5bf7e9486 62 void run();
kueenste 0:7cf5bf7e9486 63 };
kueenste 0:7cf5bf7e9486 64
kueenste 0:7cf5bf7e9486 65 #endif /* STATE_MACHINE_H_ */
kueenste 0:7cf5bf7e9486 66