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
RobotControl/MotionState.h
- Committer:
- chrigelburri
- Date:
- 2013-03-07
- Revision:
- 3:92ba0254af87
- Parent:
- 1:6cd533a712c6
- Child:
- 6:48eeb41188dd
File content as of revision 3:92ba0254af87:
#ifndef _MOTION_STATE_H_ #define _MOTION_STATE_H_ #include "defines.h" /** * @author Christian Burri * * @section LICENSE * * Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe * All rights reserved. * * @section DESCRIPTION * * This help class is for calculate and save the actual or desired value. * There have the setter and the getter methode to change the value * Is also possible to limit the translational and rotational speed * by the value acceleration and thetaAcceleration. Therefore * can adjust the ramp. * */ 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 θ of this motion state. */ float theta; /** The θ 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 θ 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 ω 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 θ. * @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 θ 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 ω 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 X-Position, Y-Postion and θ. * @param motionState another <code>MotionState</code> object to copy the state values from */ void setState(MotionState* motionState); /** * Sets the X-position value. * @param xposition the desired xposition value of this motion state, given in [m] */ void setxPosition(float xposition); /** * Gets the X-position value. * @return the xposition value of this motion state, given in [m] */ float getxPosition(); /** * Sets the Y-position value. * @param yposition 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 θ value. * @param theta the desired θ value of this motion state, given in [rad] */ void setTheta(float theta); /** * Gets the θ value. * @return the θ 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 ω value. * @param omega the desired ω value of this motion state, given in [rad/s] */ void setOmega(float omega); /** * Gets the ω value. * @return the ω 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<SUP>2</SUP>] */ 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<SUP>2</SUP>] */ float getAcceleration(); /** * Sets the maximum acceleration value of rotation. * @param thetaAcceleration the maximum acceleration value to use for the calculation of the motion trajectory, given in [rad/<SUP>2</SUP>] */ 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/<SUP>2</SUP>] */ 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 ω 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