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
RobotControl/MotionState.h
- Committer:
- chrigelburri
- Date:
- 2013-02-07
- Revision:
- 0:31f7be68e52d
- Child:
- 1:6cd533a712c6
File content as of revision 0:31f7be68e52d:
#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