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

Revision:
0:31f7be68e52d
Child:
1:6cd533a712c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RobotControl/MotionState.h	Thu Feb 07 17:43:19 2013 +0000
@@ -0,0 +1,177 @@
+#ifndef _MOTION_STATE_H_
+#define _MOTION_STATE_H_
+
+#include <cmath>
+#include "defines.h"
+
+/**
+ * @author Christian Burri
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2013 HSLU Pren Team #1 Cruising Crêpe
+ * All rights reserved.
+ *
+ * @section DESCRIPTION
+ *
+ * ?????
+ *
+ */
+class MotionState
+{
+
+private:
+
+    float               acceleration;
+    float               thetaAcceleration;
+
+public:
+
+    /** The xposition value of this motion state. */
+    float xposition;
+    /** The yposition value of this motion state. */
+    float yposition;
+    /** The angle of this motion state. */
+    float theta;
+    /** The angle of this motion state from the compass. */      
+    float thetaCompass;
+    /** The speed value of this motion state. */
+    float speed;
+    /** The speed rotational value of this motion state. */
+    float omega;
+
+    /**
+     * Creates a <code>MotionState</code> object.
+     * The values for position and speed are set to 0.
+     */
+    MotionState();
+
+    /**
+    * Creates a <code>MotionState</code> object with given values for position and speed.
+    * @param xposition the initial position value of this motion state, given in [m].
+    * @param yposition the initial position value of this motion state, given in [m].
+    * @param theta the initial angle value of this motion state, given in [rad].
+    * @param speed the initial speed value of this motion state, given in [m/s].
+    * @param omega the initial omega speed value of this motion state, given in [rad/s].
+    */
+    MotionState(float xposition, float yposition, float theta, float speed, float omega);
+
+    /**
+    * Destructor of the Object to destroy the Object.
+    **/
+    virtual     ~MotionState();
+
+    /**
+    * Sets the values for xPosition, yPostion and angle.
+    * @param xposition the initial position value of this motion state, given in [m].
+    * @param yposition the initial position value of this motion state, given in [m].
+    * @param theta the initial angle value of this motion state, given in [rad].
+    * @param speed the initial speed value of this motion state, given in [m/s].
+    * @param omega the initial omega speed value of this motion state, given in [rad/s].
+    */
+    void        setState(float xposition, float yposition, float theta, float speed, float omega);
+
+    /**
+    * Sets the values for xPosition, yPostion and angle.
+    * @param motionState another <code>MotionState</code> object to copy the state values from.
+    */
+    void        setState(MotionState* motionState);
+
+    /**
+    * Sets the X-position value.
+    * @param the desired xposition value of this motion state, given in [m].
+    */
+    void        setxPosition(float position);
+
+    /**
+    * Gets the X-position value.
+    * @return the xposition value of this motion state, given in [m].
+    */
+    float       getxPosition();
+
+    /**
+    * Sets the Y-position value.
+    * @param the desired yposition value of this motion state, given in [m].
+    */
+    void        setyPosition(float yposition);
+
+    /**
+    * Gets the Y-position value.
+    * @return the xposition value of this motion state, given in [m].
+    */
+    float       getyPosition();
+
+    /**
+    * Sets the theta value.
+    * @param the desired theta value of this motion state, given in [m].
+    */
+    void        setTheta(float theta);
+
+    /**
+    * Gets the angle value.
+    * @return the theta value of this motion state, given in [rad].
+    */
+    float       getTheta();
+
+    /**
+    * Sets the speed value.
+    * @param speed the desired speed value of this motion state, given in [m/s].
+    */
+    void        setSpeed(float speed);
+
+    /**
+    * Gets the speed value.
+    * @return the speed value of this motion state, given in [m/s].
+    */
+    float       getSpeed();
+
+    /**
+    * Sets the omega value.
+    * @param omega the desired omega value of this motion state, given in [rad/s].
+    */
+    void        setOmega(float omega);
+
+    /**
+    * Gets the omega value.
+    * @return the omega value of this motion state, given in [rad/s].
+    */
+    float       getOmega();
+
+    /**
+    * Sets the maximum acceleration value.
+    * @param acceleration the maximum acceleration value to use for the calculation
+    * of the motion trajectory, given in [m/s&sup2;].
+    */
+    void        setAcceleration(float acceleration);
+
+    /**
+    * Gets the maximum acceleration value.
+    * @return the maximum acceleration value used for the calculation
+    * of the motion trajectory, given in [m/s&sup2;].
+    */
+    float       getAcceleration();
+
+    /**
+    * Sets the maximum acceleration value of rotation.
+    * @param acceleration the maximum acceleration value to use for the calculation
+    * of the motion trajectory, given in [rad/s&sup2;].
+    */
+    void        setThetaAcceleration(float thetaAcceleration);
+
+    /**
+    * Gets the maximum acceleration value of rotation.
+    * @return the maximum acceleration value used for the calculation
+    * of the motion trajectory, given in [rad/s&sup2;].
+    */
+    float       getThetaAcceleration();
+
+    /**
+    * Increments the current motion state towards a given desired speed.
+    * @param desiredSpeed the desired speed given in [m/s].
+    * @param desiredOmega the desired omega given in [rad/s].
+    * @param period the time period to increment the motion state for, given in [s].
+    */
+    void        increment(float desiredSpeed, float desiredOmega, float period);
+};
+
+#endif