diff --git a/src/main/flight/interpolated_setpoint.c b/src/main/flight/interpolated_setpoint.c index fbe1000a48..0d54e87800 100644 --- a/src/main/flight/interpolated_setpoint.c +++ b/src/main/flight/interpolated_setpoint.c @@ -66,15 +66,16 @@ FAST_CODE_NOINLINE float interpolatedSpApply(int axis, bool newRcFrame, ffInterp const float ffBoostFactor = pidGetFfBoostFactor(); float clip = 1.0f; float boostAmount = 0.0f; - if (ffBoostFactor != 0.0f) { - if (pidGetSpikeLimitInverse()) { - clip = 1 / (1 + fabsf(setpointAcceleration * pidGetSpikeLimitInverse())); - clip *= clip; - } - - // prevent kick-back spike at max deflection - if (fabsf(rawSetpoint) < 0.95f * ffMaxRate[axis] || fabsf(setpointSpeed) > 3.0f * fabsf(prevSetpointSpeed[axis])) { - boostAmount = ffBoostFactor * setpointAcceleration; + if ((axis == FD_ROLL)||(axis == FD_PITCH)) { + if (ffBoostFactor != 0.0f) { + if (pidGetSpikeLimitInverse()) { + clip = 1 / (1 + (setpointAcceleration * setpointAcceleration * pidGetSpikeLimitInverse())); + clip *= clip; + } + // prevent kick-back spike at max deflection + if (fabsf(rawSetpoint) < 0.95f * ffMaxRate[axis]) { + boostAmount = ffBoostFactor * setpointAcceleration; + } } } prevSetpointSpeed[axis] = setpointSpeed; diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index efdd04d7c6..73c3c31d24 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -213,7 +213,7 @@ void resetPidProfile(pidProfile_t *pidProfile) .idle_pid_limit = 200, .idle_max_increase = 150, .ff_interpolate_sp = FF_INTERPOLATE_AVG, - .ff_spike_limit = 40, + .ff_spike_limit = 60, .ff_max_rate_limit = 100, .ff_boost = 15, );