This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf

Dependencies:   mbed

Fork of autonomous Robot Android by Christian Burri

Committer:
chrigelburri
Date:
Mon May 20 11:51:33 2013 +0000
Revision:
27:a13ede88e75f
Parent:
24:08241be546ba
mit led methode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrigelburri 0:31f7be68e52d 1 #ifndef _STATE_H_
chrigelburri 0:31f7be68e52d 2 #define _STATE_H_
chrigelburri 0:31f7be68e52d 3
chrigelburri 0:31f7be68e52d 4 #include "MaxonESCON.h"
chrigelburri 0:31f7be68e52d 5 #include "RobotControl.h"
chrigelburri 0:31f7be68e52d 6 #include "Task.h"
chrigelburri 0:31f7be68e52d 7 #include "defines.h"
chrigelburri 0:31f7be68e52d 8
chrigelburri 0:31f7be68e52d 9 /**
chrigelburri 0:31f7be68e52d 10 * @author Christian Burri
chrigelburri 0:31f7be68e52d 11 *
chrigelburri 11:775ebb69d5e1 12 * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
chrigelburri 0:31f7be68e52d 13 * All rights reserved.
chrigelburri 0:31f7be68e52d 14 *
chrigelburri 11:775ebb69d5e1 15 * @brief
chrigelburri 0:31f7be68e52d 16 *
chrigelburri 0:31f7be68e52d 17 * State is the main mechanism for communicating current realtime system state to
chrigelburri 0:31f7be68e52d 18 * the rest of the system for logging etc.
chrigelburri 6:48eeb41188dd 19 *
chrigelburri 0:31f7be68e52d 20 */
chrigelburri 0:31f7be68e52d 21
chrigelburri 0:31f7be68e52d 22 class State : public Task
chrigelburri 0:31f7be68e52d 23 {
chrigelburri 0:31f7be68e52d 24
chrigelburri 0:31f7be68e52d 25 private:
chrigelburri 0:31f7be68e52d 26
chrigelburri 11:775ebb69d5e1 27 state_t* s;
chrigelburri 0:31f7be68e52d 28 RobotControl* robotControl;
chrigelburri 0:31f7be68e52d 29 MaxonESCON* motorControllerLeft;
chrigelburri 0:31f7be68e52d 30 MaxonESCON* motorControllerRight;
chrigelburri 11:775ebb69d5e1 31 AnalogIn battery;
chrigelburri 0:31f7be68e52d 32 Timer timer;
chrigelburri 0:31f7be68e52d 33 float period;
chrigelburri 27:a13ede88e75f 34 PwmOut led1;
chrigelburri 27:a13ede88e75f 35 PwmOut led2;
chrigelburri 27:a13ede88e75f 36 PwmOut led3;
chrigelburri 27:a13ede88e75f 37 PwmOut led4;
chrigelburri 27:a13ede88e75f 38
chrigelburri 0:31f7be68e52d 39 public:
chrigelburri 0:31f7be68e52d 40
chrigelburri 0:31f7be68e52d 41 /**
chrigelburri 11:775ebb69d5e1 42 * @brief Creates a robot control object and initializes all private state variables.
chrigelburri 3:92ba0254af87 43 * @param s struct to read and write the state
chrigelburri 3:92ba0254af87 44 * @param robotControl Object to read the state
chrigelburri 3:92ba0254af87 45 * @param motorControllerLeft a reference to the servo drive for the left motor
chrigelburri 3:92ba0254af87 46 * @param motorControllerRight a reference to the servo drive for the right motor
chrigelburri 11:775ebb69d5e1 47 * @param batteryPin mbed pin for analog Input Battery Voltage
chrigelburri 3:92ba0254af87 48 * @param period the sampling period of the run loop of this controller, given in [s]
chrigelburri 0:31f7be68e52d 49 */
chrigelburri 6:48eeb41188dd 50 State(state_t* s,
chrigelburri 6:48eeb41188dd 51 RobotControl* robotControl,
chrigelburri 6:48eeb41188dd 52 MaxonESCON* motorControllerLeft,
chrigelburri 6:48eeb41188dd 53 MaxonESCON* motorControllerRight,
chrigelburri 11:775ebb69d5e1 54 PinName batteryPin,
chrigelburri 6:48eeb41188dd 55 float period);
chrigelburri 0:31f7be68e52d 56
chrigelburri 0:31f7be68e52d 57 /**
chrigelburri 11:775ebb69d5e1 58 * @brief Destructor of the Object to destroy the Object.
chrigelburri 12:235e318a414f 59 */
chrigelburri 0:31f7be68e52d 60 virtual ~State();
chrigelburri 6:48eeb41188dd 61
chrigelburri 0:31f7be68e52d 62 /**
chrigelburri 11:775ebb69d5e1 63 * @brief Initzialize the File. Open the File plots.txt and set the title at first line.
chrigelburri 0:31f7be68e52d 64 */
chrigelburri 0:31f7be68e52d 65 void initPlotFile(void);
chrigelburri 0:31f7be68e52d 66
chrigelburri 0:31f7be68e52d 67 /**
chrigelburri 11:775ebb69d5e1 68 * @brief Close the File.
chrigelburri 6:48eeb41188dd 69 */
chrigelburri 0:31f7be68e52d 70 void closePlotFile(void);
chrigelburri 0:31f7be68e52d 71
chrigelburri 0:31f7be68e52d 72 /**
chrigelburri 11:775ebb69d5e1 73 * @brief Return the Battery voltage
chrigelburri 0:31f7be68e52d 74 * state variables.
chrigelburri 0:31f7be68e52d 75 * @return Batterie Voltage [V]
chrigelburri 0:31f7be68e52d 76 */
chrigelburri 0:31f7be68e52d 77 float readBattery();
chrigelburri 0:31f7be68e52d 78
chrigelburri 6:48eeb41188dd 79 /**
chrigelburri 11:775ebb69d5e1 80 * @brief Starts the timer from zero.
chrigelburri 1:6cd533a712c6 81 * The timer is for the logging Time.
chrigelburri 1:6cd533a712c6 82 */
chrigelburri 0:31f7be68e52d 83 void startTimerFromZero();
chrigelburri 0:31f7be68e52d 84
chrigelburri 0:31f7be68e52d 85 /**
chrigelburri 11:775ebb69d5e1 86 * @brief Save the new state to a new line.
chrigelburri 27:a13ede88e75f 87 * @param s struct for logging.
chrigelburri 6:48eeb41188dd 88 */
chrigelburri 0:31f7be68e52d 89 void savePlotFile(state_t s);
chrigelburri 27:a13ede88e75f 90
chrigelburri 24:08241be546ba 91 /**
chrigelburri 24:08241be546ba 92 * Returns the transform a sinusvalue from -1.0 .. 1.0 to 0.0 .. 1.0
chrigelburri 24:08241be546ba 93 * @param idx number of LEDS
chrigelburri 24:08241be546ba 94 * @param f value till 2π
chrigelburri 24:08241be546ba 95 * @return sinus value from 0.0f 1.0f
chrigelburri 24:08241be546ba 96 */
chrigelburri 24:08241be546ba 97 float dim( int idx, float f );
chrigelburri 0:31f7be68e52d 98
chrigelburri 11:775ebb69d5e1 99 /**
chrigelburri 27:a13ede88e75f 100 * @brief Blink the four LED like KITT
chrigelburri 27:a13ede88e75f 101 * @param wait value for the speed [ms];
chrigelburri 27:a13ede88e75f 102 */
chrigelburri 27:a13ede88e75f 103 void ledArray(float wait);
chrigelburri 27:a13ede88e75f 104
chrigelburri 27:a13ede88e75f 105 /**
chrigelburri 12:235e318a414f 106 * @brief Run method actualize every period.
chrigelburri 12:235e318a414f 107 */
chrigelburri 0:31f7be68e52d 108 void run();
chrigelburri 0:31f7be68e52d 109
chrigelburri 0:31f7be68e52d 110 private:
chrigelburri 0:31f7be68e52d 111
chrigelburri 0:31f7be68e52d 112 void setBatteryBit();
chrigelburri 0:31f7be68e52d 113
chrigelburri 0:31f7be68e52d 114 void setEnableLeftBit();
chrigelburri 0:31f7be68e52d 115
chrigelburri 0:31f7be68e52d 116 void setEnableRightBit();
chrigelburri 0:31f7be68e52d 117 };
chrigelburri 0:31f7be68e52d 118
chrigelburri 0:31f7be68e52d 119 #endif