Library containing Crazyflie 2.0 controller classes: - Attitude estimator - Horizontal estimator - Vertical estimator - Attitude controller - Horizontal controller - Vertical controller - Mixer
Diff: AttitudeEstimator/AttitudeEstimator.h
- Revision:
- 0:b1f2c9e88e32
- Child:
- 1:24effec9e9aa
diff -r 000000000000 -r b1f2c9e88e32 AttitudeEstimator/AttitudeEstimator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AttitudeEstimator/AttitudeEstimator.h Fri Aug 31 18:41:31 2018 +0000 @@ -0,0 +1,43 @@ +#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