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

StateDefines/defines.h

Committer:
chrigelburri
Date:
2013-03-26
Revision:
7:34be8b3a979c
Parent:
6:48eeb41188dd
Child:
8:696c2f9dfc62

File content as of revision 7:34be8b3a979c:

#ifndef _DEFINES_H_
#define _DEFINES_H_

#include "mbed.h"

// Physical dimensions
#define PI                    3.141592654f  // Physical dimensions π. 

// maxon motor #339282 EC 45 flat 30W and GEAR 
#define POLE_PAIRS            8u            // Number of of pole pairs
#define GEAR                  1/11.6f       // Gear on the motor 1/11.6f
#define PULSES_PER_STEP       6u            // Pulses per electrical step Hallsensor, have 6 steps

// Physical Dimension of the car
#define WHEEL_RADIUS_DIFF     0.00054        // positiv zu weit links, given in [m] 0.00059
#define WHEEL_RADIUS_LEFT     0.03930f        // radius of the left wheel, given in [m] 0.03945f
#define WHEEL_RADIUS_RIGHT    (WHEEL_RADIUS_LEFT + WHEEL_RADIUS_DIFF)        // radius of the left wheel, given in [m]
#define WHEEL_DISTANCE        0.1860f       // Distance of the wheel, given in [m] 0.1865f


// State Bits of the car
#define STATE_STOP            1u            // Bit0 = stop pressed 
#define STATE_UNDER           2u            // Bit1 = Undervoltage battery   
#define STATE_LEFT            4u            // Bit2 = left ESCON in error state
#define STATE_RIGHT           8u            // Bit3 = right ESCON in error state     

// ESCON Constands
#define ESCON_SET_FACTOR      1200.0f       // Speed Factor how set in the ESCON
#define ESCON_GET_FACTOR      1400.0f       // Speed Factor how get in the ESCON       

// Start Defintition
#define START_X_OFFSET        -0.8f         // Sets the start X-point [m]
#define START_Y_OFFSET        0.8f          // Sets the start Y-point [m]

// Maximum Aceeleration
#define ACCELERATION          0.25f         // maximum translational acceleration, given in [m/s2]
#define THETA_ACCELERATION    1.0f          // maximum rotational acceleration, given in [rad/s2]

// position controller
#define GAIN                  0.30f         // Main Gain
#define K1                    1.0f * GAIN
#define K2                    3.0f * GAIN
#define K3                    2.0f * GAIN   // deafult 2.0f
#define MIN_DISTANCE_ERROR    -0.02f         // min. Distance to switch the position controller off. Because when Distance Error goes to zero the ATAN2 is not define, given in [m]                 

// LiPo Batterie
#define BAT_MULTIPLICATOR     21.633333333f // R2 / (R1 + R2) = 0.153    R2= 10k , R1 = 1.8k 1/0.153 = 6.555  ---> 3.3 * 6.555 = 21.6333333f
#define BAT_MIN               17.5f         // minium operate voltage [V] Battery Type: 1SP1P LG-18650 --> nominal voltage 3.6V   --> 5 batterys ==> 5 * 3.5V = 17.5V

// Frequenz for the Task
#define PERIOD_COMPASS        0.050f        // 20Hz Rate for Compass HMC6352
#define PERIOD_ROBOTCONTROL   0.001f        // 1kHz Rate for Robot Control
#define PERIOD_STATE          0.001f        // 1kHz Rate for State Objekt 
#define PERIOD_ANDROID        0.1f          // 10Hz Rate for State Objekt 

// Compass Maxima und Minima for the Filter
#define SET_MAXIMAS_MINIMAS   true          // For Set the maximas und minimas when false the object search the maximas minimas by your own
/*#define COMP_X_MAX            344.464996f   // Maximum X-Range
#define COMP_Y_MAX            238.751282f   // Maximum Y-Range
#define COMP_Z_MAX            -266.899994f  // Maximum Z-Range not used in this side
#define COMP_X_MIN            -90.412109f   // Minimum X-Range
#define COMP_Y_MIN            -220.834808f  // Minimum Y-Range
#define COMP_Z_MIN            -356.000000f  // Minimun Z-Range not used in this side
*/
#define COMP_X_MAX            391.219910f   // Maximum X-Range
#define COMP_Y_MAX            382.915161f   // Maximum Y-Range      
#define COMP_Z_MAX            -237.855042f  // Maximum Z-Range not used in this side      
#define COMP_X_MIN            -169.952530f  // Minimum X-Range      
#define COMP_Y_MIN            -247.647675f  // Minimum Y-Range      
#define COMP_Z_MIN            -385.915009f  // Minimun Z-Range not used in this side 

// Android Buffer Size for communication
#define OUTL 100
#define INBL 100 

    /**
    * struct state
    * structure containing system sensor data
    **/
typedef struct state {
    /** millis Time [ms]*/
    int millis;
    /** Battery voltage [V] */
    float voltageBattery;
    /** Number of pulses left */
    int leftPulses;
    /** Number of pulses right */
    int rightPulses;
    /** Velocity left [m/s] */
    float leftVelocity;
    /** Velocity right [m/s] */
    float rightVelocity;
    /** Velocity of the car [m/s] */
    float velocity;
    /** Velocity rotation [°/s] */
    float omega;
    /** X-Axis from co-ordinate [m] */
    float xAxis;
    /** Y-Axis from co-ordinate [m] */
    float yAxis;
    /** X-Axis Error [m] */
    float xAxisError;
    /** X-Axis Error [m] */
    float yAxisError;
    /** Angle Error [°] */
    float angleError;
    /** Angle from Car [°] */
    float angle;
    /** Setpoint X-Axis [m] */
    float setxAxis;
    /** Setpoint Y-Axis [m] */
    float setyAxis;
    /** Setpoint Angel [°] */
    float setAngle;
    /** Right Distance Sensor [m] */
    float rightDist;
    /** Compass Angle [°] */
    float compassAngle;
    /** Compass X-Axis */
    float compassxAxis;
    /** Compass Y-Axis */
    float compassyAxis;
    /** State of the Car **/
    int state;
    /** distance to Goal */
    float rho;
    /** theta to goal */
    float lamda;
    /** theta from the goal */
    float delta;
} state_t;


#endif