diff --git a/libraries/AC_WPNav/AC_WPNav.cpp b/libraries/AC_WPNav/AC_WPNav.cpp index 51daa3ce824fbfa86fd4a8ec78cd8d6c1db47bcb..8d8ecde4f66f7861d3441a16ed275da1bac0d626 100644 --- a/libraries/AC_WPNav/AC_WPNav.cpp +++ b/libraries/AC_WPNav/AC_WPNav.cpp @@ -531,9 +531,10 @@ void AC_WPNav::get_loiter_position_to_velocity(float dt, float max_speed_cms) dist_error.y = _target.y - curr.y; linear_distance = _wp_accel_cms/(2.0f*kP*kP); - _distance_to_target = linear_distance; // for reporting purposes dist_error_total = safe_sqrt(dist_error.x*dist_error.x + dist_error.y*dist_error.y); + _distance_to_target = dist_error_total; // for reporting purposes + if( dist_error_total > 2.0f*linear_distance ) { vel_sqrt = safe_sqrt(2.0f*_wp_accel_cms*(dist_error_total-linear_distance)); desired_vel.x = vel_sqrt * dist_error.x/dist_error_total;