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:
Sun May 19 14:39:20 2013 +0000
Revision:
23:4d8173c5183b
Parent:
12:235e318a414f
Child:
27:a13ede88e75f
Child:
38:d76e488e725f
mit anzeige;

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 0:31f7be68e52d 34
chrigelburri 0:31f7be68e52d 35 public:
chrigelburri 0:31f7be68e52d 36
chrigelburri 0:31f7be68e52d 37 /**
chrigelburri 11:775ebb69d5e1 38 * @brief Creates a robot control object and initializes all private state variables.
chrigelburri 3:92ba0254af87 39 * @param s struct to read and write the state
chrigelburri 3:92ba0254af87 40 * @param robotControl Object to read the state
chrigelburri 3:92ba0254af87 41 * @param motorControllerLeft a reference to the servo drive for the left motor
chrigelburri 3:92ba0254af87 42 * @param motorControllerRight a reference to the servo drive for the right motor
chrigelburri 11:775ebb69d5e1 43 * @param batteryPin mbed pin for analog Input Battery Voltage
chrigelburri 3:92ba0254af87 44 * @param period the sampling period of the run loop of this controller, given in [s]
chrigelburri 0:31f7be68e52d 45 */
chrigelburri 6:48eeb41188dd 46 State(state_t* s,
chrigelburri 6:48eeb41188dd 47 RobotControl* robotControl,
chrigelburri 6:48eeb41188dd 48 MaxonESCON* motorControllerLeft,
chrigelburri 6:48eeb41188dd 49 MaxonESCON* motorControllerRight,
chrigelburri 11:775ebb69d5e1 50 PinName batteryPin,
chrigelburri 6:48eeb41188dd 51 float period);
chrigelburri 0:31f7be68e52d 52
chrigelburri 0:31f7be68e52d 53 /**
chrigelburri 11:775ebb69d5e1 54 * @brief Destructor of the Object to destroy the Object.
chrigelburri 12:235e318a414f 55 */
chrigelburri 0:31f7be68e52d 56 virtual ~State();
chrigelburri 6:48eeb41188dd 57
chrigelburri 0:31f7be68e52d 58 /**
chrigelburri 11:775ebb69d5e1 59 * @brief Initzialize the File. Open the File plots.txt and set the title at first line.
chrigelburri 0:31f7be68e52d 60 */
chrigelburri 0:31f7be68e52d 61 void initPlotFile(void);
chrigelburri 0:31f7be68e52d 62
chrigelburri 0:31f7be68e52d 63 /**
chrigelburri 11:775ebb69d5e1 64 * @brief Close the File.
chrigelburri 6:48eeb41188dd 65 */
chrigelburri 0:31f7be68e52d 66 void closePlotFile(void);
chrigelburri 0:31f7be68e52d 67
chrigelburri 0:31f7be68e52d 68 /**
chrigelburri 11:775ebb69d5e1 69 * @brief Return the Battery voltage
chrigelburri 0:31f7be68e52d 70 * state variables.
chrigelburri 0:31f7be68e52d 71 * @return Batterie Voltage [V]
chrigelburri 0:31f7be68e52d 72 */
chrigelburri 0:31f7be68e52d 73 float readBattery();
chrigelburri 0:31f7be68e52d 74
chrigelburri 6:48eeb41188dd 75 /**
chrigelburri 11:775ebb69d5e1 76 * @brief Starts the timer from zero.
chrigelburri 1:6cd533a712c6 77 * The timer is for the logging Time.
chrigelburri 1:6cd533a712c6 78 */
chrigelburri 0:31f7be68e52d 79 void startTimerFromZero();
chrigelburri 0:31f7be68e52d 80
chrigelburri 0:31f7be68e52d 81 /**
chrigelburri 11:775ebb69d5e1 82 * @brief Save the new state to a new line.
chrigelburri 6:48eeb41188dd 83 */
chrigelburri 0:31f7be68e52d 84 void savePlotFile(state_t s);
chrigelburri 23:4d8173c5183b 85
chrigelburri 23:4d8173c5183b 86 /**
chrigelburri 23:4d8173c5183b 87 * Returns the transform a sinusvalue from -1.0 .. 1.0 to 0.0 .. 1.0
chrigelburri 23:4d8173c5183b 88 * @param idx number of LEDS
chrigelburri 23:4d8173c5183b 89 * @param f value till 2π
chrigelburri 23:4d8173c5183b 90 * @return sinus value from 0.0f 1.0f
chrigelburri 23:4d8173c5183b 91 */
chrigelburri 23:4d8173c5183b 92 float dim( int idx, float f );
chrigelburri 0:31f7be68e52d 93
chrigelburri 11:775ebb69d5e1 94 /**
chrigelburri 12:235e318a414f 95 * @brief Run method actualize every period.
chrigelburri 12:235e318a414f 96 */
chrigelburri 0:31f7be68e52d 97 void run();
chrigelburri 0:31f7be68e52d 98
chrigelburri 0:31f7be68e52d 99 private:
chrigelburri 0:31f7be68e52d 100
chrigelburri 0:31f7be68e52d 101 void setBatteryBit();
chrigelburri 0:31f7be68e52d 102
chrigelburri 0:31f7be68e52d 103 void setEnableLeftBit();
chrigelburri 0:31f7be68e52d 104
chrigelburri 0:31f7be68e52d 105 void setEnableRightBit();
chrigelburri 0:31f7be68e52d 106 };
chrigelburri 0:31f7be68e52d 107
chrigelburri 0:31f7be68e52d 108 #endif