New version of quadcopter software written to OO principles

Dependencies:   mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS

Committer:
joe4465
Date:
Fri May 08 09:07:38 2015 +0000
Revision:
4:9ffbf9101992
Parent:
3:4823d6750629
End of FYP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joe4465 2:969dfa4f2436 1 #include "mbed.h"
joe4465 2:969dfa4f2436 2 #include "Global.h"
joe4465 2:969dfa4f2436 3 #include "FreeIMU.h"
joe4465 2:969dfa4f2436 4 #include "filter.h"
joe4465 2:969dfa4f2436 5 #include "ConfigFileWrapper.h"
joe4465 2:969dfa4f2436 6 #include "Kalman.h"
joe4465 2:969dfa4f2436 7
joe4465 2:969dfa4f2436 8 #ifndef Imu_H
joe4465 2:969dfa4f2436 9 #define Imu_H
joe4465 2:969dfa4f2436 10
joe4465 2:969dfa4f2436 11 class Imu
joe4465 2:969dfa4f2436 12 {
joe4465 2:969dfa4f2436 13 public:
joe4465 2:969dfa4f2436 14 Imu(ConfigFileWrapper& configFileWrapper);
joe4465 2:969dfa4f2436 15 ~Imu();
joe4465 2:969dfa4f2436 16
joe4465 2:969dfa4f2436 17 struct Rate
joe4465 2:969dfa4f2436 18 {
joe4465 2:969dfa4f2436 19 double yaw;
joe4465 2:969dfa4f2436 20 double pitch;
joe4465 2:969dfa4f2436 21 double roll;
joe4465 2:969dfa4f2436 22 };
joe4465 2:969dfa4f2436 23
joe4465 2:969dfa4f2436 24 struct Angle
joe4465 2:969dfa4f2436 25 {
joe4465 2:969dfa4f2436 26 double yaw;
joe4465 2:969dfa4f2436 27 double pitch;
joe4465 2:969dfa4f2436 28 double roll;
joe4465 2:969dfa4f2436 29 };
joe4465 2:969dfa4f2436 30
joe4465 2:969dfa4f2436 31 struct Velocity
joe4465 2:969dfa4f2436 32 {
joe4465 2:969dfa4f2436 33 double x;
joe4465 2:969dfa4f2436 34 double y;
joe4465 2:969dfa4f2436 35 double z;
joe4465 2:969dfa4f2436 36 };
joe4465 2:969dfa4f2436 37
joe4465 4:9ffbf9101992 38 struct Acceleration
joe4465 4:9ffbf9101992 39 {
joe4465 4:9ffbf9101992 40 double x;
joe4465 4:9ffbf9101992 41 double y;
joe4465 4:9ffbf9101992 42 double z;
joe4465 4:9ffbf9101992 43 };
joe4465 4:9ffbf9101992 44
joe4465 2:969dfa4f2436 45 void enable(bool enable);
joe4465 2:969dfa4f2436 46
joe4465 2:969dfa4f2436 47 Rate getRate();
joe4465 2:969dfa4f2436 48 Angle getAngle(bool bias = true);
joe4465 3:4823d6750629 49 Velocity getVelocity(float time);
joe4465 3:4823d6750629 50 Velocity getVelocity();
joe4465 4:9ffbf9101992 51 Acceleration getAcceleration();
joe4465 2:969dfa4f2436 52 double getAltitude();
joe4465 2:969dfa4f2436 53
joe4465 2:969dfa4f2436 54 void zeroGyro();
joe4465 2:969dfa4f2436 55 void zeroBarometer();
joe4465 2:969dfa4f2436 56 void zeroAccel();
joe4465 3:4823d6750629 57 void setCurrentVelocity(Velocity velocity);
joe4465 2:969dfa4f2436 58
joe4465 2:969dfa4f2436 59 private:
joe4465 2:969dfa4f2436 60 FreeIMU _freeImu;
joe4465 2:969dfa4f2436 61 filter* _barometerZeroFilter;
joe4465 2:969dfa4f2436 62 filter* _barometerFilter;
joe4465 2:969dfa4f2436 63 Rate _rate;
joe4465 2:969dfa4f2436 64 Angle _angle;
joe4465 3:4823d6750629 65 Velocity _velocity;
joe4465 2:969dfa4f2436 66 float _barometerZero;
joe4465 2:969dfa4f2436 67 ConfigFileWrapper& _configFileWrapper;
joe4465 2:969dfa4f2436 68 float _accelZeroPitch;
joe4465 2:969dfa4f2436 69 float _accelZeroRoll;
joe4465 3:4823d6750629 70 Kalman* _kalmanXVelFilter;
joe4465 3:4823d6750629 71 Kalman* _kalmanYVelFilter;
joe4465 3:4823d6750629 72 Kalman* _kalmanZVelFilter;
joe4465 2:969dfa4f2436 73 };
joe4465 2:969dfa4f2436 74
joe4465 2:969dfa4f2436 75 #endif