Testing ekf implementation for Quadro_1.

Dependencies:   mbed Eigen

main.cpp

Committer:
pmic
Date:
2019-10-18
Revision:
0:a0e9705be9c4
Child:
1:6b803652d032

File content as of revision 0:a0e9705be9c4:

#include "mbed.h"
//#include "Eigen/Dense.h"
#include "Eigen/Core.h"
#include "Eigen/Geometry.h"
#include "EKF_RP.h"

using namespace Eigen;

Serial pc(SERIAL_TX, SERIAL_RX);

// EKF_RP ekf_rp(0.02f);    // initialize counter on PB_6 and PB_7

Timer timer; // timer for time measurement
float dt = 0.0f;

uint32_t counter;

Matrix<float, 3, 3> A;
Matrix<float, 3, 1> b;
DiagonalMatrix<float, 3, 3> I;

// Matrix<float,4,1> mat = state.block(6,0,4,1);

int main()
{
    pc.baud(2000000);

    timer.start();

    counter = 0;
    
    A << 1,  2,  3,
         4,  5,  6,
         7,  8, 10;
    b << 3,
         3,
         4;
         
    // I.setIdentity();
    
    I.diagonal()[0] = 1;
    I.diagonal()[1] = 1;
    I.diagonal()[2] = 1;
    
    while(1) {
        
        Vector3f x = I * A.inverse() * b;
        
        // ekf_rp.update(0.0f, 0.0f, 0.0f, 0.0f);
        dt = timer.read();
        timer.reset();
        
        pc.printf("%i; %.6f; %.6f; %.6f; %.6f; \r\n", counter, b(0), b(1), b(2), 1.0f/dt);
        pc.printf("%i; %.6f; %.6f; %.6f;\r\n", counter, x(0), x(1), x(2));

        counter++;
        
        wait_us(1000000);
    }
}