Go to goal robot with follow wall algo

Dependencies:   mbed

Committer:
khaledelmadawi
Date:
Tue Apr 08 13:21:17 2014 +0000
Revision:
0:efef62b55c86
Follow wall

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaledelmadawi 0:efef62b55c86 1 #ifndef MBED_SpaceSsensor_H
khaledelmadawi 0:efef62b55c86 2 #define MBED_SpaceSsensor_H
khaledelmadawi 0:efef62b55c86 3 //#endif
khaledelmadawi 0:efef62b55c86 4 #include "mbed.h"
khaledelmadawi 0:efef62b55c86 5 #include "iostream"
khaledelmadawi 0:efef62b55c86 6 #include "math.h"
khaledelmadawi 0:efef62b55c86 7 using namespace std;
khaledelmadawi 0:efef62b55c86 8
khaledelmadawi 0:efef62b55c86 9 class SpaceSensor {
khaledelmadawi 0:efef62b55c86 10 public:
khaledelmadawi 0:efef62b55c86 11 SpaceSensor(PinName p_tx, PinName p_rx);
khaledelmadawi 0:efef62b55c86 12 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 13 /*4.3.1 Commands for Reading Filtered Sensor Data
khaledelmadawi 0:efef62b55c86 14 These commands return sensor data which has been filtered using a Kalman filter. None of these commands take any
khaledelmadawi 0:efef62b55c86 15 parameters, they only return data.
khaledelmadawi 0:efef62b55c86 16 */
khaledelmadawi 0:efef62b55c86 17 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 18 void ReadfilteredtaredQuaternion(float *Quaternion);
khaledelmadawi 0:efef62b55c86 19 void ReadfilteredtaredEulerAngles(float *EulerAngles);
khaledelmadawi 0:efef62b55c86 20 void ReadfilteredtaredRotationMatrix(float *RotationMatrix);
khaledelmadawi 0:efef62b55c86 21 void ReadfilteredtaredAxisAngle(float *Axis,float *Angle);
khaledelmadawi 0:efef62b55c86 22 void ReadfilteredtaredTwoVector(float *Forward,float *Down);
khaledelmadawi 0:efef62b55c86 23
khaledelmadawi 0:efef62b55c86 24 void Readfilteredgyrorates(float *Quaternion);
khaledelmadawi 0:efef62b55c86 25
khaledelmadawi 0:efef62b55c86 26 void ReadfiltereduntaredQuaternion(float *Quaternion);
khaledelmadawi 0:efef62b55c86 27 void ReadfiltereduntaredEulerAngles(float *EulerAngles);
khaledelmadawi 0:efef62b55c86 28 void ReadfiltereduntaredRotationMatrix(float *RotationMatrix);
khaledelmadawi 0:efef62b55c86 29 void ReadfiltereduntaredAxisAngle(float *Axis,float *Angle);
khaledelmadawi 0:efef62b55c86 30 void ReadfiltereduntaredTwoVector(float *Forward,float *Down);
khaledelmadawi 0:efef62b55c86 31
khaledelmadawi 0:efef62b55c86 32 void ReadfilteredtaredForwardandDownVectors(float *Forward,float *Down);
khaledelmadawi 0:efef62b55c86 33 void ReadfilteredNorthEarthVectors(float *North,float *Earth);
khaledelmadawi 0:efef62b55c86 34 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 35 /*4.3.2 Commands for Interfacing with Electronic Systems*/
khaledelmadawi 0:efef62b55c86 36 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 37 void Setinterrupttype(int mode);
khaledelmadawi 0:efef62b55c86 38 void Readinterrupttype(int *interrupttype);
khaledelmadawi 0:efef62b55c86 39 void Readinterruptstatus(int *interruptstatus);
khaledelmadawi 0:efef62b55c86 40 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 41 /*4.3.3 Commands for Reading Normalized Sensor Data
khaledelmadawi 0:efef62b55c86 42 These commands return sensor data which has been converted from a raw form. In the case of the normalized
khaledelmadawi 0:efef62b55c86 43 accelerometer and compass, the data returned are unit vectors, and as such, have no magnitude data associated with
khaledelmadawi 0:efef62b55c86 44 them. For data that represents real world quantities, both the unnormalized accelerometer command and unnormalized
khaledelmadawi 0:efef62b55c86 45 compass command return data in units of g and gauss respectively. Normalized gyro data is returned in radians/sec.
khaledelmadawi 0:efef62b55c86 46 */
khaledelmadawi 0:efef62b55c86 47 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 48 void Readall(float *gyro,float *accelerometer,float *compass);
khaledelmadawi 0:efef62b55c86 49 void Readgyros(float *gyro);
khaledelmadawi 0:efef62b55c86 50 void Readaccelerometer(float *accelerometer);
khaledelmadawi 0:efef62b55c86 51 void Readcompass(float *compass);
khaledelmadawi 0:efef62b55c86 52 void ReadtemperatureC(float *temp);
khaledelmadawi 0:efef62b55c86 53 void ReadtemperatureF(float *temp);
khaledelmadawi 0:efef62b55c86 54 void Readconfidencefactor(float *confidencefactor);
khaledelmadawi 0:efef62b55c86 55 void Readaccelerometerunnormalized(float *accelunnormalized);
khaledelmadawi 0:efef62b55c86 56 void Readcompassunnormalized(float *compassunnormalized);
khaledelmadawi 0:efef62b55c86 57 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 58 /*4.3.4 Commands for Reading Raw Sensor Data
khaledelmadawi 0:efef62b55c86 59 These commands return sensor data just as it was when it was read from each sensor. None of these commands take any
khaledelmadawi 0:efef62b55c86 60 parameters, they only return data.
khaledelmadawi 0:efef62b55c86 61 */
khaledelmadawi 0:efef62b55c86 62 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 63 void Readallraw(float *gyro,float *accelerometer,float *compass);
khaledelmadawi 0:efef62b55c86 64 void Readgyroraw(float *gyro);
khaledelmadawi 0:efef62b55c86 65 void Readaccelerometerraw(float *accelerometer);
khaledelmadawi 0:efef62b55c86 66 void Readcompassraw(float *compass);
khaledelmadawi 0:efef62b55c86 67 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 68 /*4.3.5 Commands for Setting Filter Parameters
khaledelmadawi 0:efef62b55c86 69 These commands allow the configuration of parameters associated with the Kalman filter. Most of these commands
khaledelmadawi 0:efef62b55c86 70 take parameters, none return any data.
khaledelmadawi 0:efef62b55c86 71 */
khaledelmadawi 0:efef62b55c86 72 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 73 void Tarewithcurrentorientation();
khaledelmadawi 0:efef62b55c86 74 void Tarewithquaternion(float Quaternion[4]);
khaledelmadawi 0:efef62b55c86 75 void Tarewithrotationmatrix(float RotationMatrix[9]);
khaledelmadawi 0:efef62b55c86 76 void SetStaticRhoModeAccelerometer(float rho);
khaledelmadawi 0:efef62b55c86 77 void SetConfidenceRhoModeAccelerometer(float min,float max);
khaledelmadawi 0:efef62b55c86 78 void SetStaticRhoModeCompass(float rho);
khaledelmadawi 0:efef62b55c86 79 void SetConfidenceRhoModeCompass(float min, float max);
khaledelmadawi 0:efef62b55c86 80 void SetDesiredUpdateRate(int t);
khaledelmadawi 0:efef62b55c86 81 void SetMultiReferenceVectorsWithCurrentOrientation();
khaledelmadawi 0:efef62b55c86 82 void SetReferenceVectorMode(int mode);
khaledelmadawi 0:efef62b55c86 83 void SetOversampleRate(int rate);
khaledelmadawi 0:efef62b55c86 84 void EnableDisablegyros(int mode);
khaledelmadawi 0:efef62b55c86 85 void EnableDisableAccelerometer(int mode);
khaledelmadawi 0:efef62b55c86 86 void EnableDisableCompass(int mode);
khaledelmadawi 0:efef62b55c86 87 void ResetMultiReferenceVectorsToZero();
khaledelmadawi 0:efef62b55c86 88 void SetMultiReferenceResolution(int mode);
khaledelmadawi 0:efef62b55c86 89 void SetCompassMultiReferenceVector(int Index,float Vector[3]);
khaledelmadawi 0:efef62b55c86 90 void SetCompassMultiReferenceCheckVector(int Index,float Vector[3]);
khaledelmadawi 0:efef62b55c86 91 void SetAccelMultiReferenceVector(int Index,float Vector[3]);
khaledelmadawi 0:efef62b55c86 92 void SetAccelMultiReferenceCheckVector(int Index,float Vector[3]);
khaledelmadawi 0:efef62b55c86 93 void SetAxisDirections(int direction);
khaledelmadawi 0:efef62b55c86 94 void SetRunningAveragePercent(float Percent);
khaledelmadawi 0:efef62b55c86 95 void SetCompassReferenceVector(float Vector[3]);
khaledelmadawi 0:efef62b55c86 96 void SetAccelerometerReferenceVector(float Vector[3]);
khaledelmadawi 0:efef62b55c86 97 void ResetKalmanFilter();
khaledelmadawi 0:efef62b55c86 98 void SetAccelerometerRange(int Accelrange);
khaledelmadawi 0:efef62b55c86 99 void SetMultiReferenceWeightPower(float WeightPower);
khaledelmadawi 0:efef62b55c86 100 void EnableDisableFilter(int Mode);
khaledelmadawi 0:efef62b55c86 101 void SetRunningAverageMode(int Mode);
khaledelmadawi 0:efef62b55c86 102 void SetGyroscopeRange(int mode);
khaledelmadawi 0:efef62b55c86 103 void SetCompassRange(int mode);
khaledelmadawi 0:efef62b55c86 104 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 105 /*4.3.6 Commands for Reading Filter Parameters
khaledelmadawi 0:efef62b55c86 106 These commands allow the reading of parameters associated with the Kalman filter. All these commands return data,
khaledelmadawi 0:efef62b55c86 107 and accept no parameters.
khaledelmadawi 0:efef62b55c86 108 */
khaledelmadawi 0:efef62b55c86 109 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 110 void ReadTareOrientationQuaternion(float *Quaternion);
khaledelmadawi 0:efef62b55c86 111 void ReadTareOrientationRotationMatrix(float *RotationMatrix);
khaledelmadawi 0:efef62b55c86 112 void ReadRhoDataAccelerometer(int *Rhomode,float *minroh,float *maxroh);
khaledelmadawi 0:efef62b55c86 113 void ReadRhoDataCompass(int *Rhomode,float *minroh,float *maxroh);
khaledelmadawi 0:efef62b55c86 114 void ReadCurrentUpdateRate(int *rate);
khaledelmadawi 0:efef62b55c86 115 void ReadCompassReferenceVector(float *Vector);
khaledelmadawi 0:efef62b55c86 116 void ReadAccelerometerReferenceVector(float *Vector);
khaledelmadawi 0:efef62b55c86 117 void ReadReferenceVectorMode(int *Mode);
khaledelmadawi 0:efef62b55c86 118 void ReadCompassMultiReferenceVector(int Index,float *Vector);
khaledelmadawi 0:efef62b55c86 119 void ReadCompassMultiReferenceCheckVector(int Index,float *Vector);
khaledelmadawi 0:efef62b55c86 120 void ReadAccelMultiReferenceVector(int Index,float *Vector);
khaledelmadawi 0:efef62b55c86 121 void ReadAccelMultiReferenceCheckVector(int Index,float *Vector);
khaledelmadawi 0:efef62b55c86 122 void ReadGyroEnabledState(int *Mode);
khaledelmadawi 0:efef62b55c86 123 void ReadAccelerometerEnabledState(int *Mode);
khaledelmadawi 0:efef62b55c86 124 void ReadCompassEnabledState(int *Mode);
khaledelmadawi 0:efef62b55c86 125 void ReadAxisDirections(int *direction);
khaledelmadawi 0:efef62b55c86 126 void ReadOversampleRate(int *Rate);
khaledelmadawi 0:efef62b55c86 127 void ReadRunningAveragePercent(float *Percent);
khaledelmadawi 0:efef62b55c86 128 void ReadDesiredUpdateRate(float *rate);
khaledelmadawi 0:efef62b55c86 129 void ReadKalmanFilterCovarianceMatrix(float *CovarianceMatrix);
khaledelmadawi 0:efef62b55c86 130 void ReadAccelerometerRange(int *Accelrange);
khaledelmadawi 0:efef62b55c86 131 void ReadMultiReferenceWeightPower(float *WeightPower);
khaledelmadawi 0:efef62b55c86 132 void ReadMultiReferenceResolution(int *Resolution);
khaledelmadawi 0:efef62b55c86 133 void ReadNumberOfmultiReferenceCells(int *NumberOfCells);
khaledelmadawi 0:efef62b55c86 134 void ReadFilterEnableState(int *Mode);
khaledelmadawi 0:efef62b55c86 135 void ReadRunningAverageMode(int *Mode);
khaledelmadawi 0:efef62b55c86 136 void ReadGyroscopeRange(int *mode);
khaledelmadawi 0:efef62b55c86 137 void ReadCompassRange(int *mode);
khaledelmadawi 0:efef62b55c86 138 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 139 /*4.3.7 Commands for Calibration
khaledelmadawi 0:efef62b55c86 140 These commands allow the configuration and reading of calibration parameters and enabling of calibration modes.
khaledelmadawi 0:efef62b55c86 141 */
khaledelmadawi 0:efef62b55c86 142 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 143 void SetCompassCalibrationParameters(float Bias[3],float Matrix[9]);
khaledelmadawi 0:efef62b55c86 144 void SetAccelerometerCalibrationParameters(float Bias[3],float Matrix[9]);
khaledelmadawi 0:efef62b55c86 145 void ReadCompassCalibrationParameters(float *Bias,float *Matrix);
khaledelmadawi 0:efef62b55c86 146 void ReadAccelerometerCalibrationParameters(float *Bias,float *Matrix);
khaledelmadawi 0:efef62b55c86 147 void ReadGyroCalibrationParameters(float *Bias, float *range);
khaledelmadawi 0:efef62b55c86 148 void BeginGyroAutocalibration();
khaledelmadawi 0:efef62b55c86 149 void SetGyroCalibrationParameters(float Bias[3], float range[3]);
khaledelmadawi 0:efef62b55c86 150 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 151 /*4.3.8 General Commands
khaledelmadawi 0:efef62b55c86 152 These commands are for the configuration of the sensor as a whole as opposed to configuration of the filter or sensors.
khaledelmadawi 0:efef62b55c86 153 */
khaledelmadawi 0:efef62b55c86 154 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 155 void ReadSoftwareVersion(char *version);
khaledelmadawi 0:efef62b55c86 156 void RestoreFactorySettings();
khaledelmadawi 0:efef62b55c86 157 void CommitSettings();
khaledelmadawi 0:efef62b55c86 158 void SoftwareReset();
khaledelmadawi 0:efef62b55c86 159 void EnableWatchdogTimer(int timer);
khaledelmadawi 0:efef62b55c86 160 void DisableWatchdogTimer();
khaledelmadawi 0:efef62b55c86 161 void EnterFirmwareUpdateMode();
khaledelmadawi 0:efef62b55c86 162 void ReadHardwareVersion(char *version);
khaledelmadawi 0:efef62b55c86 163 void SetUARTBaudRate(int Baudrate);
khaledelmadawi 0:efef62b55c86 164 void GetUARTBaudRate(int *Baudrate);
khaledelmadawi 0:efef62b55c86 165 void SetUSBmode(int mode);
khaledelmadawi 0:efef62b55c86 166 void GetUSBmode(int *mode);
khaledelmadawi 0:efef62b55c86 167 void SetClockSpeed(int clock);
khaledelmadawi 0:efef62b55c86 168 void GetClockSpeed(int *clock);
khaledelmadawi 0:efef62b55c86 169 void GetSerialnumber(int *serialnum);
khaledelmadawi 0:efef62b55c86 170 void SetLEDColor(float color[3]);
khaledelmadawi 0:efef62b55c86 171 void GetLEDColor(float *color);
khaledelmadawi 0:efef62b55c86 172 void EnableDisableJoystick(int Mode);
khaledelmadawi 0:efef62b55c86 173 void EnableDisablemouse(int Mode);
khaledelmadawi 0:efef62b55c86 174 void ReadJoystickEnabledState(int *Mode);
khaledelmadawi 0:efef62b55c86 175 void ReadMouseEnabledState(int *Mode);
khaledelmadawi 0:efef62b55c86 176 void SetControlMode(float Controlclass,float controlindex,float handlerindex);
khaledelmadawi 0:efef62b55c86 177 void SetControlData(float Controlclass,float controlindex,float datapointindex,float datapoint );
khaledelmadawi 0:efef62b55c86 178 void ReadControlMode(float *Handlerindex, float Controlclass,float controlindex);
khaledelmadawi 0:efef62b55c86 179 void ReadControlData(float *Datapoint,float ControlClass,float controlIndex,float dataPointIndex);
khaledelmadawi 0:efef62b55c86 180 void SetMouseAbsoluteRelative(int Mode);
khaledelmadawi 0:efef62b55c86 181 void ReadMouseAbsoluteRelative(int *Mode);
khaledelmadawi 0:efef62b55c86 182 void SetjoystickAndMousePresentRemoved(int Mode);
khaledelmadawi 0:efef62b55c86 183 void ReadjoystickAndMousePresentRemoved(int *Mode);
khaledelmadawi 0:efef62b55c86 184 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 185 /*
khaledelmadawi 0:efef62b55c86 186 clases needed to interface with the sensor
khaledelmadawi 0:efef62b55c86 187 */
khaledelmadawi 0:efef62b55c86 188 /**********************************************************************************************************************/
khaledelmadawi 0:efef62b55c86 189
khaledelmadawi 0:efef62b55c86 190
khaledelmadawi 0:efef62b55c86 191 private:
khaledelmadawi 0:efef62b55c86 192 Serial _SpaceSensor;
khaledelmadawi 0:efef62b55c86 193 char *st;
khaledelmadawi 0:efef62b55c86 194 float *vecf;
khaledelmadawi 0:efef62b55c86 195 char var[10];
khaledelmadawi 0:efef62b55c86 196 void begin(long baud);
khaledelmadawi 0:efef62b55c86 197 void read_string(float *vector,char *c);
khaledelmadawi 0:efef62b55c86 198 };
khaledelmadawi 0:efef62b55c86 199
khaledelmadawi 0:efef62b55c86 200 #endif