Eigen Revision

Dependencies:   mbed LPS25HB_I2C LSM9DS1 PIDcontroller Autopilot_Eigen LoopTicker GPSUBX_UART_Eigen SBUS_without_mainfile MedianFilter Eigen UsaPack solaESKF_Eigen Vector3 CalibrateMagneto FastPWM

global.hpp

Committer:
osaka
Date:
2021-11-03
Revision:
97:2b3242c2dd85
Parent:
96:3645f8f9bdd3
Child:
98:bdaa6bbfb1d9

File content as of revision 97:2b3242c2dd85:

#ifndef __GLOBAL_HPP__
#define __GLOBAL_HPP__

#include "mbed.h"
#include "SBUS.hpp"
#include "PIDcontroller.h"
#include "LoopTicker.hpp"
#include "FastPWM.h"
#include <cmath>
#include "UsaPack.hpp"
#include "Vector3.hpp"
#include "Matrix.h"
#include "MatrixMath.h"
#include "LSM9DS1.h"
#include "LPS.h"
#include "solaESKF.hpp"
#include "MedianFilter.hpp"
#include "GPSUBX_UART.hpp"

#define M_PI 3.141592f
#define ACCEL_SSF 4096.0f
#define GYRO_SSF 131.0f
#define PID_dt 0.015f
#define servoPwmMax  1800.0f
#define servoPwmMin  1200.0f
#define motorPwmMax  2000.0f
#define motorPwmMin  1100.0f


struct valuePack
{
    int16_t accData[3];
    int16_t gyroData[3];
    int16_t magData[3];
    int16_t viData[3];
    int16_t piData[3];
    int16_t actData[4];
    int16_t commandIndex;
    int16_t commandVal;
};

struct sendPack
{
    float da;
    float de;
    float dT;
    float rpy[3];
    float vihat[3];
};

// var

// communication

extern UsaPack pc; // log - tail
extern Serial sd;
extern Serial twelite;

// io
extern DigitalIn userButton;
extern SBUS sbus;
extern I2C i2c;  // sda, scl
extern LSM9DS1 lsm;
extern LPS lps;
extern GPSUBX_UART gps;

// control
extern Timer _t;
extern FastPWM servoRight;
extern FastPWM servoLeft;
extern FastPWM servoThrust;
extern PID pitchPID; //rad
extern PID pitchratePID;//rad/s
extern PID rollPID;
extern PID rollratePID;//rad/s
extern solaESKF eskf; // EKF class
extern int obsCount;

extern float rc[16];
extern int loop_count;
extern float att_dt;


// position
extern Matrix SensorAlignment; 
extern Vector3 rpy; // x:roll  y:pitch  z:yaw
extern Vector3 acc;
extern Vector3 accref;
extern Vector3 mag;
extern Vector3 magref;
extern Vector3 gyro;
extern Vector3 vi;
extern Vector3 pi;
extern float palt;
extern int itow_velned;
extern int itow_posllh;

extern float de;
extern float da;
extern float dT;
extern MedianFilter accMedian;
extern MedianFilter gyroMedian;
extern MedianFilter magMedian;

extern float scaledServoOut[2];
extern float scaledMotorOut[1];
extern float servoOut[2];
extern float motorOut[1];


extern int calibrationFlag;
extern float agoffset[6];
extern float magbiasMin[3];
extern float magbiasMax[3];
extern float magbias[4];
extern float accMin[3];
extern float accMax[3];

extern Vector3 rpy_align;


//// UsaPack
extern valuePack vp;
extern sendPack sp;

// HIL
extern bool hilFlag;
extern bool serialControlSource;
extern bool serialParamSource;
extern int checkParamSerial[5];
// function

// main.cpp

// setup.cpp
extern void setup();
extern void calibrate();
// run.cpp
extern void run();

// imu.cpp
extern void getIMUval();

//gps.cpp
extern void getGPSval();
extern void change_refpos();

// hil.cpp
extern void getHilIMUval();
extern void getHilGPSval();
extern float randn();

// servo.cpp
extern void calcServoOut();

// transferData.cpp
extern void sendData2PC();
extern void sendTelemetry();
extern void writeSDcard();

// global.cpp
extern float mapfloat(float x, float in_min, float in_max, float out_min, float out_max);
extern void setDiag(Matrix& mat, float val);
extern void setBlockDiag(Matrix& mat, float val,int startIndex, int endIndex);
#endif