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:
Wed Apr 01 11:19:21 2015 +0000
Revision:
2:969dfa4f2436
Parent:
0:c6a85bb2a827
Child:
3:4823d6750629
Altitude hold with 2 PID's working. Exported to offline compiler

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 2:969dfa4f2436 38 void enable(bool enable);
joe4465 2:969dfa4f2436 39
joe4465 2:969dfa4f2436 40 Rate getRate();
joe4465 2:969dfa4f2436 41 Angle getAngle(bool bias = true);
joe4465 2:969dfa4f2436 42 float getVelocity(float time);
joe4465 2:969dfa4f2436 43 float getVelocity();
joe4465 2:969dfa4f2436 44 double getAltitude();
joe4465 2:969dfa4f2436 45
joe4465 2:969dfa4f2436 46 void zeroGyro();
joe4465 2:969dfa4f2436 47 void zeroBarometer();
joe4465 2:969dfa4f2436 48 void zeroAccel();
joe4465 2:969dfa4f2436 49 void setCurrentVelocity(float velocity);
joe4465 2:969dfa4f2436 50
joe4465 2:969dfa4f2436 51 private:
joe4465 2:969dfa4f2436 52 FreeIMU _freeImu;
joe4465 2:969dfa4f2436 53 filter* _barometerZeroFilter;
joe4465 2:969dfa4f2436 54 filter* _barometerFilter;
joe4465 2:969dfa4f2436 55 Rate _rate;
joe4465 2:969dfa4f2436 56 Angle _angle;
joe4465 2:969dfa4f2436 57 float _velocity;
joe4465 2:969dfa4f2436 58 float _barometerZero;
joe4465 2:969dfa4f2436 59 ConfigFileWrapper& _configFileWrapper;
joe4465 2:969dfa4f2436 60 float _accelZeroPitch;
joe4465 2:969dfa4f2436 61 float _accelZeroRoll;
joe4465 2:969dfa4f2436 62 Kalman* _kalmanFilter;
joe4465 2:969dfa4f2436 63 };
joe4465 2:969dfa4f2436 64
joe4465 2:969dfa4f2436 65 #endif