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 Jun 10 08:21:41 2013 +0000
Revision:
38:d76e488e725f
Parent:
12:235e318a414f
copyright noch neu hinzugef?gt. Bereit zur Ver?ffentlichung

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 38:d76e488e725f 9 * @copyright Copyright (c) 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 38:d76e488e725f 33 *
chrigelburri 38:d76e488e725f 34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
chrigelburri 38:d76e488e725f 35 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
chrigelburri 38:d76e488e725f 36 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
chrigelburri 38:d76e488e725f 37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
chrigelburri 38:d76e488e725f 38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
chrigelburri 38:d76e488e725f 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
chrigelburri 38:d76e488e725f 40 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
chrigelburri 0:31f7be68e52d 41 */
chrigelburri 0:31f7be68e52d 42 class Task
chrigelburri 0:31f7be68e52d 43 {
chrigelburri 0:31f7be68e52d 44
chrigelburri 0:31f7be68e52d 45 private:
chrigelburri 0:31f7be68e52d 46
chrigelburri 0:31f7be68e52d 47 /** specifiying the interval in seconds */
chrigelburri 0:31f7be68e52d 48 float period;
chrigelburri 6:48eeb41188dd 49 /** The Ticker interface is used to setup a recurring interrupt to
chrigelburri 6:48eeb41188dd 50 * repeatedly call a function at a specified rate.
chrigelburri 6:48eeb41188dd 51 */
chrigelburri 0:31f7be68e52d 52 Ticker ticker;
chrigelburri 0:31f7be68e52d 53
chrigelburri 0:31f7be68e52d 54 public:
chrigelburri 0:31f7be68e52d 55
chrigelburri 6:48eeb41188dd 56 /**
chrigelburri 0:31f7be68e52d 57 * Creates a task object with a given period.
chrigelburri 0:31f7be68e52d 58 * @param period the period of this task in seconds.
chrigelburri 0:31f7be68e52d 59 */
chrigelburri 0:31f7be68e52d 60 Task(float period);
chrigelburri 6:48eeb41188dd 61
chrigelburri 0:31f7be68e52d 62 virtual ~Task();
chrigelburri 0:31f7be68e52d 63
chrigelburri 0:31f7be68e52d 64 /**
chrigelburri 12:235e318a414f 65 * Gets the period of this task.
chrigelburri 12:235e318a414f 66 * @return the period in seconds.
chrigelburri 12:235e318a414f 67 */
chrigelburri 0:31f7be68e52d 68 float getPeriod();
chrigelburri 0:31f7be68e52d 69
chrigelburri 0:31f7be68e52d 70 /**
chrigelburri 12:235e318a414f 71 * Starts this task.
chrigelburri 12:235e318a414f 72 */
chrigelburri 0:31f7be68e52d 73 void start();
chrigelburri 0:31f7be68e52d 74
chrigelburri 0:31f7be68e52d 75 /**
chrigelburri 12:235e318a414f 76 * Stops this task.
chrigelburri 12:235e318a414f 77 */
chrigelburri 0:31f7be68e52d 78 void stop();
chrigelburri 0:31f7be68e52d 79
chrigelburri 0:31f7be68e52d 80 /**
chrigelburri 12:235e318a414f 81 * This method needs to be implemented by a user task.
chrigelburri 12:235e318a414f 82 */
chrigelburri 0:31f7be68e52d 83 virtual void run();
chrigelburri 0:31f7be68e52d 84 };
chrigelburri 0:31f7be68e52d 85
chrigelburri 0:31f7be68e52d 86 #endif