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-12-06
Revision:
24:7b9e3beb61d5
Parent:
17:f682b4a5686d

File content as of revision 24:7b9e3beb61d5:

#ifndef AttitudeEstimator_h
#define AttitudeEstimator_h

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

// 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;
    // LED digital output
    DigitalOut led_3_blue;
    // 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, psi_gyro;
    // Angular velocities bias (rad/s)
    float p_bias, q_bias, r_bias;
    
};

#endif