Commit Graph

27 Commits

Author SHA1 Message Date
Randy Mackay
4f0b26bd48 AP_L1_Control: update_waypoint gets dist_min argument
L1_dist can become extremely short for slow moving vehicles leading to unnecessarily jerk turns after passing waypoints.  This reduces the minimum length along the track that the vehicle will point.
2018-04-05 12:14:59 +09:00
Andrew Tridgell
31092da426 AP_L1_Control: removed create() method for objects
See discussion here:

  https://github.com/ArduPilot/ardupilot/issues/7331

we were getting some uninitialised variables. While it only showed up in
AP_SbusOut, it means we can't be sure it won't happen on other objects,
so safest to remove the approach

Thanks to assistance from Lucas, Peter and Francisco
2017-12-14 08:12:28 +11:00
Lucas De Marchi
67e02e3c55 AP_L1_Control: add static create method 2017-09-26 03:01:21 +01:00
Michael du Breuil
93a18e7dc8 L1: Add loiter radius scaling based upon bank limits at sea level 2017-04-06 08:26:04 +10:00
Mathieu OTHACEHE
152edf7189 Global: remove mode line from headers
Using a global .dir-locals.el file is a better alternative than
reincluding the same emacs header in every file of the project.
2016-10-24 09:42:01 -02:00
Grant Morphett
b56799f444 AP_L1_Control: Adding support for rover's operating in reverse
Mostly invovles sorting out the reverse yaw when travelling backwards.
2016-07-17 08:15:33 +10:00
Tom Pittenger
be752164f4 Revert "AP_L1_Control: coverity scan - variables not initialized in constructor"
This reverts commit d558f32142.
2016-07-11 21:59:12 -07:00
Tom Pittenger
d558f32142 AP_L1_Control: coverity scan - variables not initialized in constructor 2016-07-05 13:28:52 -07:00
Lucas De Marchi
6f87195eb7 AP_L1_Control: remove tabs and trailing whitespaces 2016-05-10 11:41:26 -03:00
Randy Mackay
b2153fb97f AP_L1_Control: remove unused _xtrackVelPos 2016-04-23 23:06:24 -07:00
Tom Pittenger
25c3367341 AP_L1 - add a stale flag
threading bug fix. When a mission wp updates, but the L1 controller had not yet, the data is stale. Example, On Plane when NAV_LAND starts for a moment your xtrack and bearing is most likely bear zero regardless if you have a big turn or not until 10 Hz later when the update() gets called and updates those values with correct values for the new waypoint.
2016-04-21 21:30:57 -07:00
Tom Pittenger
2ce964c8ac AP_L1_Controller: add accessor for xtrack_error_integrator 2016-04-21 21:30:54 -07:00
Lucas De Marchi
7ad0036a11 AP_L1_Control: replace header guard with pragma once 2016-03-16 18:40:41 +11:00
Andrew Tridgell
640332113c AP_L1_Control: calculate dt for crosstracking 2016-01-19 11:05:56 +11:00
Jonathan Challinger
f0f5239d8f AP_L1_Control: use set_default for runtime param defaults 2015-10-26 11:15:54 +11:00
Tom Pittenger
695efb8df3 AP_L1_Control: added integrator to help xtrack error converge to zero
new param: NAVL1_XTRACK_I
    // @Description: Crosstrack error integrator gain. This gain is applied to the crosstrack error to ensure it converges to zero. Set to zero to disable. Smaller values converge slower, higher values will cause crosstrack error oscillation.
fixes https://github.com/diydrones/ardupilot/issues/2650

when param is changed the integrator is set to zero. This makes for easier tuning by seeing it converge to zero on each change.
2015-10-21 12:49:43 +11:00
Gustavo Jose de Sousa
4278bfcec5 AP_L1_Control: 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:44 +10:00
Andrew Tridgell
5a1aa8dfe7 AP_L1_Control: implement turn_distance() with turn angle
uses a linear approximation for now.
2014-06-05 09:34:23 +10:00
Paul Riseborough
49fe7fea07 L1_Control : Added hysteresis for rear WP capture 2013-11-09 15:40:14 +11:00
Andrew Tridgell
341dca4dfe AP_L1_Control: added set_default_period()
used by the rover code
2013-09-09 19:55:53 +10:00
Andrew Tridgell
31fce44063 AP_L1_Control: use a reference to AHRS
makes code a bit simpler
2013-08-13 13:49:26 +10:00
Andrew Tridgell
b74ed795f2 AP_L1_Control: removed _maxf() and _geo2planar() functions
not needed any more
2013-08-13 12:07:35 +10:00
Andrew Tridgell
953051b49e AP_L1_Control: added lateral acceleration interface
this will be used by the Rover code for steering
2013-08-12 13:38:38 +10:00
Andrew Tridgell
86db955ac9 AP_L1_Control: fixed indent-tabs-mode 2013-05-30 09:54:53 +10:00
Andrew Tridgell
9654546b5a AP_L1_Control: Cleaned up calculation of damping to reduce computations
also removed _cross2D, using math library instead
2013-05-05 21:51:08 +10:00
Andrew Tridgell
571c48b9d5 L1_Control: cleanup some unused code and variables 2013-04-15 10:52:32 +10:00
Brandon Jones
a3c2851120 AP_L1_Control: Addition of library for geometry calculations required for L1 Control.
1) Explicit control of tracking loop period and damping which removes previous
   variation in period with speed and fixed damping ratio
2) Explicit control of track capture angle (now set to 45 degrees by default)
3) Removal of restriction on loiter radius being greater than L1 distance

The circle(loiter) control is a L1 and PD hybrid utilising L1 for waypoint capture and PD control for circle tracking.

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
Pair-Programmed-With: Andrew Tridgell <tridge@samba.org>
2013-04-12 12:48:09 +10:00