Library containing Crazyflie 2.0 controller classes: - Attitude estimator - Horizontal estimator - Vertical estimator - Attitude controller - Horizontal controller - Vertical controller - Mixer

AttitudeEstimator/AttitudeEstimator.h

Committer:
fbob
Date:
2018-08-31
Revision:
0:b1f2c9e88e32
Child:
1:24effec9e9aa

File content as of revision 0:b1f2c9e88e32:

#ifndef AttitudeEstimator_h
#define AttitudeEstimator_h

#include "mbed.h"
#include "MPU9250.h"

// Estimator constants 
float const rho = 0.05f;
float const dt = 0.005f;

// Attitude estimator class
class AttitudeEstimator
{
  public:
    // Class constructor
    AttitudeEstimator();
    // Initialize class
    void init();
    // Estimate Euler angles (rad) and angular velocities (rad/s)
    void estimate();
    // Euler angles (rad)
    float phi, theta, psi;
    // Angular velocities (rad/s)
    float p, q, r;
  private:
    // IMU sensor object
    MPU9250 imu;
    // Calibrates gyroscope by calculating angular velocity bias (rad/s)
    void calibrate_gyro();
    // Estimate Euler angles (rad) from accelerometer data
    void estimate_accel();
    // Estimate Euler angles (rad) and angular velocities (rad/s) from gyroscope data
    void estimate_gyro();
    // Euler angles (rad) from accelerometer data
    float phi_accel, theta_accel;
    // Euler angles (rad) from gyroscope data
    float phi_gyro, theta_gyro;
    // Angular velocities bias (rad/s)
    float p_bias, q_bias, r_bias;
    
};

#endif