Browse Source

Plane: increase landing airspeed scaled to headwind

mission-4.1.18
Tom Pittenger 8 years ago committed by Tom Pittenger
parent
commit
696828c144
  1. 31
      ArduPlane/navigation.cpp

31
ArduPlane/navigation.cpp

@ -84,8 +84,6 @@ void Plane::calc_airspeed_errors() @@ -84,8 +84,6 @@ void Plane::calc_airspeed_errors()
{
float airspeed_measured_cm = airspeed.get_airspeed_cm();
// Normal airspeed target
target_airspeed_cm = aparm.airspeed_cruise_cm;
// FBW_B airspeed target
if (control_mode == FLY_BY_WIRE_B ||
@ -94,31 +92,14 @@ void Plane::calc_airspeed_errors() @@ -94,31 +92,14 @@ void Plane::calc_airspeed_errors()
aparm.airspeed_min) *
channel_throttle->get_control_in()) +
((int32_t)aparm.airspeed_min * 100);
}
// Landing airspeed target
if (control_mode == AUTO) {
float land_airspeed = SpdHgt_Controller->get_land_airspeed();
switch (flight_stage) {
case AP_SpdHgtControl::FLIGHT_LAND_APPROACH:
if (land_airspeed >= 0) {
target_airspeed_cm = land_airspeed * 100;
}
break;
case AP_SpdHgtControl::FLIGHT_LAND_PREFLARE:
case AP_SpdHgtControl::FLIGHT_LAND_FINAL:
if (landing.pre_flare && landing.get_pre_flare_airspeed() > 0) {
// if we just preflared then continue using the pre-flare airspeed during final flare
target_airspeed_cm = landing.get_pre_flare_airspeed() * 100;
} else if (land_airspeed >= 0) {
target_airspeed_cm = land_airspeed * 100;
}
break;
} else if (control_mode == AUTO && landing.in_progress) {
// Landing airspeed target
target_airspeed_cm = landing.get_target_airspeed_cm(flight_stage);
default:
break;
}
} else {
// Normal airspeed target
target_airspeed_cm = aparm.airspeed_cruise_cm;
}
// Set target to current airspeed + ground speed undershoot,

Loading…
Cancel
Save