solaESKF_EIGEN

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

global.hpp

Committer:
NaotoMorita
Date:
2021-09-16
Revision:
82:c183c29d2427
Parent:
77:2bf856e3eca4
Child:
83:e69ab831031c

File content as of revision 82:c183c29d2427:

#ifndef __GLOBAL_HPP__
#define __GLOBAL_HPP__

#include "mbed.h"
#include "SBUS.hpp"
#include "PIDcontroller.h"
#include "LoopTicker.hpp"
#include "MPU6050.h"
#include "MAG3110.h"
#include "CalibrateMagneto.h"
#include "I2Cdev.h"
#include "FastPWM.h"
#include <cmath>
#include "UsaPack.hpp"
#include "Vector3.hpp"
#include "ScErrStateEKF.hpp"
#include "MedianFilter.hpp"
#include "Joystick.h"

#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;
    float commandVal;
};

// var

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

// sensor
extern MPU6050 accelgyro;
extern MAG3110 mag_sensor;
extern CalibrateMagneto magCalibrator;

// io
extern DigitalIn userButton;
extern SBUS sbus;
extern Joystick joystick;

// 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;

extern int16_t ax, ay, az;
extern int16_t gx, gy, gz;
extern MotionSensorDataUnits mdata;
extern float magval[3];


// position
extern Vector3 rpy; // x:roll  y:pitch  z:yaw
extern Vector3 acc;
extern Vector3 accref;
extern Vector3 dynacc;
extern Vector3 mag;
extern Vector3 magref;
extern Vector3 gyro;
extern Vector3 vb;
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;

// 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();
extern float accScaleCalibrate(int attNo);

// run.cpp
extern void run();

// imu.cpp
extern void getIMUval();

// hil.cpp
extern void getHILval();
extern float randn();

// servo.cpp
extern void calcServoOut();

// sd_eeprom.cpp
extern void writeSdcard();

// global.cpp
extern float mapfloat(float x, float in_min, float in_max, float out_min, float out_max);


#endif