From 8c49a40516add40a8c1c339f05c483a733934b9f Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Mon, 20 Oct 2025 23:01:17 +0300 Subject: [PATCH] Skip attitude/rate control if thrustTarget is ineffective To prevent i term windup. --- flix/control.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flix/control.ino b/flix/control.ino index 40c1f21..4de742c 100644 --- a/flix/control.ino +++ b/flix/control.ino @@ -99,7 +99,7 @@ void interpretControls() { } void controlAttitude() { - if (!armed || attitudeTarget.invalid()) return; // skip attitude control + if (!armed || attitudeTarget.invalid() || thrustTarget < 0.1) return; // skip attitude control const Vector up(0, 0, 1); Vector upActual = Quaternion::rotateVector(up, attitude); @@ -116,7 +116,7 @@ void controlAttitude() { void controlRates() { - if (!armed || ratesTarget.invalid()) return; // skip rates control + if (!armed || ratesTarget.invalid() || thrustTarget < 0.1) return; // skip rates control Vector error = ratesTarget - rates;