Commit Graph

424 Commits

Author SHA1 Message Date
Jonathan Challinger b5e80148c6 AC_WPNav: remove shift_loiter_target 2016-07-04 16:57:06 +09:00
Andrew Tridgell 86ceee4a53 AC_WPNav: fixed typo 2016-07-01 15:34:56 +10:00
Daniel Ricketts 8a6aa24525 AC_WPNav: use AC_Avoidance to stop at fence during Loiter 2016-06-22 11:38:15 +09:00
Randy Mackay 2bafc36ded AC_WPNav: support rangefinder for terrain following 2016-05-21 10:36:53 +09:00
Tom Pittenger 684ac12dd6 AC_WPNav: fix compile when using AP_TERRAIN_AVAILABLE 0 2016-05-20 12:29:19 -07:00
Ricardo de Almeida Gonzaga 3033c53834 AC_WPNav: Fix typos 2016-05-13 19:20:05 -03:00
dgrat 6d3b491c02 AP_Math: Replace is_equal with a type safe template function
It makes sense to consider also other floating point types.
2016-05-10 11:41:26 -03:00
dgrat 41661f815f AP_Math: Replace the pythagorous* functions with a variadic template
The new function can deal with a variable number of function parameters.
Additionally, I renamed the functions to norm(), because this is the
standard name used in several other projects.
2016-05-10 11:41:26 -03:00
Randy Mackay 1c4b2be16a AC_WPNav: simplify use of terrain to just current location 2016-04-30 10:33:01 +09:00
Randy Mackay c5a3781507 AC_WPNav: accept terrain library reference 2016-04-30 10:33:01 +09:00
Randy Mackay e23c869c5d AC_WPNav: fix reporting of set_wp_destination failure 2016-04-30 10:33:01 +09:00
Randy Mackay 9fbfea951a AC_WPNav: spline handles terrain altitudes 2016-04-30 10:33:01 +09:00
Randy Mackay 8b2c479d62 AC_WPNav: straight line waypoints accept terrain 2016-04-30 10:33:01 +09:00
Andrew Tridgell 4908350ccb AC_WPNav: limit WPNAV_ACCEL to that implied by ANGLE_MAX
this prevents an overshoot and backtracking in the navigation code
when WPNAV_ACCEL is unachievable due to an angle limit
2016-04-28 17:47:50 +10:00
Lucas De Marchi 3ae4c222e0 AC_WPNav: replace header guard with pragma once 2016-03-16 18:40:39 +11:00
dgrat 5148e41c1a AP_Math: Cleaned macro definitions
Moved Definitions into a separate header. Replaced PI with M_PI and
removed the M_PI_*_F macros.
2016-02-27 02:51:33 -03:00
Jonathan Challinger 3c4d226b64 AC_WPNav: call renamed functions in AC_AttitudeControl 2015-12-09 19:58:50 +09:00
Lucas De Marchi 2591261af6 Global: rename min and max macros to uppercase
The problem with using min() and max() is that they conflict with some
C++ headers. Name the macros in uppercase instead. We may go case by
case later converting them to be typesafe.

Changes generated with:

	git ls-files '*.cpp' '*.h' -z | xargs -0 sed -i 's/\([^_[:alnum:]]\)max(/\1MAX(/g'
	git ls-files '*.cpp' '*.h' -z | xargs -0 sed -i 's/\([^_[:alnum:]]\)min(/\1MIN(/g'
2015-12-01 16:28:09 -02:00
Caio Marcelo de Oliveira Filho e867a06383 AC_WPNav: use millis/micros/panic functions 2015-11-20 12:28:13 +09:00
Jonathan Challinger f9c7f15052 AC_WPNav: WPNAV_LOIT_SPEED WPNAV_LOIT_MAXA take effect immediately 2015-11-18 22:12:39 +09:00
Lucas De Marchi 831d8acca5 Remove use of PROGMEM
Now variables don't have to be declared with PROGMEM anymore, so remove
them. This was automated with:

    git grep -l -z PROGMEM | xargs -0 sed -i 's/ PROGMEM / /g'
    git grep -l -z PROGMEM | xargs -0 sed -i 's/PROGMEM//g'

