-
Notifications
You must be signed in to change notification settings - Fork 58
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add failsafe to prevent arming without prior zero throttle
- Loading branch information
Showing
2 changed files
with
19 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
// Copyright (c) 2024 Oleg Kalachev <[email protected]> | ||
// Repository: https://github.com/okalachev/flix | ||
|
||
// Fail-safe for RC loss | ||
// Fail-safe functions | ||
|
||
#define RC_LOSS_TIMEOUT 0.2 | ||
#define DESCEND_TIME 3.0 // time to descend from full throttle to zero | ||
|
@@ -10,13 +10,28 @@ extern double controlsTime; | |
extern int rollChannel, pitchChannel, throttleChannel, yawChannel; | ||
|
||
void failsafe() { | ||
armingFailsafe(); | ||
rcLossFailsafe(); | ||
} | ||
|
||
// Prevent arming without zero throttle input | ||
void armingFailsafe() { | ||
static double zeroThrottleTime; | ||
static double armingTime; | ||
if (!armed) armingTime = t; // stores the last time when the drone was disarmed, therefore contains arming time | ||
if (controlsTime > 0 && controls[throttleChannel] < 0.05) zeroThrottleTime = controlsTime; | ||
if (armingTime - zeroThrottleTime > 0.1) armed = false; // prevent arming if there was no zero throttle for 0.1 sec | ||
} | ||
|
||
// RC loss failsafe | ||
void rcLossFailsafe() { | ||
if (t - controlsTime > RC_LOSS_TIMEOUT) { | ||
descend(); | ||
} | ||
} | ||
|
||
// Smooth descend on RC lost | ||
void descend() { | ||
// Smooth descend on RC lost | ||
mode = STAB; | ||
controls[rollChannel] = 0; | ||
controls[pitchChannel] = 0; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters