solaESKF_EIGEN
Dependencies: mbed LPS25HB_I2C LSM9DS1 PIDcontroller LoopTicker GPSUBX_UART_Eigen SBUS_without_mainfile MedianFilter Eigen UsaPack solaESKF_Eigen Vector3 CalibrateMagneto FastPWM
Diff: global.cpp
- Revision:
- 73:84ffa0166e6c
- Parent:
- 72:267e2cfddb0b
- Child:
- 74:f67062e7813e
--- a/global.cpp Wed Jun 30 01:16:21 2021 +0000 +++ b/global.cpp Thu Jul 15 05:26:15 2021 +0000 @@ -15,15 +15,16 @@ // io DigitalIn userButton(USER_BUTTON); SBUS sbus(PD_5, PD_6); +Joystick joystick(PC_3,PF_3,PF_5); // control FastPWM servoRight(PE_9); FastPWM servoLeft(PE_11); FastPWM servoThrust(PE_13); -PID pitchPID(5.0, 0,0,PID_dt); //rad -PID pitchratePID(0.5, 0.0, 0.0, PID_dt);//rad/s -PID rollPID(5.0,0.0,0.0,PID_dt); -PID rollratePID(5, 0.0, 0.0, PID_dt);//rad/s +PID pitchPID(20.0f*0.6f,20.0f*1.2f/2.0f,0.0,PID_dt); //rad +PID pitchratePID(0.075f*20.0f*2.0f, 0.0, 0.0, PID_dt);//rad/s +PID rollPID(6.0f*0.6f,6.0f*1.2f/1.0f,0.0,PID_dt); +PID rollratePID(0.075f*6.0f*1.0f, 0.0, 0.0, PID_dt);//rad/s errStateEKF ekf; // EKF class float rc[16]; @@ -42,6 +43,9 @@ Vector3 mag; Vector3 magref(0.65f, 0.0f, 0.75f); Vector3 gyro; +float de = 0.0f; +float da = 0.0f; +float dT = 0.0f; MedianFilter accMedian(3); MedianFilter gyroMedian(3); MedianFilter magMedian(3); @@ -52,18 +56,20 @@ float motorOut[1] = {1100.0f}; int calibrationFlag = 0; -int agoffset[6] = {0, 0, 0, -585, -83, 38 }; +int agoffset[6] = {0, 0, 0, -616, -108, 60}; float magbiasMin[3] = {-177.574768, 90.129456, -199.611603}; float magbiasMax[3] = {-108.064606, 160.956711, -125.601234}; float accMin[3] = {-0.958801, -1.016878, -1.054199}; float accMax[3] = { 1.050249, 0.965697, 0.946194}; -Vector3 rpy_align(8.798061f*M_PI/180.0f, 0.953862f*M_PI/180.0f, 0.0f*M_PI/180.0f -); +Vector3 rpy_align(8.798061f*M_PI/180.0f, 0.953862f*M_PI/180.0f, 0.0f*M_PI/180.0f); // UsaPack -valuePack posValues; +valuePack vp; + +// HIL +bool hilFlag = true; float mapfloat(float x, float in_min, float in_max, float out_min, float out_max) {