The 2 commands were done so we don't leave behind spurious spaces.

AVR-specific places were not changed.
2015-10-30 14:35:16 +09:00
Randy Mackay adee13d729 AC_WPNav: handle ekf position reset in Loiter and Brake 2015-10-30 12:24:17 +09:00
Randy Mackay 040ec481f4 AC_WPNav: loiter uses pos_control.shift_pos_xy_target 2015-10-30 12:24:09 +09:00
Randy Mackay c52f16b86f AC_WPNav: increase param description max for LOIT_JERK 2015-10-29 12:16:30 +09:00
Randy Mackay 49c4a133d7 AC_WPNav: set jerk separately for wpnav and loiter 2015-10-29 12:10:47 +09:00
Jonathan Challinger 853f8bfaf4 AC_WPNav: stop gradually in loiter 2015-10-28 20:21:55 +09:00
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
Randy Mackay 15fc689085 AC_WPNav: remove unused get_wp_radius 2015-08-23 11:06:19 +09: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 a81d756ce1 AC_WPNav: remove unused definitions 2015-08-05 14:14:55 +09: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
Tom Pittenger 93c6ed0ea2 AC_WPNav: compiler warnings: float to double 2015-07-27 10:30:15 +09:00
Randy Mackay 28c722c157 AC_Circle: rate change takes effect immediately 2015-07-23 16:21:20 +09:00
Randy Mackay 0264b1aa84 AC_Circle: set only xy position targets 2015-06-27 15:43:49 +09:00
Randy Mackay aa7a151fe5 AC_WPNav: init flags
Resolves Coverity warning
2015-06-08 14:46:39 +09:00
Randy Mackay bb382a65e8 AC_Circle: init members and flags
Removed unused dir flag
Resolves Coverity warning
2015-06-08 14:46:37 +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
Andrew Tridgell e789984c98 AC_WPNav: fix for HAL_SITL rename 2015-05-05 09:45: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
Tom Pittenger b9865c5f3e AC_Circle: fix compile warnings re float constants 2015-04-24 12:23:38 +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 c88ff00f5f AC_WPNav: remove example sketch
this only tested compiling anyway
2015-03-13 16:40:57 +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 baa3e802ee AC_WPNav: clean up atan2 2015-02-03 14:48:04 +09:00
Randy Mackay d0d1254f03 AC_WPNav: fix example sketch 2015-01-28 17:15:34 +09:00
Andrew Tridgell 25f69f05eb AC_WPNav: updates for new AP_Baro API 2015-01-09 11:50:56 +11: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
Andrew Tridgell 33c7432e97 AC_WPNav: fixed example build 2014-10-24 12:10:40 +11: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
Andrew Tridgell 759a55d633 AC_WPNav: fixed example build 2014-08-13 21:45:56 +10:00
Randy Mackay 053a45e9cf AC_WPNav: fix example sketch 2014-07-29 12:01:09 +09:00
Andrew Tridgell 7f7a0db2d3 AC_WPNav: fixed example build 2014-07-25 17:53:58 +10:00
Randy Mackay 52d5109a6c AC_Circle: initialise members to reduce compiler warnings 2014-07-16 14:38:34 +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 915dad2da4 AC_Circle: use fast_atan2 to calc bearing from center
This does not save much time because it's only called at initialisation
2014-06-06 18:51:09 +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
Randy Mackay 5d20594fa4 AC_WPNav: bug fix for loiter and waypoint update rate
Thanks to EmileC for spotting this
2014-05-12 20:13:46 +09:00
Randy Mackay badc127c34 AC_WPNav: fix example sketch 2014-05-08 16:25:13 +09:00
lthall 9ab9eaec25 AC_WPNav: Loiter jerk default to 10m/s/s/s
Pair programmed with Randy
2014-05-08 16:16:05 +09:00
Randy Mackay 1cb297580f Copter: reduce Circle init twitch by using stopping point 2014-05-08 16:15:57 +09:00
Randy Mackay 091ff91a70 WPNav: add wp_and_spline_init to set speeds an init pos controller 2014-05-08 16:15:50 +09:00
Randy Mackay 48ec0caf75 AC_WPNav: run navigation at 10hz in SITL 2014-05-08 16:15:44 +09:00
lthall b38c484874 AC_WPNav: add LOIT_JERK parameter
Limit accel output from loiter controller.
Call new pos_control.init_xy_controller when loiter starts
Remove sudden stop when pilot requested acceleration is zero

