![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
a
Dependencies: HCSR04_2 MPU6050_2 mbed SDFileSystem3
Fork of Autoflight2018_2 by
Revision 3:9dbb6d18a090, committed 2018-09-13
- Comitter:
- HARUKIDELTA
- Date:
- Thu Sep 13 10:41:14 2018 +0000
- Parent:
- 2:23daa5fa28b4
- Commit message:
- r
Changed in this revision
config/falfalla.h | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/config/falfalla.h Sat Sep 08 05:32:55 2018 +0000 +++ b/config/falfalla.h Thu Sep 13 10:41:14 2018 +0000 @@ -14,7 +14,7 @@ static float g_kiAIL=0.0; static float g_kdAIL=0.0; -static float g_rightloopROLL=-17.0; +static float g_rightloopROLL=0.0; static float g_rightloopPITCH=-6.3; static float g_leftloopROLL=16.0; static float g_leftloopPITCH=-6.0; @@ -33,14 +33,14 @@ #if NUMBER_FALFALLA == 1 //1号機 -const int16_t Trim_Falfalla[4] = {0,14,-100,-10}; +const int16_t Trim_Falfalla[4] = {-155,120,0,-240};//{0,14,-100,-10}; const float ExpMax_Falfalla[4] = {100,115,100,89}; const float ExpMin_Falfalla[4] = {100,47,100,110}; -const int8_t Reverce_falfalla[4] = {1,-1,1,1}; //Nutral:1 , Reverce:-1 +const int8_t Reverce_falfalla[4] = {-1,-1,1,1}; //Nutral:1 , Reverce:-1 #elif NUMBER_FALFALLA == 2 //2号機 -const int16_t Trim_Falfalla[4] = {0,12,0,2}; //rewrite -100 +const int16_t Trim_Falfalla[6] = {135,240,0,-240,240,-130};//{0,12,0,2}; const float ExpMax_Falfalla[4] = {100,115,100,103}; const float ExpMin_Falfalla[4] = {100,97,100,97}; const int16_t Reverce_falfalla[4] = {1,-1,1,-1}; //Nutral:1 , Reverce:-1
--- a/main.cpp Sat Sep 08 05:32:55 2018 +0000 +++ b/main.cpp Thu Sep 13 10:41:14 2018 +0000 @@ -35,7 +35,7 @@ #define GAIN_CONTROLVALUE_TO_PWM 3.0 #define RIGHT_ROLL -12.0 -#define RIGHT_PITCH -5.0 +#define RIGHT_PITCH 5.0 #define LEFT_ROLL 12.0 #define LEFT_PITCH -5.0 #define STRAIGHT_ROLL 4.0 @@ -43,7 +43,7 @@ #define TAKEOFF_THR 0.8 #define LOOP_THR 0.6 -#define g_rightloopRUD 1500 +//#define g_rightloopRUD 1500 #define RIGHT_ROLL_SHORT -12.0 #define RIGHT_PITCH_SHORT -5.0 @@ -53,6 +53,19 @@ #define GLIDE_ROLL -12.0 #define GLIDE_PITCH -3.0 +#define rightloopRUD 1250 +#define AIL_L_correctionrightloop 0 +#define rightloopshortRUD 1250 +#define AIL_L_correctionrightloopshort 0 +#define leftloopRUD 1500 +#define AIL_L_correctionleftloop -0 +#define leftloopshortRUD 1500 +#define AIL_L_correctionleftloopshort 0 +#define glideloopRUD 1300 + +#define AIL_L_RatioRising 0.5 +#define AIL_L_RatioDescent 2 + //コンパスキャリブレーション //SkipperS2基板 /* @@ -86,7 +99,7 @@ const float trim[4] = {Trim_Falfalla[0],Trim_Falfalla[1],Trim_Falfalla[2],Trim_Falfalla[3]}; const float expMax[4] = {ExpMax_Falfalla[0],ExpMax_Falfalla[1],ExpMax_Falfalla[2],ExpMax_Falfalla[3]}; const float expMin[4] = {ExpMin_Falfalla[0],ExpMin_Falfalla[1],ExpMin_Falfalla[2],ExpMin_Falfalla[3]}; -const int16_t reverce[4] = {ExpMin_Falfalla[0],Reverce_falfalla[1],Reverce_falfalla[2],Reverce_falfalla[3]}; +const int16_t reverce[4] = {Reverce_falfalla[0],Reverce_falfalla[1],Reverce_falfalla[2],Reverce_falfalla[3]}; SBUS sbus(PA_9, PA_10); //SBUS @@ -722,6 +735,9 @@ //controlValue[ROLL] = pid_RUD.calcPID(nowAngle[ROLL], targetAngle[ROLL], dt); controlValue[ROLL] = pid_AIL.calcPID(nowAngle[ROLL], targetAngle[ROLL], dt); //エルロンでロール制御 controlValue[PITCH] = pid_ELE.calcPID(nowAngle[PITCH], targetAngle[PITCH], dt); + + pc.printf("%f,%f",controlValue[ROLL],controlValue[PITCH]); + } void UpdateAutoPWM(float controlValue[3]){ @@ -730,7 +746,7 @@ addpwm[ROLL] = (float)GAIN_CONTROLVALUE_TO_PWM * controlValue[ROLL]; //センサ:右回転正(8月13日時点;左回転が正!) レバー:右回転正 autopwm[ELE] = trimpwm[ELE] + reverce[ELE] * addpwm[PITCH]; //rewrite - autopwm[AIL_R] = trimpwm[AIL_R] + reverce[AIL_R] * addpwm[AIL_R]; + autopwm[AIL_R] = trimpwm[AIL_R] - reverce[AIL_R] * addpwm[ROLL]; //autopwm[THR] = oldTHR; autopwm[ELE] = ThresholdMaxMin(autopwm[ELE], maxpwm[ELE], minpwm[ELE]); @@ -789,8 +805,8 @@ pwm[RUD] = autopwm[RUD]; pwm[DROP] = autopwm[DROP]; pwm[AIL_L] = autopwm[AIL_L]; - pc.printf("%d ,",pwm[AIL_R]);//R - pc.printf("%d ,\r\n",pwm[AIL_L]);//L + //pc.printf("%d ,",pwm[AIL_R]);//R + //pc.printf("%d ,\r\n",pwm[AIL_L]);//L //pc.printf("update_auto\r\n"); break; @@ -1186,12 +1202,15 @@ //右旋回 void UpdateTargetAngle_Rightloop(float targetAngle[3]){ //右旋回 - autopwm[RUD]=g_rightloopRUD; + autopwm[RUD]=rightloopRUD; targetAngle[ROLL] = g_rightloopROLL; targetAngle[PITCH] = g_rightloopPITCH ; autopwm[THR] = oldTHR;//SetTHRinRatio(g_loopTHR); - autopwm[AIL_L]=trimpwm[AIL_L]+(autopwm[AIL_R]-trimpwm[AIL_R])*0.5;//*inverse;//g_AIL_L_Ratio_rightloop; - pc.printf("",) + if(autopwm[AIL_R]>trimpwm[AIL_R]){ //エルロン上がりやすさ調節 + autopwm[AIL_L]=trimpwm[AIL_L]+AIL_L_correctionrightloop+(autopwm[AIL_R]-trimpwm[AIL_R])*AIL_L_RatioRising; + } + else autopwm[AIL_L]=trimpwm[AIL_L]+AIL_L_correctionrightloop+(autopwm[AIL_R]-trimpwm[AIL_R])*AIL_L_RatioDescent; + //autopwm[AIL_L]=trimpwm[AIL_L]+(autopwm[AIL_R]-trimpwm[AIL_R])*0.5;//*inverse;//g_AIL_L_Ratio_rightloop; //checkHeight(targetAngle); //pc.printf("Roll = %f, PITCH = %f, THR = %d \r\n", targetAngle[ROLL], targetAngle[PITCH], autopwm[THR]); } @@ -1251,7 +1270,7 @@ //pc.printf("\r\n"); //for(uint8_t i=0; i<3; i++) pc.printf("%3.2f\t",nowAngle[i]); //for(uint8_t i=0; i<2; i++) pc.printf("%3.2f\t",nowAngle[i]); //ロール、ピッチのみ 小数点以下2ケタ - //pc.printf("%d\t",autopwm[ELE]); pc.printf("%d\t",autopwm[RUD]); + pc.printf("%d\t",autopwm[AIL_R]); //pc.printf("%d\t",autopwm[RUD]); //pc.printf("%d",g_distance); //pc.printf("Mode: %c: ",g_buf[0]);