Merge pull request #9990 from ctzsnooze/refactor-Thrust-Linear-update

This commit is contained in:
Michael Keller 2020-07-09 15:34:36 +12:00 committed by GitHub
commit 7bb2c26c43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 3 additions and 2 deletions

View File

@ -293,9 +293,8 @@ float pidCompensateThrustLinearization(float throttle)
{
if (pidRuntime.thrustLinearization != 0.0f) {
// for whoops where a lot of TL is needed, allow more throttle boost
const float throttleCompensateAmount = (1.0f - 0.5f * pidRuntime.thrustLinearization);
const float throttleReversed = (1.0f - throttle);
throttle /= 1.0f + throttleCompensateAmount * powerf(throttleReversed, 2) * pidRuntime.thrustLinearization;
throttle /= 1.0f + pidRuntime.throttleCompensateAmount * powerf(throttleReversed, 2);
}
return throttle;
}

View File

@ -351,6 +351,7 @@ typedef struct pidRuntime_s {
#ifdef USE_THRUST_LINEARIZATION
float thrustLinearization;
float throttleCompensateAmount;
#endif
#ifdef USE_AIRMODE_LPF

View File

@ -375,6 +375,7 @@ void pidInitConfig(const pidProfile_t *pidProfile)
#ifdef USE_THRUST_LINEARIZATION
pidRuntime.thrustLinearization = pidProfile->thrustLinearization / 100.0f;
pidRuntime.throttleCompensateAmount = pidRuntime.thrustLinearization - 0.5f * powerf(pidRuntime.thrustLinearization, 2);
#endif
#if defined(USE_D_MIN)
for (int axis = FD_ROLL; axis <= FD_YAW; ++axis) {