Pair programmed with Randy
2014-05-08 16:15:38 +09:00
Randy Mackay fd9f8f571f AC_WPNav: replace inav, ahrs pointers with references 2014-05-08 16:15:26 +09:00
Randy Mackay 7dd366d84e 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
2014-04-30 21:46:18 +09:00
Randy Mackay 0103ae2eb0 AC_WPNav: add WPNAV_ACCEL_Z
Allows configurable z-axis acceleration during missions
2014-04-30 21:46:12 +09:00
Randy Mackay 510c9920a6 AC_WPNav: rename get_horizontal_velocity to get_speed_xy
This new method name is consistent with the equivalent in the
AC_PosControl class
2014-04-30 21:46:06 +09:00
Randy Mackay db51d37071 AC_WPNav: add clear_pilot_desired_acceleration
This allows quickly clearing out the pilot desired acceleration for
loiter contoller.
2014-04-25 14:45:14 +09:00
Randy Mackay ad99918fee AC_WPNav: recalc leash lengths if set_horizontal_velocity is called
Resolves bug in which do-set-speed allowed reducing the speed during the
mission but not increasing it.
Slow down distance is also recalculated.
Unnecessary call to calc_wp_leash_length removed from
set_spline_origin_and_destination.
2014-04-24 13:16:08 +09:00
Randy Mackay 46fba47c8e AC_WPNav: slow target point's speed near destination 2014-04-24 13:16:00 +09:00
Randy Mackay 7c02a02bd8 AC_WPNav: reset_I flag moved to position controller 2014-04-23 15:00:14 +09:00
Randy Mackay 4d5b73b968 AC_WPNav: add reset_I to set_loiter_target 2014-04-23 15:00:07 +09:00
Ju1ien 5d0476e522 AC_WPNav: add reset_I to init_loiter_target 2014-04-23 14:59:47 +09:00
Randy Mackay 559a258ede AC_WPNav: bug fix to limit target point from moving beyond leash
Also pull Z-axis acceleration from position controller instead of using
#define
2014-04-22 23:05:11 +09:00
Randy Mackay 648787a6c8 AC_WPNav: rename some definitions 2014-04-21 15:06:29 +09:00
Randy Mackay 2167dd7d3e AC_WPNav: update target speed immediately 2014-04-21 14:51:26 +09:00
Randy Mackay d382fa51ee AC_WPNav: run loiter and wp nav at 50hz on Pixhawk 2014-04-21 13:32:02 +09:00
Randy Mackay 72d2712c4e AC_WPNav: integrate update_xy_controller name change 2014-04-21 13:31:58 +09:00
Randy Mackay 966340a02a Circle: integrate update_xy_controller name change 2014-04-21 13:31:57 +09:00
Randy Mackay 94d38ee294 AC_Circle: add get_closest_point_on_circle
init_start_angle method added to use current heading or position to
decide on initial start angle
2014-04-16 16:28:04 +09:00
Randy Mackay 60f522a094 AC_WPNav: set_wp_destination to use current target
Previously we used the projected stopping point if the vehicle had not
reached the destination but this could lead to large jumps in target
position
2014-04-13 22:42:50 +09:00
Randy Mackay 15da01cf3a AC_WPNav: replace safe_sqrt with pythagorous2 2014-04-01 20:43:45 +09:00
Randy Mackay b15d4379d8 AC_WPNav: use atan2f, make methods const 2014-03-30 23:09:51 +09:00
Randy Mackay d27ca53a9d AC_WPNav: spline sets origin vel to zero when no prev segment
Issue caught by Michael Oborne
2014-03-30 15:19:18 +09:00
Randy Mackay 7dfde39e19 AC_WPNav: advance_spline to use dt 2014-03-30 15:02:07 +09:00
Randy Mackay c0458b786a AC_WPNav: check acceleration is non zero 2014-03-30 11:52:44 +09:00
Randy Mackay f0f3688172 AC_WPNav: rounder corners for short spline segments 2014-03-30 11:52:41 +09:00
Randy Mackay 197683d539 WPNav: clean up spline comments 2014-03-29 17:57:47 +09:00
Randy Mackay 24eb195aa3 WPNav: add yaw control for straight line wp nav 2014-03-28 09:23:13 +09:00
Randy Mackay b42b12f7be AC_WPNav: add get_spline_yaw 2014-03-28 09:23:07 +09:00
Randy Mackay e5e71ce371 WPNav: add spline support 2014-03-28 09:22:53 +09:00
Andrew Tridgell 04587efb2d AC_WPNav: fixed example build 2014-03-19 12:14:00 +09:00
Randy Mackay 98bdbb7fed AC_WPNav: set loiter accel to 1/2 of speed
Bug fix from Leonard.
Also fixed some formatting.
2014-02-20 21:37:45 +09:00
Randy Mackay 6af705d455 AC_Circle: bug fix for pos target when radius is zero 2014-02-16 13:46:38 +11:00
Randy Mackay bf3effcd10 AC_WPNav: fix example sketch 2014-02-15 06:09:08 +11:00
Randy Mackay fbf8106280 AC_Circle: remove AC_PID include
This is no longer required with introduction of PosControl lib
2014-02-15 06:09:08 +11:00
Randy Mackay e86a21a254 AC_WPNav: remove AC_PID include
This is no longer required with introduction of PosControl lib
2014-02-15 06:09:08 +11:00
Randy Mackay 9e31f0b985 AC_WPNav: use PosControl accessor
Saves 2bytes of RAM
2014-02-15 05:27:50 +11:00
Randy Mackay 598a1b1f43 AC_Circle: use trig values from ahrs 2014-02-15 05:27:48 +11:00
Randy Mackay 64cfcb2308 AC_WPNav: use trig values from ahrs 2014-02-15 05:27:48 +11:00
Randy Mackay 17177adccf AC_Circle: remove debug comment 2014-02-15 05:27:46 +11:00
Randy Mackay 864f64b61a AC_Circle: circle control library 2014-02-15 05:27:40 +11:00
Randy Mackay d4e4620159 AC_WPNav: remove unused PID references 2014-02-15 05:27:39 +11:00
Randy Mackay fc427967ae AC_WPNav: set wp origin to horiz and vert stopping point
Also bug fix to set pos_control's down speed as a negative number
2014-02-15 05:27:39 +11:00
Randy Mackay 4cd45e2edf AC_WPNav: remove debug 2014-02-15 05:27:38 +11:00
Randy Mackay 1596d83d02 AC_WPNav: move leashes to AC_PosControl 2014-02-15 05:27:37 +11:00
Randy Mackay 0d4ba04e75 AC_WPNav: make advance_wp_target private 2014-02-15 05:27:37 +11:00
Randy Mackay 0c8cbba644 AC_WPNav: remove xy pos controller 2014-02-15 05:27:36 +11:00
Randy Mackay 2984e492df AC_WPNav: add reference to AC_PosControl
Also remove requirement to pass in inertial nav position and velocity to
init_loiter method
2014-02-15 05:27:35 +11:00
Randy Mackay c9415a08f1 AC_WPNav: use ahrs trig values 2014-02-08 18:16:47 +09:00
Randy Mackay 0a3559813a AC_WPNav: accessor for loiter speed 2014-01-15 15:22:30 +09:00
Andrew Tridgell 29b37b72e4 AC_WPNAV: fixed example build 2013-12-17 11:51:37 +11:00
Randy Mackay 5767aa47d9 AC_WPNav: reduce leash length for stopping
We now limit the target stopping point to 1x the xy leash length while
previously it was 2x.  This is justified because this limit is only used
when the copter is travelling at higher speeds but at higher speeds air
drag tends to make the copter stop more quickly naturally.
2013-12-13 22:12:30 +09:00
Randy Mackay 952afd296e Copter: initialise waypoint leash length
Without this initialisation the first RTL could be too aggressive as it
tries to stop too suddenly
2013-12-12 16:23:37 +09:00
Andrew Tridgell 30fffa5854 AC_WPNav: fixed some build warnings 2013-12-11 10:21:41 +11:00
Tobias c3309d909c AC_WPNav: make more member pointers const 2013-10-27 13:41:29 +09:00
Tobias bb5cf4a311 AC_WPNav: make member pointer to AP_InertialNav object const since it's
never modified
2013-10-27 13:41:23 +09:00
Tobias 1ecb583dd9 AC_WPNav: replace unnecessary objects with const refs 2013-10-27 13:40:53 +09:00
Andrew Tridgell e1aa6e3ff1 libraries: fixed examples for no flash_leds() callback 2013-09-19 18:38:28 +10:00
Randy Mackay 45aeb1a921 Copter: split up loiter into 4 steps
Reduces disruption to the main loop but also introduces a delay of 30ms
to navigation output
2013-08-28 11:33:10 +09:00
Randy Mackay 6969ab573d Copter: configurable max lean angle
ANGLE_MAX parameter allows limiting the roll and pitch angles during
manual and auto flight modes to anywhere from 10 to 80 degrees
2013-08-11 12:53:22 +09:00
Andrew Tridgell 82152c058e AC_WPNav: disabled broken example build
this test doesn't actually do anything yet
2013-07-15 14:09:48 +10:00
Randy Mackay bf5a50f738 WPNav: stopping point projection uses wp_leash 2013-07-11 11:39:44 +09:00
Randy Mackay 345924ddec WPNav: replace LOITER_ACCEL_MAX with parameter
Also removed unused _lean_angle_max variable
2013-07-10 20:00:32 +09:00
Randy Mackay 204f613467 WPNav: bug fix to reported distance to target
This value is for reporting purposes only
2013-07-10 18:21:08 +09:00
Randy Mackay 518eba0729 WPNav: bug fix to loiter accel calculation
Contribution from Leonard Hall
2013-07-10 17:52:12 +09:00
Randy Mackay c4f17b3235 WPNav: rounding error fix in loiter
Contributed by Leonard Hall
2013-07-10 16:24:37 +09:00
Randy Mackay 5d23d5aaa7 WPNav: reduce loiter speed used to correct pos error
Contributed by Leonard Hall
This should reduce the aggressiveness of the response when we experience
a GPS glitch
2013-07-10 15:52:18 +09:00
Randy Mackay 649cbf6b68 WPNav: reduce default WP_ACCEL and LOITER_SPEED 2013-07-07 16:00:13 -10:00
Randy Mackay dde19c9585 WPNav: add acceleration parameter
WP_ACCEL added to allow user control of acceleration during missions.
Loiter acceleration made to be half of loiter max speed
2013-06-16 11:40:51 +09:00
Randy Mackay 272f0e5032 Copter: reduce twitch when entering CIRCLE mode
Set loiter target and prev iterations velocity when circle mode is
started
Start circling from projected stopping point
2013-06-15 18:18:30 +09:00
Randy Mackay 7a2afb7443 Copter Nav: add accessor for waypoint speed 2013-06-01 18:21:29 +09:00
Randy Mackay 89bbf5844f Copter WPNav: remove unused variable 2013-05-31 21:41:32 +09:00
Randy Mackay 8c4a7ec094 Copter WPNav: Leonard's improved speed fix
Also pass in althold gain from main code
2013-05-31 21:03:27 +09:00
Randy Mackay a1926441da Copter: use fast tan for accel to lean angle calcs
Committed on behalf of Leonard
2013-05-30 18:25:04 +09:00
Randy Mackay d203f0295b Copter: bug fix for vertical speed during missions 2013-05-30 11:52:04 +09:00
Randy Mackay dbd6524f9f Copter: WPNav consolidate acceleration #defines 2013-05-27 10:36:24 +09:00
Randy Mackay e3dffb920b Copter: initialise target vel in loiter 2013-05-25 14:07:04 +09:00
Randy Mackay a474b97291 Copter: resolve compiler warning re unused vars 2013-05-25 13:32:15 +09:00
Randy Mackay 916f241fff Copter: Leonard's improved Loiter 2013-05-24 23:45:03 +09:00
Randy Mackay 46d65150af Copter: lengthen loiter stopping point
This will make stops less aggressive when entering loiter at very high
speeds (more 7.5m/s)
2013-05-22 17:35:20 +09:00
Randy Mackay 400c1bd7b7 Copter: smooth waypoint transitions
Speed of intermediate point is initialised and constrained based on
current speed vector vs direction to the next waypoint.
This means the copter does not slow if the previous segment and next
segment are in line and also the intermediate point is not advanced
towards the next waypoint if the copter is moving quickly in the
opposite direction.
2013-05-22 14:17:26 +09:00
Randy Mackay cb795ea536 WPNav: divide by zero checks 2013-05-15 11:51:26 +09:00
Randy Mackay 55235630b6 Copter: bug fix for slow loiter repositioning 2013-05-12 14:51:02 +09:00
Randy Mackay 61288fcb90 WPNav: make get_stopping_point method public 2013-05-11 16:05:42 +09:00
Randy Mackay ed5ddfd9db WPNav: initialise desired roll, pitch
bug-fix to resolve 1/10th second twitch when loiter or waypoint
controller are first engaged
2013-05-09 18:32:02 +09:00
Randy Mackay 9f735c8d03 WPNav: add fast waypoints flag
Waypoint is considered "reached" when the intermediate point reaches the
destination
2013-05-09 00:18:02 +09:00
Randy Mackay 4704b729c2 WPNav: reduce max acceleration to 2.5m/s
Also includes bug fix to ramp up of speed of intermediate point
2013-05-08 23:20:29 +09:00
Andrew Tridgell 55d148abdd AC_WPNav: fixed example build 2013-05-08 16:44:59 +10:00
Randy Mackay 328d900647 WPNav: flexible loiter speed
Also includes bug fix to allow speeds > 10m/s during missions
2013-05-07 17:11:24 +09:00
Randy Mackay 1f8161b493 AC_WPNav: remove unnecessary speed constraint 2013-05-07 11:58:04 +09:00
Randy Mackay 647a93e78e Copter: remove jerk when entering RTL or AUTO
Loiter target position was not being initialised properly.
Add a few more comments
2013-05-03 16:58:00 +09:00
Andrew Tridgell ba83950fc4 libraries: replace constrain() with constrain_float()
this makes the type much more obvious. Thanks to Tobias for the
suggestion.
2013-05-02 10:25:40 +10:00
Randy Mackay ad01aeee44 Copter: increase max loiter overshoot to 8.12m 2013-04-30 18:07:48 +09:00
Randy Mackay c139134192 Copter: increase max loiter speed to 7.5m/s 2013-04-30 12:49:19 +09:00
Randy Mackay 6c081c3def AC_WPNav: slow acceleration of intermediate point 2013-04-30 10:20:23 +09:00
Andrew Tridgell ad40ba57be AC_WPNav: optimise to reduce memory copies
save a few cycles

