Commit Graph

147 Commits

Author SHA1 Message Date
Leonard Hall 5ab2a19173 AC_WPNav: loiter limits lean angle for alt loss 2015-09-07 15:10:11 +09:00
Randy Mackay 7706102d1e AC_WPNav: add shift_loiter_target method
Shift the loiter target and freeze the feedforward if necessary
2015-08-31 18:00:24 +09:00
Andrew Tridgell f6f2973acd AC_WPNav: make changes in WPNAV_ACCEL take effect immediately
this makes it easier to tune the waypoint controller in auto mode
2015-08-31 11:10:35 +10:00
Gustavo Jose de Sousa ee2c388bb0 AC_WPNav: standardize inclusion of libaries headers
This commit changes the way libraries headers are included in source files:

 - If the header is in the same directory the source belongs to, so the
 notation '#include ""' is used with the path relative to the directory
 containing the source.

 - If the header is outside the directory containing the source, then we use
 the notation '#include <>' with the path relative to libraries folder.

Some of the advantages of such approach:

 - Only one search path for libraries headers.

 - OSs like Windows may have a better lookup time.
2015-08-11 16:28:41 +10:00
Randy Mackay fb9cc124c8 AC_WPNav: replace hardcoded 0.02 with pos_control dt 2015-08-05 14:14:54 +09:00
Leonard Hall 8195f45d6c AC_WPNav: fix spline height loss 2015-08-05 14:14:49 +09:00
Randy Mackay aa7a151fe5 AC_WPNav: init flags
Resolves Coverity warning
2015-06-08 14:46:39 +09:00
Randy Mackay 0077cac1b7 AC_WPNav: rename stop to brake 2015-05-17 14:44:33 +09:00
Randy Mackay 61c851885f AC_WPNav: remove unused set_spline_dest_and_vel 2015-05-13 22:40:08 +09:00
Randy Mackay 7056484ef0 Copter: fix spline overshoot 2015-05-13 22:40:06 +09:00
Andrew Tridgell c08b62f9e4 AC_WPNAV: revert AP_Math class change 2015-05-05 13:27:05 +10:00
Tom Pittenger 7fd285f483 AC_WPNav: Compiler warnings: nuke fast_atan2()
per Randy's suggestion, fast_atan2() is no longer necessary over atan2() because only copter uses it and copter is no longer supported on future builds of APM

