This program is for an autonomous robot for the competition at the Hochschule Luzern. We are one of the 32 teams. <a href="http://cruisingcrepe.wordpress.com/">http://cruisingcrepe.wordpress.com/</a> 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: <a href="http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf">http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf</a>
Fork of autonomousRobotAndroid by
Diff: RobotControl/MotionState.h
- 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²]. + */ + 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²]. + */ + 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²]. + */ + 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²]. + */ + 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