diff --git a/flix/control.ino b/flix/control.ino index a87a340..b23c786 100644 --- a/flix/control.ino +++ b/flix/control.ino @@ -79,7 +79,7 @@ void interpretControls() { if (mode == STAB) { float yawTarget = attitudeTarget.getYaw(); - if (invalid(yawTarget) || controlYaw != 0) yawTarget = attitude.getYaw(); // reset yaw target if NAN or yaw rate is set + if (invalid(yawTarget) || controlYaw != 0) yawTarget = attitude.getYaw(); // reset yaw target if NAN or pilot commands yaw rate attitudeTarget = Quaternion::fromEuler(Vector(controlRoll * tiltMax, controlPitch * tiltMax, yawTarget)); ratesExtra = Vector(0, 0, -controlYaw * maxRate.z); // positive yaw stick means clockwise rotation in FLU } @@ -139,7 +139,7 @@ void controlTorque() { if (!torqueTarget.valid()) return; // skip torque control if (!armed || thrustTarget < 0.05) { - memset(motors, 0, sizeof(motors)); + memset(motors, 0, sizeof(motors)); // stop motors if no thrust return; } diff --git a/flix/failsafe.ino b/flix/failsafe.ino index d62ce07..2c24d36 100644 --- a/flix/failsafe.ino +++ b/flix/failsafe.ino @@ -4,6 +4,8 @@ // Fail-safe functions #define RC_LOSS_TIMEOUT 0.2 +#include "util.h" + #define DESCEND_TIME 3.0 // time to descend from full throttle to zero extern double controlTime; @@ -28,7 +30,7 @@ void autoFailsafe() { static float roll, pitch, yaw, throttle; if (roll != controlRoll || pitch != controlPitch || yaw != controlYaw || abs(throttle - controlThrottle) > 0.05) { - if (mode == AUTO && !isfinite(controlMode)) { + if (mode == AUTO && invalid(controlMode)) { mode = STAB; // regain control to the pilot } }