mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-13 19:40:31 +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:
parent
3aabaf365d
commit
84d54051f1
1 changed files with 5 additions and 3 deletions
|
@ -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
|
// 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);
|
rescueState.intent.descentDistanceM = fminf(0.5f * rescueState.sensor.distanceToHomeM, gpsRescueConfig()->descentDistanceM);
|
||||||
|
|
||||||
|
const float initialClimbCm = gpsRescueConfig()->initialClimbM * 100.0f;
|
||||||
switch (gpsRescueConfig()->altitudeMode) {
|
switch (gpsRescueConfig()->altitudeMode) {
|
||||||
case GPS_RESCUE_ALT_MODE_FIXED:
|
case GPS_RESCUE_ALT_MODE_FIXED:
|
||||||
rescueState.intent.returnAltitudeCm = gpsRescueConfig()->returnAltitudeM * 100.0f;
|
rescueState.intent.returnAltitudeCm = gpsRescueConfig()->returnAltitudeM * 100.0f;
|
||||||
break;
|
break;
|
||||||
case GPS_RESCUE_ALT_MODE_CURRENT:
|
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;
|
break;
|
||||||
case GPS_RESCUE_ALT_MODE_MAX:
|
case GPS_RESCUE_ALT_MODE_MAX:
|
||||||
default:
|
default:
|
||||||
rescueState.intent.returnAltitudeCm = rescueState.intent.maxAltitudeCm + gpsRescueConfig()->initialClimbM * 100.0f;
|
rescueState.intent.returnAltitudeCm = rescueState.intent.maxAltitudeCm + initialClimbCm;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue