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: RobotControl/RobotControl.h
- Revision:
- 11:775ebb69d5e1
- Parent:
- 6:48eeb41188dd
- Child:
- 12:235e318a414f
--- a/RobotControl/RobotControl.h Thu Apr 04 06:43:43 2013 +0000 +++ b/RobotControl/RobotControl.h Fri Apr 05 10:58:42 2013 +0000 @@ -1,23 +1,18 @@ #ifndef _ROBOT_CONTROL_H_ #define _ROBOT_CONTROL_H_ -#include "mbed.h" #include "MaxonESCON.h" #include "MotionState.h" #include "Task.h" -#include "HMC5883L.h" -#include "HMC6352.h" #include "defines.h" /** * @author Christian Burri * - * @section LICENSE - * - * Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe + * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe * All rights reserved. * - * @section DESCRIPTION + * @brief * * This class controls the position of the robot. It has * a run loop that is called periodically. This run loop reads the actual @@ -35,8 +30,6 @@ MaxonESCON* motorControllerLeft; MaxonESCON* motorControllerRight; -// HMC6352* compass; - AnalogIn* battery; MotionState Desired; MotionState Actual; MotionState stateLeft; @@ -46,7 +39,7 @@ float omega; /** - * Add ±2π when the range of + * @brief Add ±2π when the range of * the radian is over +π or under -π. * @param theta to check the value * @return the value in the range from -π to +π @@ -56,29 +49,26 @@ public: /** - * Creates a <code>Robot Control</code> object and + * @brief Creates a <code>Robot Control</code> object and * initializes all private state variables. * @param motorControllerLeft a reference to the servo * drive for the left motor * @param motorControllerRight a reference to the servo * drive for the right motor - * @param compass Modul HMC5883L - * @param period the sampling period of the run loop of + * @param period the sampling period of the run loop of * this controller, given in [s] */ RobotControl(MaxonESCON* motorControllerLeft, - MaxonESCON* - motorControllerRight, - /*HMC6352* compass,*/ + MaxonESCON* motorControllerRight, float period); /** - * Destructor of the Object to destroy the Object. + * @brief Destructor of the Object to destroy the Object. **/ virtual ~RobotControl(); /** - * Enables or disables the servo drives of the motors. + * @brief Enables or disables the servo drives of the motors. * @param enable if <code>true</code> enables the drives, * <code>false</code> otherwise * the servo drives are shut down. @@ -86,21 +76,21 @@ void setEnable(bool enable); /** - * Tests if the servo drives of the motors are enabled. + * @brief Tests if the servo drives of the motors are enabled. * @return <code>true</code> if the drives are enabled, * <code>false</code> otherwise */ bool isEnabled(); /** - * Sets the maximum acceleration value. + * @brief 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); /** - * Sets the maximum acceleration value of rotation. + * @brief 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<SUP>2</SUP>] @@ -108,55 +98,55 @@ void setThetaAcceleration(float acceleration); /** - * Sets the desired translational speed of the robot. + * @brief Sets the desired translational speed of the robot. * @param speed the desired speed, given in [m/s] */ void setDesiredSpeed(float speed); /** - * Sets the desired rotational speed of the robot. + * @brief Sets the desired rotational speed of the robot. * @param omega the desired rotational speed, given in [rad/s] */ void setDesiredOmega(float omega); /** - * Sets the desired X-position of the robot. + * @brief Sets the desired X-position of the robot. * @param xposition the desired position, given in [m] */ void setDesiredxPosition(float xposition); /** - * Sets the desired Y-position of the robot. + * @brief Sets the desired Y-position of the robot. * @param yposition the desired position, given in [m] */ void setDesiredyPosition(float yposition); /** - * Sets the desired θ of the robot. + * @brief Sets the desired θ of the robot. * @param theta the desired θ, given in [rad] */ void setDesiredTheta(float theta); /** - * Get the desired X-position of the robot. + * @brief Get the desired X-position of the robot. * @return xposition the desired position, given in [m] */ float getDesiredxPosition(); /** - * Get the desired Y-position of the robot. + * @brief Get the desired Y-position of the robot. * @return yposition the desired position, given in [m] */ float getDesiredyPosition(); /** - * Get the desired θ of the robot. + * @brief Get the desired θ of the robot. * @return theta the desired θ, given in [rad] */ float getDesiredTheta(); /** - * Sets the desired Position and θ. + * @brief Sets the desired Position and θ. * @param xposition the desired position, given in [m] * @param yposition the desired position, given in [m] * @param theta the desired θ, given in [rad] @@ -166,92 +156,92 @@ float theta); /** - * Gets the desired θ of the goal point. + * @brief Gets the desired θ of the goal point. * @return the desired θ, given in [rad] */ float getTheta(); /** - * Gets the desired translational speed of the robot. + * @brief Gets the desired translational speed of the robot. * @return the desired speed, given in [m/s] */ float getDesiredSpeed(); /** - * Gets the actual translational speed of the robot. + * @brief Gets the actual translational speed of the robot. * @return the desired speed, given in [m/s] */ float getActualSpeed(); /** - * Gets the desired rotational speed of the robot. + * @brief Gets the desired rotational speed of the robot. * @return the desired speed, given in [rad/s] */ float getDesiredOmega(); /** - * Gets the actual rotational speed of the robot. + * @brief Gets the actual rotational speed of the robot. * @return the desired speed, given in [rad/s] */ float getActualOmega(); /** - * Gets the actual translational X-position of the robot. + * @brief Gets the actual translational X-position of the robot. * @return the actual position, given in [m] */ float getxActualPosition(); /** - * Gets the X-position following error of the robot. + * @brief Gets the X-position following error of the robot. * @return the position following error, given in [m] */ float getxPositionError(); /** - * Gets the actual translational Y-position of the robot. + * @brief Gets the actual translational Y-position of the robot. * @return the actual position, given in [m] */ float getyActualPosition(); /** - * Gets the Y-position following error of the robot. + * @brief Gets the Y-position following error of the robot. * @return the position following error, given in [m] */ float getyPositionError(); /** - * Gets the actual orientation of the robot. + * @brief Gets the actual orientation of the robot. * @return the orientation, given in [rad] */ float getActualTheta(); /** - * Gets the orientation following error of the robot. + * @brief Gets the orientation following error of the robot. * @return the orientation following error, given in [rad] */ float getThetaError(); /** - * Gets the distance to disired point. Calculate with pythagoras. + * @brief Gets the distance to disired point. Calculate with pythagoras. * @return distance to goal, given in [m] */ float getDistanceError(); /** - * Gets the θ ot the pointing vector to the goal right + * @brief Gets the θ ot the pointing vector to the goal right * the unicycle axis from actual point. * @return theta to goal, given in [rad] */ float getThetaErrorToGoal(); /** - * Gets the θ ot the pointing vector to the goal right the unicycle main axis. + * @brief Gets the θ ot the pointing vector to the goal right the unicycle main axis. * @return theta from the goal, given in [rad] */ float getThetaGoal(); /** - * Set all state to zero, except the X-position, y-position and θ. + * @brief Set all state to zero, except the X-position, y-position and θ. * @param xZeroPos Sets the start X-position, given in [m] * @param yZeroPos Sets the start y-position, given in [m] * @param theta Sets the start θ, given in [rad] @@ -260,7 +250,9 @@ float yZeroPos, float theta); - + /** + * @brief Run method actualize every period. + */ void run(); };