ccd578664f (commitcomment-11025083)
2015-05-05 13:27:03 +10:00
Tom Pittenger 1b84bbc3e7 AC_WPNav: Compiler warnings: add in the appropriate whitrespace 2015-05-05 13:27:02 +10:00
Tom Pittenger 913d00f525 AP_WPNav: compiler warnings: apply is_zero(float) or is_equal(float) 2015-05-05 13:26:54 +10:00
Jonathan Challinger 2b29060a4e AC_WPNav: remove unused set_loiter_velocity 2015-05-01 16:46:53 +09:00
Randy Mackay 33431acaa4 AC_WPNav: protect against div-by-zero related to gnd_speed_limit 2015-04-28 13:53:19 +09:00
Paul Riseborough 7481217445 AC_WPNav: Improve application of EKF optical flow speed limit 2015-04-28 13:53:17 +09:00
Randy Mackay 35874292a0 AC_WPNav: move stop below all loiter methods
No functional change
2015-04-26 16:26:53 +09:00
Robert Lefebvre 4a7fe83b0f AC_WPNav: Create Stop Mode functions 2015-04-26 16:11:45 +09:00
Randy Mackay 39213584da AC_WPNav: minor comment and formatting changes 2015-04-14 14:50:58 +09:00
Jonathan Challinger fd55068620 AC_WPNav: fix double-twitch on stop in loiter 2015-04-14 14:50:55 +09:00
Jonathan Challinger 1da410a6c6 AC_WPNav: allow user to tune loiter 2015-04-14 14:50:53 +09:00
Randy Mackay fc4442bf61 AC_WPNav: rename xy_mode 2015-02-06 17:00:57 +09:00
Jonathan Challinger 626521c366 AC_WPNav: update usage of update_xy_controller 2015-02-06 17:00:53 +09:00
Jonathan Challinger 6eab698e85 AC_WPNav: remove various timing hacks 2014-12-31 14:03:20 +09:00
Jonathan Challinger 5438d38df5 AC_WPNav: provide reset_I to init_xy_controller 2014-12-31 14:03:16 +09:00
Randy Mackay 4a1ba9b186 AC_WPNav: minor const fix 2014-12-27 13:19:32 +09:00
priseborough 11fb51ceba AC_WPNav: Add nav velocity gain scaler to interfaces
Allows gains to be adjusted to compensate for optical flow noise
2014-12-06 18:16:50 +11:00
priseborough 5fa0c59310 AC_WPNav: Add EKF ground speed limit to loiter speed control
This is required to prevent the speed controller saturating the optical flow sensor during low altitude flying.
2014-12-06 18:16:50 +11:00
Jonathan Challinger 2cc65dffe0 AC_WPNav: add set_spline_dest_and_vel function 2014-11-17 14:38:46 -08:00
Clay McClure 71586d40e3 AC_WPNav: minor fix to comments 2014-11-06 11:53:56 +09:00
Jonathan Challinger 369839c7ca AC_WPNav: Use target yaw instead of current yaw for close waypoints 2014-10-31 15:23:52 +09:00
Randy Mackay e80328d3a5 AC_WPNav: bug fix sanity check of set_speed_xy
This corrects a bug that allowed the waypoint speed to be set to zero
2014-10-21 22:10:22 +09:00
Randy Mackay dbe1c55666 AC_WPNav: add shift_wp_origin_to_current_pos for takeoff
This shifts the origin to the vehicle's current position and should be
called just before take-off to ensure there are no sudden roll or pitch
moves on takeoff.
2014-09-29 15:26:18 +09:00
Randy Mackay 765420ee04 AC_WPNav: add loiter_soften_for_landing method
This resets the position target to the current location.
2014-09-19 16:43:10 +09:00
Randy Mackay ad37fc0408 AC_WPNav: WP_SPEED_DN parameter range to 0~500
Previous permissible descent speed of 10m/s was unnecessarily lenient.
Users can still bypass the suggested range through the MP's full
parameter list if they really want a very high descent speed.
2014-09-18 10:44:33 +09:00
Randy Mackay 1c6606cc58 AC_WPNav: resolve twitch when passing spline waypoints
The target positions target velocity was being reset to zero as we
passed through a spline waypoint.
2014-08-28 11:00:51 +09:00
Randy Mackay 3fd2b3b4a1 AC_WPNav: init members to resolve compiler warnings 2014-08-14 11:27:30 +09:00
Randy Mackay 2b64c511ed AC_WPNav: update yaw only when track is at least 2m 2014-07-06 17:02:12 +09:00
Randy Mackay c9661cfb09 AC_WPNav: integrate set_desired_velocity_xy function name change 2014-07-06 17:01:10 +09:00
Randy Mackay a2f54fdf2c AC_WPNav: smooth waypoint by freezing feed-forward and allowing overshoot
First part of this fix is freezing the position controller's xy-axis
feed foward as we transition to the new segment.
Second part is work-around for straight line segments in that we allow
the target point to actually overshoot the end of the segment by up to
2m if the segment is a "fast waypoint".  Ideally we would instead notice
the waypoint has been completed and take any left over time or distance
and move our target along the track towards the next waypoint but that
would require a much larger change to allow the wpnav lib to hold the
next two waypoints.
2014-06-10 20:03:01 +09:00
Randy Mackay ce85d1f6b2 AC_WPNav: use curr pos target as spline origin
We only use the current target position as origin if the waypoint
controller is active (i..e has been used in the past 1 second).  This is
consistent with how we initialise straight line waypoints
2014-06-10 20:02:59 +09:00
lthall 8bbce7e658 AC_PosControl: freeze feed forward for alt control in Auto 2014-06-10 20:02:36 +09:00
Randy Mackay f23e94707c AC_WPNav: use fast_atan2 for bearing calcs 2014-06-06 18:51:08 +09:00
Randy Mackay efd6d6dc70 AC_WPNav: spline div by zero fix
Also add check for straight line navigation to ensure speed is not
reduced below zero when it hits the leash limit
Also minor formatting changes
2014-06-05 22:23:38 +09:00
lthall 0912bec8f5 Spline div zero and leash limit fix 2014-06-05 22:23:35 +09:00
Randy Mackay cde7d31dad AC_WPNav: fix divide by zero when origin and dest are same location 2014-05-22 21:18:24 +09:00
Randy Mackay 597d5227f5 AC_WPNav: rename set_loiter_target to init_loiter_target 2014-05-19 12:27:25 +09:00
Randy Mackay e7b3c00767 AC_WPNav: set_loiter_target uses set_xy_target
Loiter is only a horizontal position controller so it should not set the
z-axis position.
Moved pos_control.set_speed and accel functions so order matches
init_loiter_targets function order
2014-05-19 12:27:20 +09:00
Ju1ien aed5787c1b AC_WPNav: bug fix for loiter init in Hybrid
AC_PosControl::init_xy_controller() has been added to PosControl and is
called by init_loiter_target.
Hybrid is currently using set_loiter_target function to init the loiter
controller. So we have to call init_xy_controller() by set_loiter_target
function.
What happens otherwise?
In AC_PosControl::update_xy_controller, we update "now" with
now = hal.scheduler->millis();
and, as _last_update_xy_ms has not been updated previously by
init_xy_controller(), we just call init_xy_controller().
So, _dt_xy  will be negative and used anyways in all the functions and
PID called by update_xy_controller.
That will avoid at least _accel_target.x/y to be set to 0 but I'm not
sure for the high values, probably an I_term that is not reset and
reached very high value.
Or maybe a cast error somewhere... no clue at all
2014-05-19 12:27:16 +09:00