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:
Sat Mar 02 09:39:34 2013 +0000
Revision:
1:6cd533a712c6
Parent:
0:31f7be68e52d
Child:
6:48eeb41188dd
Pos Regler funktioniert getestet im leerlauf;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrigelburri 0:31f7be68e52d 1 #ifndef _TASK_H_
chrigelburri 0:31f7be68e52d 2 #define _TASK_H_
chrigelburri 0:31f7be68e52d 3
chrigelburri 0:31f7be68e52d 4 #include "mbed.h"
chrigelburri 0:31f7be68e52d 5
chrigelburri 0:31f7be68e52d 6 /**
chrigelburri 0:31f7be68e52d 7 * @author Christian Burri
chrigelburri 0:31f7be68e52d 8 *
chrigelburri 0:31f7be68e52d 9 * @section LICENSE
chrigelburri 0:31f7be68e52d 10 *
chrigelburri 1:6cd533a712c6 11 * Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
chrigelburri 0:31f7be68e52d 12 * All rights reserved.
chrigelburri 1:6cd533a712c6 13 *
chrigelburri 0:31f7be68e52d 14 * @section DESCRIPTION
chrigelburri 0:31f7be68e52d 15 * The <code>Task</code> class allows to install periodic, time-triggered
chrigelburri 0:31f7be68e52d 16 * tasks. An example of a simple user-defined task is given below:
chrigelburri 0:31f7be68e52d 17 * <pre><code>
chrigelburri 0:31f7be68e52d 18 * class MyTask : public Task {
chrigelburri 0:31f7be68e52d 19 * public:
chrigelburri 0:31f7be68e52d 20 * void run();
chrigelburri 0:31f7be68e52d 21 * };
chrigelburri 0:31f7be68e52d 22 *
chrigelburri 0:31f7be68e52d 23 * void MyTask::run() {
chrigelburri 0:31f7be68e52d 24 * <span style="color:#FF0000">// code to be executed periodically</span>
chrigelburri 0:31f7be68e52d 25 * }
chrigelburri 0:31f7be68e52d 26 * </code></pre>
chrigelburri 0:31f7be68e52d 27 * This task can then be created and started as follows:
chrigelburri 0:31f7be68e52d 28 * <pre><code>
chrigelburri 0:31f7be68e52d 29 * MyTask myTask(0.1); <span style="color:#FF0000">// period in seconds</span>
chrigelburri 0:31f7be68e52d 30 * myTask.start();
chrigelburri 0:31f7be68e52d 31 * ...
chrigelburri 0:31f7be68e52d 32 *
chrigelburri 0:31f7be68e52d 33 * myTask.stop();
chrigelburri 0:31f7be68e52d 34 * </code></pre>
chrigelburri 0:31f7be68e52d 35 */
chrigelburri 0:31f7be68e52d 36 class Task
chrigelburri 0:31f7be68e52d 37 {
chrigelburri 0:31f7be68e52d 38
chrigelburri 0:31f7be68e52d 39 private:
chrigelburri 0:31f7be68e52d 40
chrigelburri 0:31f7be68e52d 41 /** specifiying the interval in seconds */
chrigelburri 0:31f7be68e52d 42 float period;
chrigelburri 0:31f7be68e52d 43 /** The Ticker interface is used to setup a recurring interrupt to repeatedly call a function at a specified rate. */
chrigelburri 0:31f7be68e52d 44 Ticker ticker;
chrigelburri 0:31f7be68e52d 45
chrigelburri 0:31f7be68e52d 46 public:
chrigelburri 0:31f7be68e52d 47
chrigelburri 0:31f7be68e52d 48 /**
chrigelburri 0:31f7be68e52d 49 * Creates a task object with a given period.
chrigelburri 0:31f7be68e52d 50 * @param period the period of this task in seconds.
chrigelburri 0:31f7be68e52d 51 */
chrigelburri 0:31f7be68e52d 52 Task(float period);
chrigelburri 0:31f7be68e52d 53
chrigelburri 0:31f7be68e52d 54 virtual ~Task();
chrigelburri 0:31f7be68e52d 55
chrigelburri 0:31f7be68e52d 56 /**
chrigelburri 0:31f7be68e52d 57 * Gets the period of this task.
chrigelburri 0:31f7be68e52d 58 * @return the period in seconds.
chrigelburri 0:31f7be68e52d 59 */
chrigelburri 0:31f7be68e52d 60 float getPeriod();
chrigelburri 0:31f7be68e52d 61
chrigelburri 0:31f7be68e52d 62 /**
chrigelburri 0:31f7be68e52d 63 * Starts this task.
chrigelburri 0:31f7be68e52d 64 */
chrigelburri 0:31f7be68e52d 65 void start();
chrigelburri 0:31f7be68e52d 66
chrigelburri 0:31f7be68e52d 67 /**
chrigelburri 0:31f7be68e52d 68 * Stops this task.
chrigelburri 0:31f7be68e52d 69 */
chrigelburri 0:31f7be68e52d 70 void stop();
chrigelburri 0:31f7be68e52d 71
chrigelburri 0:31f7be68e52d 72 /**
chrigelburri 0:31f7be68e52d 73 * This method needs to be implemented by a user task.
chrigelburri 0:31f7be68e52d 74 */
chrigelburri 0:31f7be68e52d 75 virtual void run();
chrigelburri 0:31f7be68e52d 76 };
chrigelburri 0:31f7be68e52d 77
chrigelburri 0:31f7be68e52d 78 #endif