Browse Source

Plane: limit target accel in POSITION1

don't ask for more than 2* transition limit, and reset when we enter
overshoot case
apm_2208
Andrew Tridgell 3 years ago
parent
commit
fa371b92a8
  1. 3
      ArduPlane/quadplane.cpp

3
ArduPlane/quadplane.cpp

@ -2535,7 +2535,7 @@ void QuadPlane::vtol_position_controller(void) @@ -2535,7 +2535,7 @@ void QuadPlane::vtol_position_controller(void)
Vector2f target_accel_cms;
bool have_target_yaw = false;
float target_yaw_deg;
const float target_accel = accel_needed(distance, sq(closing_groundspeed));
const float target_accel = MIN(accel_needed(distance, sq(closing_groundspeed)), transition_decel*2);
if (distance > 0.1) {
Vector2f diff_wp_norm = diff_wp.normalized();
target_speed_xy_cms = diff_wp_norm * target_speed * 100;
@ -2547,6 +2547,7 @@ void QuadPlane::vtol_position_controller(void) @@ -2547,6 +2547,7 @@ void QuadPlane::vtol_position_controller(void)
gcs().send_text(MAV_SEVERITY_INFO,"VTOL Overshoot d=%.1f cs=%.1f yerr=%.1f",
distance, closing_groundspeed, yaw_err_deg);
poscontrol.overshoot = true;
pos_control->set_accel_desired_xy_cmss(Vector2f());
}
if (poscontrol.overshoot) {
/* we have overshot the landing point or our nose is

Loading…
Cancel
Save