Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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-12
- Revision:
- 106:2d854e92cebb
- Parent:
- 104:20b8caa29185
- Child:
- 109:eb255fc4462b
File content as of revision 106:2d854e92cebb:
#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 "MagSphereCalibration.hpp"
#include "solaESKF.hpp"
#include "MedianFilter.hpp"
#include "GPSUBX_UART.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];
};
// 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;
extern MagSphereCalibration 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 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 float palt0;
extern int itow_status;
extern bool gpsUpdateFlag;
extern bool gpsLlh0Fixed;
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