Pair-Programmed-With: Randy Mackay <rmackay9@yahoo.com>
2013-04-22 12:21:58 +10:00
Randy Mackay 2fc25da4c3 Copter: Leonard's fix for get_loiter_accel_to_lean_angle 2013-04-21 16:27:50 +09:00
Randy Mackay 1c046fa49f AC_WPNav: increase max descent speed to 1.5m/s 2013-04-18 22:32:00 +09:00
Randy Mackay ed298363f4 AC_WPNav: remove unnecessary limit in leash calc 2013-04-18 22:31:44 +09:00
Randy Mackay 764853bd56 AC_WPNav: add climb and descent params, dynamic leash length 2013-04-18 14:51:01 +09:00
Randy Mackay effd5b0da7 AC_WPNav: improved comments
Made SPEEDZ a parameter although it's not yet used
2013-04-18 11:17:41 +09:00
Randy Mackay 8046fe2cf3 AC_WPNav: increase max accel to 8m/s/s 2013-04-15 21:57:56 +09:00
Randy Mackay 8fe3e689f4 Copter: add WPNAV log message 2013-04-15 21:54:29 +09:00
Randy Mackay 0eab3e87b2 AC_WPNav: use prev wp as origin for next wp 2013-04-14 18:27:39 +09:00
Randy Mackay 0351c2ae33 AC_WPNav: allow setting of horizontal velocity
Also added accessor function for waypoint radius parameter
2013-04-14 13:24:14 +09:00
Randy Mackay 252e98ec57 AC_WPNav: use global gravity constant 2013-04-14 10:39:32 +09:00
Randy Mackay 0ac3762bdd AC_WPNav: fix compiler warning 2013-04-14 10:39:26 +09:00
Randy Mackay 9d7d174995 AC_WPNAV: check distance to waypoint within library
bug fix for loiter using lat/lon position instead of NED position when
calculating desired velocity towards target
2013-04-14 10:39:21 +09:00
Randy Mackay 35001619f0 AC_WPNav: stop track_desired from moving backwards 2013-04-14 10:39:19 +09:00
Randy Mackay c6b68c7843 AC_WPNav: Leonard's 3d leash calculator 2013-04-14 10:39:08 +09:00
Randy Mackay 74e1c2e660 AC_WPNav: advance track fixes 2013-04-14 10:39:05 +09:00
Randy Mackay bc87118062 AC_WPNav: add get_target_alt method 2013-04-14 10:39:00 +09:00
Randy Mackay 6dbcbdcb43 AC_WPNav: limit max loiter position error
move interpretation of pilot input to wpnav lib
2013-04-14 10:38:58 +09:00
Randy Mackay 31838b2865 AC_WPNAV: change loiter controllers to use floats
in particular get_loiter_pos_lat_lon and get_loiter_accel_lat_lon
2013-04-14 10:38:56 +09:00
Randy Mackay 0ccdce1b22 AC_WPNav: Leonard's ff loiter and 3d wp nav 2013-04-14 10:38:43 +09:00
Randy Mackay 926c404994 AC_WPNav: Leonard's loiter target smoothing 2013-04-14 10:38:39 +09:00
Randy Mackay f82ce449d7 AC_WPNav: add angle limits and set from AC's throttle controller 2013-04-14 10:38:34 +09:00
Randy Mackay afd2f82768 AC_WPNav: bug fix for track covered being 2D
Replaced abs and fabs with fabsf
Added get_destination method
2013-04-14 10:38:32 +09:00
Randy Mackay 8ec7fd1c9c AC_WPNav: add set_loiter_target to use velocity
Target can be set in front of the copter to reduce the bounce back to
the position where loiter was engaged.
2013-04-14 10:38:25 +09:00
Randy Mackay 3bfcc3b8d0 AC_WPNav: replace get_target_alt with get_destination_alt 2013-04-14 10:38:13 +09:00
Randy Mackay c40080e76a AC_WPNav: added set_target_alt 2013-04-14 10:38:04 +09:00
Randy Mackay 60060d8184 AC_WPNav: add get_target_alt
Required because waypoint controller will be modified to control
altitude
2013-04-14 10:37:58 +09:00
Randy Mackay 0d70ba1030 AC_WPNav: bug fix to dt calculation 2013-04-14 10:37:51 +09:00
Randy Mackay 39bc3800c9 AC_WPNav: add distance and bearing to target methods 2013-04-14 10:34:50 +09:00
Randy Mackay b92c4097d2 AC_WPNav: first implementation 2013-04-14 10:34:47 +09:00