AHRS

Dependencies:   Eigen

Dependents:   IndNav_QK3_T265

AHRS.h

Committer:
altb2
Date:
2019-10-09
Revision:
20:1182bc29c195
Parent:
19:42ea6dd68185
Child:
21:31e01d3e0143

File content as of revision 20:1182bc29c195:

#ifndef AHRS_H_
#define AHRS_H_


#include "Mahony.h"
#include "MadgwickAHRS.h"
#include "LinearCharacteristics.h"
#include "LSM9DS1_i2c.h"
#include "Signal.h"
#include "EKF.h"
#include "matrix.h"
#include "Data_Logger.h"
#include "Read_Xtern_Sensors.h"

extern DATA_Xchange data;

class AHRS
{
public:

    AHRS(uint8_t,float,bool);

    virtual ~AHRS();

    float getRoll(uint8_t ft)
    {
        if(ft ==1)
            return ekf.get_est_state(0);
        else
            return Mahony_filter.getRollRadians();
    }

    float getPitch(uint8_t ft)
    {
        if(ft ==1)
            return ekf.get_est_state(1);
        else
            return Mahony_filter.getPitchRadians();
    }

    float getYaw()
    {
        return 0.0;
    }

    LSM9DS1 imu;
    Mahony Mahony_filter;
    EKF ekf;
    LinearCharacteristics raw_gx2gx;
    LinearCharacteristics raw_gy2gy;
    LinearCharacteristics raw_gz2gz;
    LinearCharacteristics raw_ax2ax;
    LinearCharacteristics raw_ay2ay;
    LinearCharacteristics raw_az2az;
    LinearCharacteristics raw_mx2mx;
    LinearCharacteristics raw_my2my;
    LinearCharacteristics raw_mz2mz;
    void read_imu_sensors(void);
    float xyzUS[3];
    float xyzAS[3];
    float rxryrzUS[3];
    float v_xyzOF[2];
    float xyzOF[3];
    float xyzLIDAR[3];
    float magnet_cal_0[3];
    void update();
    void update_as_thread(void);
    void start_loop(void);
private:

    float local_time;
    uint8_t filtertype;
    Signal signal;
    Thread thread;
    Ticker ticker;
    void sendSignal();
    float Ts;
    //DigitalOut dout3;

};

#endif