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:
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 &theta; of the robot.
+     * @brief Sets the desired &theta; of the robot.
      * @param theta the desired &theta;, 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 &theta; of the robot.
+     * @brief Get the desired &theta; of the robot.
      * @return theta the desired &theta;, given in [rad]
      */
     float        getDesiredTheta();
 
     /**
-     * Sets the desired Position and &theta;.
+     * @brief Sets the desired Position and &theta;.
      * @param xposition the desired position, given in [m]
      * @param yposition the desired position, given in [m]
      * @param theta the desired &theta;, given in [rad]
@@ -166,92 +156,92 @@
                                            float theta);
 
     /**
-     * Gets the desired &theta; of the goal point.
+     * @brief Gets the desired &theta; of the goal point.
      * @return the desired &theta;, 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 &theta; ot the pointing vector to the goal right
+     * @brief Gets the &theta; 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 &theta; ot the pointing vector to the goal right the unicycle main axis.
+     * @brief Gets the &theta; 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 &theta;.
+     * @brief Set all state to zero, except the X-position, y-position and &theta;.
      * @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 &theta;, given in [rad]
@@ -260,7 +250,9 @@
                              float yZeroPos,
                              float theta);
 
-
+    /**
+     * @brief Run method actualize every period.
+     */
     void        run();
 };