1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-13 03:20:00 +03:00

In GPS Rescue current altitude mode, ensure that return height is not less than climb height (#13276)

* ensure that return altitude is not negative with current height mode

* Update src/main/flight/gps_rescue.c

* Update src/main/flight/gps_rescue.c

* Update src/main/flight/gps_rescue.c

---------

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
This commit is contained in:
ctzsnooze 2024-03-19 07:00:47 +11:00 committed by GitHub
parent 3aabaf365d
commit 84d54051f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -195,16 +195,18 @@ static void setReturnAltitude(void)
// Set this to the user's intended descent distance, but not more than half the distance to home to ensure some fly home time
rescueState.intent.descentDistanceM = fminf(0.5f * rescueState.sensor.distanceToHomeM, gpsRescueConfig()->descentDistanceM);
const float initialClimbCm = gpsRescueConfig()->initialClimbM * 100.0f;
switch (gpsRescueConfig()->altitudeMode) {
case GPS_RESCUE_ALT_MODE_FIXED:
rescueState.intent.returnAltitudeCm = gpsRescueConfig()->returnAltitudeM * 100.0f;
break;
case GPS_RESCUE_ALT_MODE_CURRENT:
rescueState.intent.returnAltitudeCm = rescueState.sensor.currentAltitudeCm + gpsRescueConfig()->initialClimbM * 100.0f;
// climb above current altitude, but always return at least initial height above takeoff point, in case current altitude was negative
rescueState.intent.returnAltitudeCm = fmaxf(initialClimbCm, rescueState.sensor.currentAltitudeCm + initialClimbCm);
break;
case GPS_RESCUE_ALT_MODE_MAX:
default:
rescueState.intent.returnAltitudeCm = rescueState.intent.maxAltitudeCm + gpsRescueConfig()->initialClimbM * 100.0f;
rescueState.intent.returnAltitudeCm = rescueState.intent.maxAltitudeCm + initialClimbCm;
break;
}
}