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 "rtos.h"
joe4465 2:969dfa4f2436 4 #include "Gps.h"
joe4465 2:969dfa4f2436 5 #include "Imu.h"
joe4465 2:969dfa4f2436 6 #include "Status.h"
joe4465 2:969dfa4f2436 7 #include "LidarLitePwm.h"
joe4465 2:969dfa4f2436 8 #include "Kalman.h"
joe4465 2:969dfa4f2436 9
joe4465 2:969dfa4f2436 10 #ifndef Sensors_H
joe4465 2:969dfa4f2436 11 #define Sensors_H
joe4465 2:969dfa4f2436 12
joe4465 2:969dfa4f2436 13 #define PI 3.14159265
joe4465 2:969dfa4f2436 14
joe4465 2:969dfa4f2436 15 class Sensors
joe4465 2:969dfa4f2436 16 {
joe4465 2:969dfa4f2436 17 public:
joe4465 2:969dfa4f2436 18 Sensors(Status& status, ConfigFileWrapper& configFileWrapper, PinName gpsPinTx, PinName gpsPinRx, PinName i2cSda, PinName i2cScl, PinName lidarInterrupt);
joe4465 2:969dfa4f2436 19 ~Sensors();
joe4465 2:969dfa4f2436 20
joe4465 2:969dfa4f2436 21 struct Position
joe4465 2:969dfa4f2436 22 {
joe4465 2:969dfa4f2436 23 double accelX;
joe4465 2:969dfa4f2436 24 double accelY;
joe4465 2:969dfa4f2436 25 double accelZ;
joe4465 2:969dfa4f2436 26 double latitude;
joe4465 2:969dfa4f2436 27 double longitude;
joe4465 2:969dfa4f2436 28 double computedX;
joe4465 2:969dfa4f2436 29 double computedY;
joe4465 2:969dfa4f2436 30 };
joe4465 2:969dfa4f2436 31
joe4465 2:969dfa4f2436 32 struct Altitude
joe4465 2:969dfa4f2436 33 {
joe4465 2:969dfa4f2436 34 double lidar;
joe4465 2:969dfa4f2436 35 double barometer;
joe4465 2:969dfa4f2436 36 double gps;
joe4465 2:969dfa4f2436 37 double computed;
joe4465 2:969dfa4f2436 38 };
joe4465 2:969dfa4f2436 39
joe4465 2:969dfa4f2436 40 void update();
joe4465 2:969dfa4f2436 41 Imu::Rate getRate();
joe4465 2:969dfa4f2436 42 Imu::Angle getAngle();
joe4465 2:969dfa4f2436 43 Gps::Value getGpsValues();
joe4465 2:969dfa4f2436 44 double getZVelocity();
joe4465 2:969dfa4f2436 45 Sensors::Altitude getAltitude();
joe4465 2:969dfa4f2436 46 Sensors::Position getPosition();
joe4465 2:969dfa4f2436 47 void enable(bool enable);
joe4465 2:969dfa4f2436 48 void zeroBarometer();
joe4465 2:969dfa4f2436 49 void updateImu();
joe4465 2:969dfa4f2436 50 void zeroAccel();
joe4465 2:969dfa4f2436 51
joe4465 2:969dfa4f2436 52 private:
joe4465 2:969dfa4f2436 53 void zeroGyro();
joe4465 2:969dfa4f2436 54 void updateGpsValues();
joe4465 2:969dfa4f2436 55 void updateAltitude();
joe4465 2:969dfa4f2436 56 void updateVelocity();
joe4465 2:969dfa4f2436 57 void updatePosition();
joe4465 2:969dfa4f2436 58 int getLidarAltitude();
joe4465 2:969dfa4f2436 59
joe4465 2:969dfa4f2436 60 Status& _status;
joe4465 2:969dfa4f2436 61 Imu::Rate _rate;
joe4465 2:969dfa4f2436 62 Imu::Angle _angle;
joe4465 2:969dfa4f2436 63 Position _position;
joe4465 2:969dfa4f2436 64 Altitude _altitude;
joe4465 2:969dfa4f2436 65 Gps::Value _gpsValues;
joe4465 2:969dfa4f2436 66 Imu* _imu;
joe4465 2:969dfa4f2436 67 Gps* _gps;
joe4465 2:969dfa4f2436 68 LidarLitePwm* _lidar;
joe4465 2:969dfa4f2436 69 Kalman* _altitudeKalmanFilter;
joe4465 2:969dfa4f2436 70 };
joe4465 2:969dfa4f2436 71
joe4465 2:969dfa4f2436 72 #endif