Crazyflie Attittude Controller

Dependencies:   mbed CrazyflieController CrazyflieSensors USBDevice

main.cpp

Committer:
IgneousGuikas
Date:
2018-10-08
Revision:
0:c5109053e100
Child:
1:65d0334fc83a

File content as of revision 0:c5109053e100:

#include "mbed.h"
#include "AttitudeEstimator.h"
#include "AttitudeController.h"
#include "Mixer.h"

//Declare attitude estimator object
AttitudeEstimator att_est;
//Declare attitude controller object
AttitudeController att_cont;
// Declare mixer
Mixer mixer;
// Declare timer object
Timer timer;
// Last interrupt time
float last_time = 0.0f;

int main()
{
    // Wait 5s for safety
    wait(5);
    //Initialize attitude estimator
    att_est.init();
    //Start timer
    timer.start();
    //Run controller for only 5s
    while( timer.read() <=5.0f)
    {
        // Wait 5ms (200 Hz) to perfom next estimate and control update
        while(( timer.read()-last_time ) <=0.005f)
        {
        }
        // Reset timmer
        last_time = timer.read();
        // Estimate attitude
        att_est.estimate();
        // Calculate torques (N.m) given estimated attitude ( rad and rad /s)
        att_cont.control(0.0f, 0.0f, 0.0f, att_est.phi, att_est.theta, att_est.psi, att_est.p, att_est.q, att_est.r);
        // Actuate motors with given force and calculated torques
        mixer.actuate(0.25f, att_cont.tau_phi, att_cont.tau_theta, att_cont.tau_psi);
    }
    //Turn off all motors
    mixer.actuate(0.0f, 0.0f, 0.0f, 0.0f);
    while (1)
    {
    
    }
}