From 15a60b9e1f303f6b18edf9b706bb05fa3ce9525d Mon Sep 17 00:00:00 2001 From: ctzsnooze Date: Mon, 26 Jul 2021 15:29:02 +1000 Subject: [PATCH] allow feedforward in level modes --- src/main/flight/pid.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index a76452305..2175e3cca 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -1100,9 +1100,11 @@ void FAST_CODE pidController(const pidProfile_t *pidProfile, timeUs_t currentTim pidRuntime.oldSetpointCorrection[axis] = setpointCorrection; #endif - // Only enable feedforward for rate mode and if launch control is inactive - const float feedforwardGain = (flightModeFlags || launchControlActive) ? 0.0f : pidRuntime.pidCoefficient[axis].Kf; + // no feedforward in launch control + float feedforwardGain = launchControlActive ? 0.0f : pidRuntime.pidCoefficient[axis].Kf; if (feedforwardGain > 0) { + // halve feedforward in Level mode since stick sensitivity is weaker by about half + feedforwardGain *= FLIGHT_MODE(ANGLE_MODE) ? 0.5f : 1.0f; // no transition if feedforwardTransition == 0 float transition = pidRuntime.feedforwardTransition > 0 ? MIN(1.f, getRcDeflectionAbs(axis) * pidRuntime.feedforwardTransition) : 1; float feedForward = feedforwardGain * transition * pidSetpointDelta * pidRuntime.pidFrequency;