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-10-20
Revision:
87:89bbbcdb667b
Parent:
86:456f00d52974
Child:
88:be349faa1976

File content as of revision 87:89bbbcdb667b:

#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 "ScErrStateEKF.hpp"
#include "MedianFilter.hpp"

#define MPU6050_PWR_MGMT_1   0x6B
#define MPU_ADDRESS  0x68
#define M_PI 3.141592f
#define ACCEL_FSR MPU6050_ACCEL_FS_8
#define ACCEL_SSF 4096.0f
#define GYRO_FSR MPU6050_GYRO_FS_250
#define GYRO_SSF 131.0f
#define MPU6050_LPF MPU6050_DLPF_BW_42
#define MPU6050_SAMPLERATE 0
#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 actData[4];
    int16_t commandIndex;
    int16_t commandVal;
};

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

// var

// communication
extern I2C i2c;  // sda, scl
extern UsaPack pc; // log - tail
extern Serial sd;
extern Serial twelite;

// io
extern DigitalIn userButton;
extern SBUS sbus;

// control
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 ScErrStateEKF ekf; // EKF class
extern int obsCount;

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


// position
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 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 int 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();

// hil.cpp
extern void getHILval();
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);


#endif