New version of quadcopter software written to OO principles
Dependencies: mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS
Sensors/Imu/Imu.h@4:9ffbf9101992, 2015-05-08 (annotated)
- 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?
User | Revision | Line number | New 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 |