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-11-30
- Revision:
- 135:49f8916588da
- Parent:
- 134:d57c6b2a706b
- Child:
- 137:240588882ae2
File content as of revision 135:49f8916588da:
#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 "CalibrateMagneto.h" #include "solaESKF.hpp" #include "MedianFilter.hpp" #include "GPSUBX_UART.hpp" #include "Autopilot.hpp" #define magresThreshold 0.025f #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]; }; struct logPack { float time; float hertz; float gpsFix; float da; float de; float dT; float rpy[3]; float pihat[3]; float vihat[3]; float pi[3]; float vi[3]; float palt; float acc[3]; float gyro[3]; float mag[3]; float rc[16]; }; struct telemetryPack { float time; float hertz; float gpsFix; float rpy[3]; float pihat[3]; float vihat[3]; float dynaccNorm; }; // var // communication extern UsaPack pc; // log - tail extern UsaPack sd; extern UsaPack twelite; // io extern DigitalIn userButton; extern SBUS sbus; extern I2C i2c; // sda, scl extern LSM9DS1 lsm; extern LPS lps; extern GPSUBX_UART gps; extern CalibrateMagneto magCalibrator; extern float magres; // 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 Autopilot autopilot; extern float roll_obj; extern float pitch_obj; extern float dT_obj; extern float rc[16]; extern int loop_count; extern float att_dt; extern bool accmagSwitch; // position extern Matrix SensorAlignmentAG; extern Matrix SensorAlignmentMAG; extern Matrix euler; 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 float palt0; extern float dynaccnorm2; extern int itow_status; extern bool gpsUpdateFlag; extern bool gpsLlh0Fixed; extern bool headingUpdateFlag; 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; extern logPack lp; extern telemetryPack tp; // 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(); //autopilot.cpp extern void level_flight(); extern void point_guide(); extern void turning(); // 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