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@70:99f974d8960e, 2021-06-29 (annotated)
- Committer:
- NaotoMorita
- Date:
- Tue Jun 29 08:07:55 2021 +0000
- Revision:
- 70:99f974d8960e
- Parent:
- 68:b9f6938fab9d
- Child:
- 73:84ffa0166e6c
commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cocorlow | 56:888379912f81 | 1 | #ifndef __GLOBAL_HPP__ |
cocorlow | 56:888379912f81 | 2 | #define __GLOBAL_HPP__ |
cocorlow | 56:888379912f81 | 3 | |
cocorlow | 56:888379912f81 | 4 | #include "mbed.h" |
NaotoMorita | 70:99f974d8960e | 5 | #include "SBUS.hpp" |
cocorlow | 56:888379912f81 | 6 | #include "PIDcontroller.h" |
cocorlow | 56:888379912f81 | 7 | #include "LoopTicker.hpp" |
cocorlow | 56:888379912f81 | 8 | #include "MPU6050.h" |
cocorlow | 56:888379912f81 | 9 | #include "MAG3110.h" |
NaotoMorita | 61:c05353850017 | 10 | #include "CalibrateMagneto.h" |
cocorlow | 56:888379912f81 | 11 | #include "I2Cdev.h" |
cocorlow | 56:888379912f81 | 12 | #include "FastPWM.h" |
cocorlow | 56:888379912f81 | 13 | #include <cmath> |
cocorlow | 56:888379912f81 | 14 | #include "UsaPack.hpp" |
cocorlow | 56:888379912f81 | 15 | #include "Vector3.hpp" |
NaotoMorita | 67:41fcdfb7cc5a | 16 | #include "errStateEKF.hpp" |
NaotoMorita | 70:99f974d8960e | 17 | #include "MedianFilter.hpp" |
cocorlow | 56:888379912f81 | 18 | |
cocorlow | 56:888379912f81 | 19 | #define MPU6050_PWR_MGMT_1 0x6B |
cocorlow | 56:888379912f81 | 20 | #define MPU_ADDRESS 0x68 |
cocorlow | 56:888379912f81 | 21 | #define M_PI 3.141592f |
cocorlow | 56:888379912f81 | 22 | #define ACCEL_FSR MPU6050_ACCEL_FS_8 |
cocorlow | 56:888379912f81 | 23 | #define ACCEL_SSF 4096.0f |
NaotoMorita | 70:99f974d8960e | 24 | #define GYRO_FSR MPU6050_GYRO_FS_250 |
NaotoMorita | 70:99f974d8960e | 25 | #define GYRO_SSF 131.0f |
cocorlow | 56:888379912f81 | 26 | #define MPU6050_LPF MPU6050_DLPF_BW_256 |
cocorlow | 56:888379912f81 | 27 | #define PID_dt 0.015f |
cocorlow | 56:888379912f81 | 28 | #define servoPwmMax 1800.0f |
cocorlow | 56:888379912f81 | 29 | #define servoPwmMin 1200.0f |
cocorlow | 56:888379912f81 | 30 | #define motorPwmMax 2000.0f |
cocorlow | 56:888379912f81 | 31 | #define motorPwmMin 1100.0f |
cocorlow | 56:888379912f81 | 32 | |
cocorlow | 56:888379912f81 | 33 | struct valuePack |
cocorlow | 56:888379912f81 | 34 | { |
cocorlow | 56:888379912f81 | 35 | float dt; |
cocorlow | 56:888379912f81 | 36 | int count; |
NaotoMorita | 68:b9f6938fab9d | 37 | float acc_vp[3]; |
NaotoMorita | 68:b9f6938fab9d | 38 | float gyro_vp[3]; |
NaotoMorita | 68:b9f6938fab9d | 39 | float mag_vp[3]; |
NaotoMorita | 68:b9f6938fab9d | 40 | float rpy_vp[3]; |
cocorlow | 56:888379912f81 | 41 | }; |
cocorlow | 56:888379912f81 | 42 | |
cocorlow | 56:888379912f81 | 43 | // var |
cocorlow | 56:888379912f81 | 44 | |
cocorlow | 56:888379912f81 | 45 | // communication |
cocorlow | 56:888379912f81 | 46 | extern I2C i2c; // sda, scl |
NaotoMorita | 64:e9661430f0e3 | 47 | extern UsaPack pc; // log - tail |
cocorlow | 56:888379912f81 | 48 | |
cocorlow | 56:888379912f81 | 49 | // sensor |
cocorlow | 56:888379912f81 | 50 | extern MPU6050 accelgyro; |
cocorlow | 56:888379912f81 | 51 | extern MAG3110 mag_sensor; |
NaotoMorita | 61:c05353850017 | 52 | extern CalibrateMagneto magCalibrator; |
cocorlow | 56:888379912f81 | 53 | |
cocorlow | 56:888379912f81 | 54 | // io |
cocorlow | 56:888379912f81 | 55 | extern DigitalIn userButton; |
NaotoMorita | 70:99f974d8960e | 56 | extern SBUS sbus; |
cocorlow | 56:888379912f81 | 57 | |
cocorlow | 56:888379912f81 | 58 | // control |
NaotoMorita | 70:99f974d8960e | 59 | extern FastPWM servoRight; |
NaotoMorita | 70:99f974d8960e | 60 | extern FastPWM servoLeft; |
NaotoMorita | 70:99f974d8960e | 61 | extern FastPWM servoThrust; |
NaotoMorita | 70:99f974d8960e | 62 | extern PID pitchPID; //rad |
NaotoMorita | 70:99f974d8960e | 63 | extern PID pitchratePID;//rad/s |
NaotoMorita | 70:99f974d8960e | 64 | extern PID rollPID; |
NaotoMorita | 70:99f974d8960e | 65 | extern PID rollratePID;//rad/s |
NaotoMorita | 67:41fcdfb7cc5a | 66 | extern errStateEKF ekf; // EKF class |
cocorlow | 56:888379912f81 | 67 | |
NaotoMorita | 70:99f974d8960e | 68 | extern float rc[16]; |
cocorlow | 56:888379912f81 | 69 | extern int loop_count; |
cocorlow | 56:888379912f81 | 70 | extern float att_dt; |
cocorlow | 56:888379912f81 | 71 | |
cocorlow | 56:888379912f81 | 72 | extern int16_t ax, ay, az; |
cocorlow | 56:888379912f81 | 73 | extern int16_t gx, gy, gz; |
cocorlow | 56:888379912f81 | 74 | extern MotionSensorDataUnits mdata; |
cocorlow | 56:888379912f81 | 75 | extern float magval[3]; |
cocorlow | 56:888379912f81 | 76 | |
NaotoMorita | 70:99f974d8960e | 77 | |
cocorlow | 56:888379912f81 | 78 | // position |
cocorlow | 56:888379912f81 | 79 | extern Vector3 rpy; // x:roll y:pitch z:yaw |
cocorlow | 56:888379912f81 | 80 | extern Vector3 acc; |
cocorlow | 56:888379912f81 | 81 | extern Vector3 accref; |
NaotoMorita | 68:b9f6938fab9d | 82 | extern Vector3 dynacc; |
cocorlow | 56:888379912f81 | 83 | extern Vector3 mag; |
cocorlow | 56:888379912f81 | 84 | extern Vector3 magref; |
cocorlow | 56:888379912f81 | 85 | extern Vector3 gyro; |
NaotoMorita | 70:99f974d8960e | 86 | extern MedianFilter accMedian; |
NaotoMorita | 70:99f974d8960e | 87 | extern MedianFilter gyroMedian; |
NaotoMorita | 70:99f974d8960e | 88 | extern MedianFilter magMedian; |
cocorlow | 56:888379912f81 | 89 | |
NaotoMorita | 64:e9661430f0e3 | 90 | extern float scaledServoOut[2]; |
NaotoMorita | 70:99f974d8960e | 91 | extern float scaledMotorOut[1]; |
NaotoMorita | 64:e9661430f0e3 | 92 | extern float servoOut[2]; |
NaotoMorita | 70:99f974d8960e | 93 | extern float motorOut[1]; |
cocorlow | 56:888379912f81 | 94 | |
NaotoMorita | 61:c05353850017 | 95 | |
cocorlow | 56:888379912f81 | 96 | extern int calibrationFlag; |
cocorlow | 56:888379912f81 | 97 | extern int agoffset[6]; |
NaotoMorita | 61:c05353850017 | 98 | extern float magbiasMin[3]; |
NaotoMorita | 61:c05353850017 | 99 | extern float magbiasMax[3]; |
NaotoMorita | 70:99f974d8960e | 100 | extern float accMin[3]; |
NaotoMorita | 70:99f974d8960e | 101 | extern float accMax[3]; |
cocorlow | 56:888379912f81 | 102 | |
cocorlow | 56:888379912f81 | 103 | extern Vector3 rpy_align; |
cocorlow | 56:888379912f81 | 104 | |
cocorlow | 56:888379912f81 | 105 | |
cocorlow | 56:888379912f81 | 106 | //// UsaPack |
NaotoMorita | 64:e9661430f0e3 | 107 | extern valuePack posValues; |
cocorlow | 56:888379912f81 | 108 | |
cocorlow | 56:888379912f81 | 109 | // function |
cocorlow | 56:888379912f81 | 110 | |
cocorlow | 56:888379912f81 | 111 | // main.cpp |
cocorlow | 56:888379912f81 | 112 | |
cocorlow | 56:888379912f81 | 113 | // setup.cpp |
cocorlow | 56:888379912f81 | 114 | extern void setup(); |
cocorlow | 56:888379912f81 | 115 | extern void calibrate(); |
NaotoMorita | 70:99f974d8960e | 116 | extern float accScaleCalibrate(int attNo); |
cocorlow | 56:888379912f81 | 117 | |
cocorlow | 56:888379912f81 | 118 | // run.cpp |
cocorlow | 56:888379912f81 | 119 | extern void run(); |
cocorlow | 56:888379912f81 | 120 | |
cocorlow | 56:888379912f81 | 121 | // imu.cpp |
cocorlow | 56:888379912f81 | 122 | extern void getIMUval(); |
cocorlow | 56:888379912f81 | 123 | |
cocorlow | 56:888379912f81 | 124 | // servo.cpp |
cocorlow | 56:888379912f81 | 125 | extern void calcServoOut(); |
cocorlow | 56:888379912f81 | 126 | |
cocorlow | 56:888379912f81 | 127 | // sd_eeprom.cpp |
cocorlow | 56:888379912f81 | 128 | extern void writeSdcard(); |
cocorlow | 56:888379912f81 | 129 | |
cocorlow | 56:888379912f81 | 130 | // global.cpp |
cocorlow | 56:888379912f81 | 131 | extern float mapfloat(float x, float in_min, float in_max, float out_min, float out_max); |
cocorlow | 56:888379912f81 | 132 | |
NaotoMorita | 67:41fcdfb7cc5a | 133 | |
cocorlow | 56:888379912f81 | 134 | #endif |