diff --git a/.travis.yml b/.travis.yml index ca73f8c14..16b89723f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,51 +2,51 @@ env: # - RUNTESTS=True # - PUBLISHMETA=True # - PUBLISHDOCS=True - - TARGET=AFROMINI - - TARGET=AIORACERF3 - - TARGET=AIR32 - - TARGET=ALIENFLIGHTF1 +# - TARGET=AFROMINI +# - TARGET=AIORACERF3 +# - TARGET=AIR32 +# - TARGET=ALIENFLIGHTF1 - TARGET=ALIENFLIGHTF3 - TARGET=ALIENFLIGHTF4 - TARGET=BLUEJAYF4 - TARGET=CC3D - TARGET=CC3D_OPBL - - TARGET=CHEBUZZF3 - - TARGET=CJMCU - - TARGET=COLIBRI - - TARGET=COLIBRI_RACE - - TARGET=DOGE - - TARGET=EUSTM32F103RC - - TARGET=F4BY - - TARGET=FURYF3 +# - TARGET=CHEBUZZF3 +# - TARGET=CJMCU +# - TARGET=COLIBRI +# - TARGET=COLIBRI_RACE +# - TARGET=DOGE +# - TARGET=EUSTM32F103RC +# - TARGET=F4BY +# - TARGET=FURYF3 - TARGET=FURYF4 - - TARGET=IRCFUSIONF3 - - TARGET=KISSFC - - TARGET=LUX_RACE - - TARGET=MICROSCISKY - - TARGET=MOTOLAB +# - TARGET=IRCFUSIONF3 +# - TARGET=KISSFC +# - TARGET=LUX_RACE +# - TARGET=MICROSCISKY +# - TARGET=MOTOLAB - TARGET=NAZE - - TARGET=OLIMEXINO - - TARGET=OMNIBUS - - TARGET=OMNIBUSF4 - - TARGET=PIKOBLX - - TARGET=PORT103R +# - TARGET=OLIMEXINO +# - TARGET=OMNIBUS +# - TARGET=OMNIBUSF4 +# - TARGET=PIKOBLX +# - TARGET=PORT103R - TARGET=REVO - - TARGET=REVONANO - - TARGET=REVO_OPBL - - TARGET=RMDO - - TARGET=SINGULARITY - - TARGET=SIRINFPV +# - TARGET=REVONANO +# - TARGET=REVO_OPBL +# - TARGET=RMDO +# - TARGET=SINGULARITY +# - TARGET=SIRINFPV - TARGET=SPARKY - - TARGET=SPARKY2 - - TARGET=SPARKY_OPBL +# - TARGET=SPARKY2 +# - TARGET=SPARKY_OPBL - TARGET=SPRACINGF3 - TARGET=SPRACINGF3EVO - - TARGET=SPRACINGF3MINI +# - TARGET=SPRACINGF3MINI - TARGET=STM32F3DISCOVERY - - TARGET=VRRACE - - TARGET=X_RACERSPI - - TARGET=ZCOREF3 +# - TARGET=VRRACE +# - TARGET=X_RACERSPI +# - TARGET=ZCOREF3 # use new docker environment sudo: false diff --git a/src/main/config/config.c b/src/main/config/config.c index 0b9dff11e..eba97a76f 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -208,7 +208,7 @@ static void resetPidProfile(pidProfile_t *pidProfile) pidProfile->D8[ROLL] = 20; pidProfile->P8[PITCH] = 60; pidProfile->I8[PITCH] = 60; - pidProfile->D8[PITCH] = 25; + pidProfile->D8[PITCH] = 22; pidProfile->P8[YAW] = 80; pidProfile->I8[YAW] = 45; pidProfile->D8[YAW] = 20; @@ -234,15 +234,15 @@ static void resetPidProfile(pidProfile_t *pidProfile) pidProfile->yaw_p_limit = YAW_P_LIMIT_MAX; pidProfile->yaw_lpf_hz = 80; - pidProfile->rollPitchItermIgnoreRate = 200; - pidProfile->yawItermIgnoreRate = 50; + pidProfile->rollPitchItermIgnoreRate = 130; + pidProfile->yawItermIgnoreRate = 32; pidProfile->dterm_filter_type = FILTER_BIQUAD; pidProfile->dterm_lpf_hz = 100; // filtering ON by default pidProfile->dterm_notch_hz = 0; pidProfile->dterm_notch_cutoff = 150; pidProfile->deltaMethod = DELTA_FROM_MEASUREMENT; pidProfile->vbatPidCompensation = 0; - pidProfile->zeroThrottleStabilisation = PID_STABILISATION_OFF; + pidProfile->pidAtMinThrottle = PID_STABILISATION_OFF; // Betaflight PID controller parameters pidProfile->ptermSetpointWeight = 75; @@ -312,10 +312,9 @@ void resetEscAndServoConfig(escAndServoConfig_t *escAndServoConfig) { #ifdef BRUSHED_MOTORS escAndServoConfig->minthrottle = 1000; - escAndServoConfig->maxthrottle = 2000; #else - escAndServoConfig->minthrottle = 1150; - escAndServoConfig->maxthrottle = 1850; + escAndServoConfig->maxthrottle = 2000; + escAndServoConfig->minthrottle = 1070; #endif escAndServoConfig->mincommand = 1000; escAndServoConfig->servoCenterPulse = 1500; diff --git a/src/main/fc/mw.c b/src/main/fc/mw.c index 98ad21ba7..4f303c27a 100644 --- a/src/main/fc/mw.c +++ b/src/main/fc/mw.c @@ -537,7 +537,7 @@ void processRx(void) This is needed to prevent Iterm winding on the ground, but keep full stabilisation on 0 throttle while in air */ if (throttleStatus == THROTTLE_LOW && !airmodeIsActivated) { pidResetErrorGyroState(); - if (currentProfile->pidProfile.zeroThrottleStabilisation) + if (currentProfile->pidProfile.pidAtMinThrottle) pidStabilisationState(PID_STABILISATION_ON); else pidStabilisationState(PID_STABILISATION_OFF); diff --git a/src/main/flight/pid.h b/src/main/flight/pid.h index c4509887d..7a9092b62 100644 --- a/src/main/flight/pid.h +++ b/src/main/flight/pid.h @@ -90,7 +90,7 @@ typedef struct pidProfile_s { uint16_t yaw_p_limit; uint8_t dterm_average_count; // Configurable delta count for dterm uint8_t vbatPidCompensation; // Scale PIDsum to battery voltage - uint8_t zeroThrottleStabilisation; // Disable/Enable zero throttle stabilisation. Normally even without airmode P and D would be active. + uint8_t pidAtMinThrottle; // Disable/Enable pids on zero throttle. Normally even without airmode P and D would be active. // Betaflight PID controller parameters uint8_t toleranceBand; // Error tolerance area where toleranceBandReduction is applied under certain circumstances diff --git a/src/main/flight/pid_betaflight.c b/src/main/flight/pid_betaflight.c index 3ddb38e87..1dc81cc59 100644 --- a/src/main/flight/pid_betaflight.c +++ b/src/main/flight/pid_betaflight.c @@ -211,7 +211,7 @@ void pidBetaflight(const pidProfile_t *pidProfile, uint16_t max_angle_inclinatio // -----calculate I component. // Reduce strong Iterm accumulation during higher stick inputs float accumulationThreshold = (axis == YAW) ? pidProfile->yawItermIgnoreRate : pidProfile->rollPitchItermIgnoreRate; - float setpointRateScaler = constrainf(1.0f - (1.5f * (ABS(setpointRate[axis]) / accumulationThreshold)), 0.0f, 1.0f); + float setpointRateScaler = constrainf(1.0f - (ABS(setpointRate[axis]) / accumulationThreshold), 0.0f, 1.0f); // Handle All windup Scenarios // limit maximum integrator value to prevent WindUp diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 24f456230..60879a385 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -451,6 +451,7 @@ static const char * const lookupTableAccHardware[] = { "LSM303DLHC", "MPU6000", "MPU6500", + "MPU9250", "FAKE" }; @@ -790,8 +791,8 @@ const clivalue_t valueTable[] = { { "servo_lowpass_enable", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.mixerConfig.servo_lowpass_enable, .config.lookup = { TABLE_OFF_ON } }, #endif - { "rc_rate", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcRate8, .config.minmax = { 0, 300 } }, - { "rc_rate_yaw", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcYawRate8, .config.minmax = { 0, 300 } }, + { "rc_rate", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcRate8, .config.minmax = { 0, 255 } }, + { "rc_rate_yaw", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcYawRate8, .config.minmax = { 0, 255 } }, { "rc_expo", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcExpo8, .config.minmax = { 0, 100 } }, { "rc_yaw_expo", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcYawExpo8, .config.minmax = { 0, 100 } }, { "thr_mid", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].thrMid8, .config.minmax = { 0, 100 } }, @@ -842,7 +843,7 @@ const clivalue_t valueTable[] = { { "dterm_notch_hz", VAR_UINT16 | PROFILE_VALUE, &masterConfig.profile[0].pidProfile.dterm_notch_hz, .config.minmax = { 0, 500 } }, { "dterm_notch_cutoff", VAR_UINT16 | PROFILE_VALUE, &masterConfig.profile[0].pidProfile.dterm_notch_cutoff, .config.minmax = { 1, 500 } }, { "vbat_pid_compensation", VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, &masterConfig.profile[0].pidProfile.vbatPidCompensation, .config.lookup = { TABLE_OFF_ON } }, - { "zero_throttle_stabilisation",VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, &masterConfig.profile[0].pidProfile.zeroThrottleStabilisation, .config.lookup = { TABLE_OFF_ON } }, + { "pid_at_min_throttle", VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, &masterConfig.profile[0].pidProfile.pidAtMinThrottle, .config.lookup = { TABLE_OFF_ON } }, { "pid_tolerance_band", VAR_UINT8 | PROFILE_VALUE, &masterConfig.profile[0].pidProfile.toleranceBand, .config.minmax = {0, 200 } }, { "tolerance_band_reduction", VAR_UINT8 | PROFILE_VALUE, &masterConfig.profile[0].pidProfile.toleranceBandReduction, .config.minmax = {0, 100 } }, { "zero_cross_allowance", VAR_UINT8 | PROFILE_VALUE, &masterConfig.profile[0].pidProfile.zeroCrossAllowanceCount, .config.minmax = {0, 50 } }, @@ -927,7 +928,6 @@ const clivalue_t valueTable[] = { #define VALUE_COUNT (sizeof(valueTable) / sizeof(clivalue_t)) - typedef union { int32_t int_value; float float_value; @@ -940,8 +940,6 @@ static void cliPrint(const char *str); static void cliPrintf(const char *fmt, ...); static void cliWrite(uint8_t ch); -#define printSectionBreak() cliPrintf((char *)sectionBreak) - #define COMPARE_CONFIG(value) (masterConfig.value == defaultConfig.value) static bool cliDumpPrintf(uint8_t dumpMask, bool equalsDefault, const char *format, ...); @@ -1731,8 +1729,6 @@ static void printServo(uint8_t dumpMask, master_t *defaultConfig) ); } - printSectionBreak(); - // print servo directions unsigned int channel; for (i = 0; i < MAX_SUPPORTED_SERVOS; i++) { @@ -2022,10 +2018,9 @@ static void cliSdInfo(char *cmdline) { ; // Nothing more detailed to print break; } - - cliPrint("\r\n"); break; } + cliPrint("\r\n"); } #endif @@ -2326,14 +2321,12 @@ static void printConfig(char *cmdline, bool doDiff) if ((dumpMask & DUMP_MASTER) || (dumpMask & DUMP_ALL)) { cliPrint("\r\n# version\r\n"); cliVersion(NULL); - cliPrint("\r\n"); if ((dumpMask & (DUMP_ALL | DO_DIFF)) == (DUMP_ALL | DO_DIFF)) { cliPrint("\r\n# reset configuration to default settings\r\ndefaults\r\n"); } - printSectionBreak(); - cliPrint("# name\r\n"); + cliPrint("\r\n# name\r\n"); printName(dumpMask); cliPrint("\r\n# mixer\r\n"); @@ -2460,7 +2453,7 @@ static void printConfig(char *cmdline, bool doDiff) cliPrint("\r\n# adjrange\r\n"); printAdjustmentRange(dumpMask, &defaultConfig); - cliPrintf("\r\n# rxrange\r\n"); + cliPrint("\r\n# rxrange\r\n"); printRxRange(dumpMask, &defaultConfig); #ifdef USE_SERVOS @@ -2519,26 +2512,19 @@ static void cliDumpProfile(uint8_t profileIndex, uint8_t dumpMask, master_t *def { if (profileIndex >= MAX_PROFILE_COUNT) // Faulty values return; - changeProfile(profileIndex); cliPrint("\r\n# profile\r\n"); cliProfile(""); - - printSectionBreak(); dumpValues(PROFILE_VALUE, dumpMask, defaultConfig); - - cliRateProfile(""); } static void cliDumpRateProfile(uint8_t rateProfileIndex, uint8_t dumpMask, master_t *defaultConfig) { if (rateProfileIndex >= MAX_RATEPROFILES) // Faulty values - return; + return; changeControlRateProfile(rateProfileIndex); cliPrint("\r\n# rateprofile\r\n"); cliRateProfile(""); - printSectionBreak(); - dumpValues(PROFILE_RATE_VALUE, dumpMask, defaultConfig); } @@ -3338,7 +3324,7 @@ static void cliVersion(char *cmdline) { UNUSED(cmdline); - cliPrintf("# BetaFlight/%s %s %s / %s (%s)", + cliPrintf("# BetaFlight/%s %s %s / %s (%s)\r\n", targetName, FC_VERSION_STRING, buildDate,