From 7dd366d84e1bf6273182c4dc9a263853815d3f26 Mon Sep 17 00:00:00 2001 From: Randy Mackay <rmackay9@yahoo.com> Date: Wed, 30 Apr 2014 21:20:51 +0900 Subject: [PATCH] AC_WPNav: init_loiter sets speed, accel before calcing stopping distance The stopping distance depends upon the speed and acceleration so these must be updated first --- libraries/AC_WPNav/AC_WPNav.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/libraries/AC_WPNav/AC_WPNav.cpp b/libraries/AC_WPNav/AC_WPNav.cpp index d4fb3fa8f..57107b3a6 100644 --- a/libraries/AC_WPNav/AC_WPNav.cpp +++ b/libraries/AC_WPNav/AC_WPNav.cpp @@ -134,21 +134,19 @@ void AC_WPNav::set_loiter_target(const Vector3f& position, bool reset_I) /// init_loiter_target - initialize's loiter position and feed-forward velocity from current pos and velocity void AC_WPNav::init_loiter_target() { - Vector3f curr_vel = _inav->get_velocity(); + Vector3f curr_vel = _inav->get_velocity(); - // set target position - _pos_control.set_pos_target(_inav->get_position()); - - // initialise feed forward velocities to zero - _pos_control.set_desired_velocity(curr_vel.x, curr_vel.y); - - // initialise pos controller speed + // initialise pos controller speed and acceleration _pos_control.set_speed_xy(_loiter_speed_cms); - - // initialise pos controller acceleration _loiter_accel_cms = _loiter_speed_cms/2.0f; _pos_control.set_accel_xy(_loiter_accel_cms); + // set target position + _pos_control.set_target_to_stopping_point_xy(); + + // initialise feed forward velocities to zero + _pos_control.set_desired_velocity(curr_vel.x, curr_vel.y); + // initialise pilot input _pilot_accel_fwd_cms = 0; _pilot_accel_rgt_cms = 0; -- GitLab