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:
Fri Apr 05 10:58:42 2013 +0000
Revision:
11:775ebb69d5e1
Parent:
6:48eeb41188dd
Child:
12:235e318a414f
doku soweit gut ohne android

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 11:775ebb69d5e1 9 * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
chrigelburri 0:31f7be68e52d 10 * All rights reserved.
chrigelburri 6:48eeb41188dd 11 *
chrigelburri 11:775ebb69d5e1 12 * @brief
chrigelburri 0:31f7be68e52d 13 * The <code>Task</code> class allows to install periodic, time-triggered
chrigelburri 0:31f7be68e52d 14 * tasks. An example of a simple user-defined task is given below:
chrigelburri 0:31f7be68e52d 15 * <pre><code>
chrigelburri 0:31f7be68e52d 16 * class MyTask : public Task {
chrigelburri 0:31f7be68e52d 17 * public:
chrigelburri 0:31f7be68e52d 18 * void run();
chrigelburri 0:31f7be68e52d 19 * };
chrigelburri 0:31f7be68e52d 20 *
chrigelburri 0:31f7be68e52d 21 * void MyTask::run() {
chrigelburri 0:31f7be68e52d 22 * <span style="color:#FF0000">// code to be executed periodically</span>
chrigelburri 0:31f7be68e52d 23 * }
chrigelburri 0:31f7be68e52d 24 * </code></pre>
chrigelburri 0:31f7be68e52d 25 * This task can then be created and started as follows:
chrigelburri 0:31f7be68e52d 26 * <pre><code>
chrigelburri 0:31f7be68e52d 27 * MyTask myTask(0.1); <span style="color:#FF0000">// period in seconds</span>
chrigelburri 0:31f7be68e52d 28 * myTask.start();
chrigelburri 0:31f7be68e52d 29 * ...
chrigelburri 0:31f7be68e52d 30 *
chrigelburri 0:31f7be68e52d 31 * myTask.stop();
chrigelburri 0:31f7be68e52d 32 * </code></pre>
chrigelburri 0:31f7be68e52d 33 */
chrigelburri 0:31f7be68e52d 34 class Task
chrigelburri 0:31f7be68e52d 35 {
chrigelburri 0:31f7be68e52d 36
chrigelburri 0:31f7be68e52d 37 private:
chrigelburri 0:31f7be68e52d 38
chrigelburri 0:31f7be68e52d 39 /** specifiying the interval in seconds */
chrigelburri 0:31f7be68e52d 40 float period;
chrigelburri 6:48eeb41188dd 41 /** The Ticker interface is used to setup a recurring interrupt to
chrigelburri 6:48eeb41188dd 42 * repeatedly call a function at a specified rate.
chrigelburri 6:48eeb41188dd 43 */
chrigelburri 0:31f7be68e52d 44 Ticker ticker;
chrigelburri 0:31f7be68e52d 45
chrigelburri 0:31f7be68e52d 46 public:
chrigelburri 0:31f7be68e52d 47
chrigelburri 6:48eeb41188dd 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 6:48eeb41188dd 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