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

Committer:
chrigelburri
Date:
Thu Mar 21 08:56:53 2013 +0000
Revision:
5:48a258f6335e
Parent:
4:3a97923ff2d4
Child:
6:48eeb41188dd
vor dem Gr?nden m?nd?li;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrigelburri 0:31f7be68e52d 1 #ifndef _DEFINES_H_
chrigelburri 0:31f7be68e52d 2 #define _DEFINES_H_
chrigelburri 0:31f7be68e52d 3
chrigelburri 0:31f7be68e52d 4 #include "mbed.h"
chrigelburri 0:31f7be68e52d 5
chrigelburri 3:92ba0254af87 6 // Physical dimensions
chrigelburri 3:92ba0254af87 7 #define PI 3.141592654f // Physical dimensions π.
chrigelburri 0:31f7be68e52d 8
chrigelburri 3:92ba0254af87 9 // maxon motor #339282 EC 45 flat 30W and GEAR
chrigelburri 3:92ba0254af87 10 #define POLE_PAIRS 8u // Number of of pole pairs
chrigelburri 5:48a258f6335e 11 #define GEAR 1/11.6f // Gear on the motor 1/11.6f
chrigelburri 3:92ba0254af87 12 #define PULSES_PER_STEP 6u // Pulses per step Hallsensor have 6 steps
chrigelburri 0:31f7be68e52d 13
chrigelburri 0:31f7be68e52d 14 // Physical Dimension of the car
chrigelburri 4:3a97923ff2d4 15 #define WHEEL_RADIUS 0.043f // radius of the wheel, given in [m]
chrigelburri 1:6cd533a712c6 16 #define WHEEL_DISTANCE 0.18f // Distance of the wheel, given in [m]
chrigelburri 0:31f7be68e52d 17
chrigelburri 0:31f7be68e52d 18 // State Bits of the car
chrigelburri 0:31f7be68e52d 19 #define STATE_STOP 1u // Bit0 = stop pressed
chrigelburri 0:31f7be68e52d 20 #define STATE_UNDER 2u // Bit1 = Undervoltage battery
chrigelburri 0:31f7be68e52d 21 #define STATE_LEFT 4u // Bit2 = left ESCON in error state
chrigelburri 0:31f7be68e52d 22 #define STATE_RIGHT 8u // Bit3 = right ESCON in error state
chrigelburri 0:31f7be68e52d 23
chrigelburri 3:92ba0254af87 24 // ESCON Constands
chrigelburri 5:48a258f6335e 25 #define ESCON_SET_FACTOR 1200.0f // Speed Factor how set in the ESCON
chrigelburri 5:48a258f6335e 26 #define ESCON_GET_FACTOR 1400.0f // Speed Factor how get in the ESCON
chrigelburri 0:31f7be68e52d 27
chrigelburri 0:31f7be68e52d 28 // Start Defintition
chrigelburri 2:d8e1613dc38b 29 #define START_X_OFFSET -0.8f // Sets the start X-point [m]
chrigelburri 0:31f7be68e52d 30 #define START_Y_OFFSET 0.8f // Sets the start Y-point [m]
chrigelburri 0:31f7be68e52d 31
chrigelburri 0:31f7be68e52d 32 // Maximum Aceeleration
chrigelburri 0:31f7be68e52d 33 #define ACCELERATION 0.25f // maximum translational acceleration, given in [m/s2]
chrigelburri 1:6cd533a712c6 34 #define THETA_ACCELERATION 1.0f // maximum rotational acceleration, given in [rad/s2]
chrigelburri 1:6cd533a712c6 35
chrigelburri 3:92ba0254af87 36 // position controller
chrigelburri 2:d8e1613dc38b 37 #define GAIN 0.30f // Main Gain
chrigelburri 2:d8e1613dc38b 38 #define K1 1.0f * GAIN
chrigelburri 2:d8e1613dc38b 39 #define K2 3.0f * GAIN
chrigelburri 2:d8e1613dc38b 40 #define K3 2.0f * GAIN
chrigelburri 5:48a258f6335e 41 #define MIN_DISTANCE_ERROR 0.03 // min. Distance to switch the position controller off. Because when Distance Error goes to zero the ATAN2 is not define, given in [m]
chrigelburri 0:31f7be68e52d 42
chrigelburri 0:31f7be68e52d 43 // LiPo Batterie
chrigelburri 2:d8e1613dc38b 44 #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
chrigelburri 2:d8e1613dc38b 45 #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
chrigelburri 2:d8e1613dc38b 46
chrigelburri 0:31f7be68e52d 47 // Frequenz for the Task
chrigelburri 0:31f7be68e52d 48 #define PERIOD_COMPASS 0.050f // 20Hz Rate for Compass HMC6352
chrigelburri 0:31f7be68e52d 49 #define PERIOD_ROBOTCONTROL 0.001f // 1kHz Rate for Robot Control
chrigelburri 0:31f7be68e52d 50 #define PERIOD_STATE 0.001f // 1kHz Rate for State Objekt
chrigelburri 0:31f7be68e52d 51 #define PERIOD_ANDROID 0.1f // 10Hz Rate for State Objekt
chrigelburri 0:31f7be68e52d 52
chrigelburri 0:31f7be68e52d 53 // Compass Maxima und Minima for the Filter
chrigelburri 0:31f7be68e52d 54 #define SET_MAXIMAS_MINIMAS true // For Set the maximas und minimas when false the object search the maximas minimas by your own
chrigelburri 0:31f7be68e52d 55 /*#define COMP_X_MAX 344.464996f // Maximum X-Range
chrigelburri 0:31f7be68e52d 56 #define COMP_Y_MAX 238.751282f // Maximum Y-Range
chrigelburri 0:31f7be68e52d 57 #define COMP_Z_MAX -266.899994f // Maximum Z-Range not used in this side
chrigelburri 0:31f7be68e52d 58 #define COMP_X_MIN -90.412109f // Minimum X-Range
chrigelburri 0:31f7be68e52d 59 #define COMP_Y_MIN -220.834808f // Minimum Y-Range
chrigelburri 0:31f7be68e52d 60 #define COMP_Z_MIN -356.000000f // Minimun Z-Range not used in this side
chrigelburri 0:31f7be68e52d 61 */
chrigelburri 0:31f7be68e52d 62 #define COMP_X_MAX 391.219910f // Maximum X-Range
chrigelburri 0:31f7be68e52d 63 #define COMP_Y_MAX 382.915161f // Maximum Y-Range
chrigelburri 0:31f7be68e52d 64 #define COMP_Z_MAX -237.855042f // Maximum Z-Range not used in this side
chrigelburri 0:31f7be68e52d 65 #define COMP_X_MIN -169.952530f // Minimum X-Range
chrigelburri 0:31f7be68e52d 66 #define COMP_Y_MIN -247.647675f // Minimum Y-Range
chrigelburri 0:31f7be68e52d 67 #define COMP_Z_MIN -385.915009f // Minimun Z-Range not used in this side
chrigelburri 0:31f7be68e52d 68
chrigelburri 2:d8e1613dc38b 69 /**
chrigelburri 2:d8e1613dc38b 70 * struct state
chrigelburri 2:d8e1613dc38b 71 * structure containing system sensor data
chrigelburri 2:d8e1613dc38b 72 **/
chrigelburri 0:31f7be68e52d 73 typedef struct state {
chrigelburri 0:31f7be68e52d 74 /** millis Time [ms]*/
chrigelburri 0:31f7be68e52d 75 int millis;
chrigelburri 0:31f7be68e52d 76 /** Battery voltage [V] */
chrigelburri 0:31f7be68e52d 77 float voltageBattery;
chrigelburri 0:31f7be68e52d 78 /** Number of pulses left */
chrigelburri 0:31f7be68e52d 79 int leftPulses;
chrigelburri 0:31f7be68e52d 80 /** Number of pulses right */
chrigelburri 0:31f7be68e52d 81 int rightPulses;
chrigelburri 0:31f7be68e52d 82 /** Velocity left [m/s] */
chrigelburri 0:31f7be68e52d 83 float leftVelocity;
chrigelburri 0:31f7be68e52d 84 /** Velocity right [m/s] */
chrigelburri 0:31f7be68e52d 85 float rightVelocity;
chrigelburri 0:31f7be68e52d 86 /** Velocity of the car [m/s] */
chrigelburri 0:31f7be68e52d 87 float velocity;
chrigelburri 0:31f7be68e52d 88 /** Velocity rotation [°/s] */
chrigelburri 0:31f7be68e52d 89 float omega;
chrigelburri 0:31f7be68e52d 90 /** X-Axis from co-ordinate [m] */
chrigelburri 0:31f7be68e52d 91 float xAxis;
chrigelburri 0:31f7be68e52d 92 /** Y-Axis from co-ordinate [m] */
chrigelburri 0:31f7be68e52d 93 float yAxis;
chrigelburri 0:31f7be68e52d 94 /** X-Axis Error [m] */
chrigelburri 0:31f7be68e52d 95 float xAxisError;
chrigelburri 0:31f7be68e52d 96 /** X-Axis Error [m] */
chrigelburri 0:31f7be68e52d 97 float yAxisError;
chrigelburri 0:31f7be68e52d 98 /** Angle Error [°] */
chrigelburri 0:31f7be68e52d 99 float angleError;
chrigelburri 0:31f7be68e52d 100 /** Angle from Car [°] */
chrigelburri 0:31f7be68e52d 101 float angle;
chrigelburri 0:31f7be68e52d 102 /** Setpoint X-Axis [m] */
chrigelburri 0:31f7be68e52d 103 float setxAxis;
chrigelburri 0:31f7be68e52d 104 /** Setpoint Y-Axis [m] */
chrigelburri 0:31f7be68e52d 105 float setyAxis;
chrigelburri 0:31f7be68e52d 106 /** Setpoint Angel [°] */
chrigelburri 0:31f7be68e52d 107 float setAngle;
chrigelburri 0:31f7be68e52d 108 /** Right Distance Sensor [m] */
chrigelburri 0:31f7be68e52d 109 float rightDist;
chrigelburri 0:31f7be68e52d 110 /** Compass Angle [°] */
chrigelburri 0:31f7be68e52d 111 float compassAngle;
chrigelburri 0:31f7be68e52d 112 /** Compass X-Axis */
chrigelburri 0:31f7be68e52d 113 float compassxAxis;
chrigelburri 0:31f7be68e52d 114 /** Compass Y-Axis */
chrigelburri 0:31f7be68e52d 115 float compassyAxis;
chrigelburri 0:31f7be68e52d 116 /** State of the Car **/
chrigelburri 0:31f7be68e52d 117 int state;
chrigelburri 2:d8e1613dc38b 118 /** distance to Goal */
chrigelburri 2:d8e1613dc38b 119 float rho;
chrigelburri 2:d8e1613dc38b 120 /** theta to goal */
chrigelburri 2:d8e1613dc38b 121 float lamda;
chrigelburri 2:d8e1613dc38b 122 /** theta from the goal */
chrigelburri 2:d8e1613dc38b 123 float delta;
chrigelburri 0:31f7be68e52d 124 } state_t;
chrigelburri 0:31f7be68e52d 125
chrigelburri 0:31f7be68e52d 126
chrigelburri 0:31f7be68e52d 127 #endif