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
Fork of autonomous Robot Android by
Diff: AndroidADKTerm/android.h
- Revision:
- 12:235e318a414f
- Parent:
- 11:775ebb69d5e1
- Child:
- 14:6a45a9f940a8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AndroidADKTerm/android.h Sun Apr 07 08:31:51 2013 +0000 @@ -0,0 +1,154 @@ +#ifndef _ANDROID_H_ +#define _ANDROID_H_ + +#include "mbed.h" +#include "AndroidAccessory.h" +#include "defines.h" +#include <string> +#include <sstream> +#include <vector> +#include <iostream> +#include <stdlib.h> + +/** + * @author Arno Galliker + * + * @subsection LICENSE + * + * Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe + * All rights reserved. + * + * @subsection DESCRIPTION + * + * This class implements communication with the android smartphone + * For more information see the Android ADK Cookbook: + * <a href="http://mbed.org/cookbook/mbed-with-Android-ADK">http://mbed.org/cookbook/mbed-with-Android-ADK</a> + * + * Originally created by p07gbar from work by Makoto Abe + */ + +#define OUTL 100 +#define INBL 100 + +class AdkTerm : public AndroidAccessory +{ + +private: + + /** Attaches a tick to send messages over the USB buffer in a certain interval */ + void AttachTick(); + + /** Method to call when a tick period is over */ + void onTick(); + + /** Char buffer with a size of OUTL */ + char buffer[OUTL]; + + /** Buffer count ??? */ + int bcount; + + /** Instance of ticker */ + Ticker tick; + + //float right,left,rl,ll; + //int tl,tr; + + //Timeout n; + + /** States if tick is on */ + bool settick; + + /** States if something is written to the buffer?? */ + bool ind; + + /** Desired position in meters for x-coordinate, given by android */ + float x; + + /** Desired position in meters for y-coordinate, given by android */ + float y; + + /** Desired position in degrees for theta, given by android */ + float t; + +public: + + /** + * Creates a <code>AdkTerm</code> object and initializes all private + * state variables. Constructor + */ + AdkTerm(); + + /** + * Sets initial configurations and clears the buffer + * + */ + void setupDevice(); + + /** + * Returns the desired position in meters for x-coordinate, given by android + * @return x-coordinate,given in [m] + */ + float getx(); + + /** + * Returns the desired position in meters for y-coordinate, given by android + * @return y-coordinate,given in [m] + */ + float gety(); + + /** + * Returns the esired position in degrees for theta, given by android + * @return y-coordinate,given in degrees [°] + */ + float gett(); + +private: + + /** + * + * + */ + //void AttachTick(); + + /** + * + * + */ + // void onTick(); + + /** + * Clears the buffer and bcount + * + */ + void resetDevice(); + + /** + * Takes an string, a vector of strings for the delimited tokens, and a with the + * @param str + * @param tokens + * @param delimiters + */ + void Tokenize(const string& str, vector<string>& tokens, const string& delimiters = " "); + + /** + * + * @param buf + * @param len + */ + int callbackRead(u8 *buf, int len); + + /** + * + * + */ + int callbackWrite(); + + /** + * + * + */ + void serialIRQ(); + +}; + +#endif