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

Committer:
joe4465
Date:
2015-05-08
Revision:
4:9ffbf9101992
Parent:
3:4823d6750629

File content as of revision 4:9ffbf9101992:

#include "mbed.h"
#include "Global.h"
#include "FreeIMU.h"
#include "filter.h"
#include "ConfigFileWrapper.h"
#include "Kalman.h"

#ifndef Imu_H
#define Imu_H

class Imu                
{
  public:             
    Imu(ConfigFileWrapper& configFileWrapper);    
    ~Imu();
    
    struct Rate
    {
       double yaw;
       double pitch;
       double roll;
    };
    
    struct Angle
    {
       double yaw;
       double pitch;
       double roll;
    };  
    
    struct Velocity
    {
        double x;
        double y;
        double z;
    };  
    
    struct Acceleration
    {
        double x;
        double y;
        double z;
    }; 
    
    void enable(bool enable);
    
    Rate getRate();
    Angle getAngle(bool bias = true);
    Velocity getVelocity(float time);
    Velocity getVelocity();
    Acceleration getAcceleration();
    double getAltitude();
    
    void zeroGyro();
    void zeroBarometer();
    void zeroAccel();
    void setCurrentVelocity(Velocity velocity);
    
  private:
    FreeIMU _freeImu;
    filter* _barometerZeroFilter;
    filter* _barometerFilter;
    Rate _rate;
    Angle _angle;
    Velocity _velocity;
    float _barometerZero;
    ConfigFileWrapper& _configFileWrapper;
    float _accelZeroPitch;
    float _accelZeroRoll;
    Kalman* _kalmanXVelFilter;
    Kalman* _kalmanYVelFilter;
    Kalman* _kalmanZVelFilter;
};

#endif