Commit Graph

270 Commits

Author SHA1 Message Date
Leonard Hall
1639e22b74 AC_AttitudeControl: set desired_vel for reporting purposes even when not used 2016-06-18 11:55:49 +09: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
Andrew Tridgell
23a64e1227 AC_AttitudeControl: fixed accel limit trigonometry
Leonard had mentioned the limit should be tan(angle) not sin(angle). I
noticed this one was wrong.
2016-04-28 16:15:15 +10:00
Leonard Hall
c64a505906 AC_PosControl: relax_alt_hold_controllers accepts throttle in 0 to 1 range 2016-04-01 11:59:30 +09:00
Leonard Hall
15be80a25d AC_PosControl: accel_to_throttle outputs 0 to 1 2016-04-01 11:59:30 +09: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
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
ea08b6115d AC_AttControl: use millis/micros/panic functions 2015-11-20 12:27:03 +09:00
Randy Mackay
c9340dbeb6 AC_PosControl: run velocity controller z-axis at 400hz 2015-11-18 13:31:21 +09:00
Randy Mackay
dbc8ce1d69 AC_PosControl: default z-axis controller to 400hz
No functional change as vehicle code always sets it explicitely
2015-11-18 13:31:20 +09:00
Randy Mackay
323a527734 AC_PosControl: velocity controller uses feed-forward althold 2015-11-18 13:31:19 +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
550ba478c9 AC_PosControl: add shift_pos_xy_target 2015-10-30 12:24:08 +09:00
Randy Mackay
ee0abb1750 AC_PosControl: add set_jerk_xy 2015-10-29 12:10:44 +09:00
Randy Mackay
895a40893d AC_PosControl: use_desvel_ff flag added
This allows turning on/off desired velocity feedforward without setting desired_vel.z to zero.  Setting desired_vel.z to zero has the side effect of disrupting the landing detection which needs to know if we are trying to descend
2015-10-28 20:21:52 +09:00
Leonard Hall
aec66c5db6 AC_PosControl: faster z-axis slowdown when over speed 2015-10-28 20:21:38 +09:00
Leonard Hall
245f7ce268 AC_PosControl: allow desired vel z to be above speed limit 2015-10-28 17:59:36 +09:00
Leonard Hall
f55c31a157 AC_PosControl: add alt hold without feed forward 2015-10-28 17:57:20 +09:00
Leonard Hall
cf5db31053 AC_PosControl: allow limiting lean angle to avoid alt loss 2015-09-07 15:10:10 +09:00
Leonard Hall
b58cc7ea8d AC_PosControl: move accel constraint to accel_to_lean_angles 2015-09-07 14:51:43 +09:00
Gustavo Jose de Sousa
d49f10d2e5 AC_AttitudeControl: 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
Robert Lefebvre
14882bc6a8 AC_AttitudeControl: Remove unused takeoff jump #define 2015-07-14 20:16:58 +09:00
Randy Mackay
d2f93dd379 AC_PosControl: init flags
Resolves warning from Coverity
2015-06-08 14:46:32 +09:00
Randy Mackay
382f5d087f AC_PosControl: explicitly set set_alt_target_from_climb_rate params 2015-06-05 15:51:02 +09:00
Randy Mackay
11fee21f06 AC_PosControl: init accel_last_z_cms 2015-06-05 15:06:34 +09:00
Andrew Tridgell
521dae1c65 AC_AttitudeControl: use set_desired_rate() on PID controllers
this sets them up for logging of PIDs
2015-05-27 14:28:49 +10:00
Robert Lefebvre
e87ca6de6f AC_PosControl: Change motors.get_throttle_out
to get_throttle to follow function renaming in AP_Motors
2015-05-25 22:13:34 +09:00
Randy Mackay
d1808c645d AC_PosControl: recalc leash length on speed or accel change
This resolves an issue in which do-set-speed would not take effect until
one waypoint too late in a mission.
2015-05-19 18:16:39 +09:00
Andrew Tridgell
872583f441 AC_AttitudeControl: removed fast_atan 2015-05-05 13:57:16 +10:00
Andrew Tridgell
84ac721340 AC_AttitudeControl: use M_PI_F instead of (float)M_PI 2015-05-05 13:44:19 +10:00
Andrew Tridgell
326b0b33ea AC_AttitudeControl: revert AP_Math class change 2015-05-05 13:27:04 +10:00
Tom Pittenger
1bca81eaed AC_AttitudeControl: compiler warnings: apply is_zero(float) or is_equal(float) and float to doubles 2015-05-05 13:26:55 +10:00
Randy Mackay
31edd6a72b AC_PosControl: add_takeoff_climb_rate method
This function simply increments the current altitude target given a
climb rate and dt
2015-05-01 12:56:30 +09:00
Jonathan Challinger
12957867fd AC_PosControl: fix thr twitch when changing modes 2015-04-18 12:38:44 +09:00
Jonathan Challinger
738b1967ad AC_PosControl: use LowPassFilterVector2f 2015-04-17 10:47:01 +09:00
Jonathan Challinger
87500d9d70 AC_AttitudeControl: use new lowpass filter 2015-04-17 10:46:45 +09:00
Leonard Hall
c2a6a0a9e2 AC_PosControl: add accel filter parameter 2015-04-16 21:00:45 +09:00
Leonard Hall
a632a57d79 AC_PosControl: accessors to log z-axis vel and accel 2015-04-16 21:00:32 +09:00
Leonard Hall
0aca3c4be6 AC_PosControl: add relax Alt Hold controllers 2015-04-16 21:00:25 +09:00
Leonard Hall
7cb3c4ba39 AC_PosControl: add feed forward to Alt Hold 2015-04-16 21:00:20 +09:00
Jonathan Challinger
3e0dab7b2d AC_PosControl: remove accel error filter and set throttle output filter instead 2015-04-16 21:00:07 +09:00
Jonathan Challinger
7abd02baf2 AC_PosControl: change int32/int16 to float in accel_to_throttle 2015-04-16 20:59:55 +09:00
Jonathan Challinger
d14893fcd5 AC_PosControl: don't limit throttle any more 2015-04-16 20:59:51 +09:00
Leonard Hall
48fb487a8c AC_AttitudeControl: Formatting fix 2015-04-15 22:04:27 +09:00
Leonard Hall
9a3f48cc1f AC_PosControl: ensure throttle output above zero 2015-03-16 14:49:33 +09:00
Randy Mackay
bb74b8dec8 AC_PosControl: fix twitch when entering RTL
Also removed slow_cpu flag
Fixed bug in update to _accel_target_jerk_limited.
2015-03-13 20:47:19 +09:00
Jonathan Challinger
88ec13b10d AC_PosControl: fix build 2015-03-11 10:00:00 +09:00
Randy Mackay
50d2e98aa4 AC_AttControl: init throttle_hover in constructor 2015-03-10 22:10:36 +09:00
Randy Mackay
965db2c7f7 AC_PosControl: add comments and defines for jerk limits 2015-03-10 22:10:34 +09:00
Jonathan Challinger
4408c1b935 AC_PosControl: 2d jerk constraint in accel_to_lean_angles 2015-03-10 22:10:32 +09:00
Jonathan Challinger
9871b95586 AC_PosControl: fix dt sanity checking 2015-03-10 22:10:30 +09:00
Leonard Hall
7de5bccc93 AC_PosControl: remove THR_HOVER parameter
Parameter is set by main code so no need to store to eeprom
2015-03-06 14:02:46 +09:00
Leonard Hall
9866eaded1 AC_PosControl: rename p_alt_pos to p_pos_z
Also pid_alt_accel to pid_accel_z
2015-03-06 14:02:44 +09:00
Leonard Hall
349f1aeceb AC_PosControl: use 2-axis PI controller 2015-03-06 14:02:42 +09:00
Leonard Hall
8d4f0ec80c AC_PosControl: integrate PID input filter 2015-03-06 14:02:39 +09:00
Jonathan Challinger
e9bbe062f3 AC_PosControl: modify accel_to_lean_angles to apply filters before yaw rotation 2015-02-24 16:41:03 +09:00
Randy Mackay
186337f18e AC_PosControl: rename xy_mode enum values
Also added a few comments and fixed formatting
2015-02-06 17:00:55 +09:00
Jonathan Challinger
3faca88423 AC_PosControl: allow control of xy rate constraint behavior 2015-02-06 17:00:48 +09:00
Robert Lefebvre
14d76d158a AC_AttitudeControl: Correct comment. 2015-02-03 14:55:30 +09:00
Randy Mackay
07a0388f25 AC_PosControl: move alt limit to set_alt_target_from_climb_rate
The alt limit is instead enforced when the target is set using the
set_alt_target_from_climb_rate function
Also updated comments
2015-01-30 14:13:52 +09:00
Robert Lefebvre
02f3f96310 AC_PosControl: Enable altitude limit checking. 2015-01-30 14:13:45 +09:00
Randy Mackay
aeecc46f7b AC_PosControl: remove unnecessary set of desired_accel
The desired_accel is set again 11 lines lower so this line did nothing.
2015-01-14 16:23:26 +09:00
Jonathan Challinger
9ebd0e9960 AC_PosControl: reincarnate dead block of code 2015-01-14 16:20:17 +09:00
Jonathan Challinger
a580cd83e8 AC_PosControl: Fill _vel_desired.z for reporting 2015-01-14 16:08:48 +09:00
Randy Mackay
2a5a133bbf AC_AttControl: remove deprecated trigger_xy method 2015-01-07 14:03:49 +09:00
Jonathan Challinger
557d339cf1 AC_PosControl: remove various unnecessary timing hacks 2014-12-31 14:03:18 +09:00
Jonathan Challinger
d6e455417f AC_PosControl: change keep_xy_I_terms to a parameter of init_xy_controller 2014-12-31 14:03:13 +09:00
priseborough
12ea1d6e85 AC_AttitudeControl: Scale angle demand noise filter
Scales filter frequency using EKF nav gain scaler to take advantage of the reduced nav frequency whichcan tolerate a slower angle response.
This is required to reduce the effect of EKF optical flow noise increase with height.
2014-12-06 18:16:51 +11:00
priseborough
e80b1c67cd AC_AttitudeControl: Add EKF optical flow noise gain scaler
Allows gains to be adjusted to compensate for optical flow noise
2014-12-06 18:16:50 +11:00
priseborough
2dff76394d AC_PosControl: Add spike and noise filter to demanded angles
This has been done to provide a smooth psotion hold when using an optical flow aided EKF which can be noisy.

Signed-off-by: priseborough <p_riseborough@live.com.au>
2014-12-06 18:16:49 +11:00
Jonathan Challinger
bfe71fea82 AC_PosControl: Use blended accelerometer measurement in altitude control 2014-12-05 19:40:10 +09:00
Jonathan Challinger
e81c1dd5a1 AC_PosControl: add force_descend option to set_alt_target_from_climb_rate 2014-11-13 18:40:38 -08:00
Randy Mackay
ac7ea2a12c AC_PosControl: use AttControl's sqrt_controller 2014-10-27 15:20:48 +09:00
Jonathan Challinger
779baa006d AC_PosControl: Use sqrt_controller function 2014-10-27 15:20:44 +09:00
Randy Mackay
a1cfd03c9b AC_PosControl: bug fix dt calculation
fixes issue in which now could be earlier than _last_update_xy_ms
leading to a large dt value and a sudden lean on takeoff
2014-10-21 11:40:47 +09:00
Jonathan Challinger
4a397a8d67 AC_PosControl: Protect from divide-by-zero in get_stopping_point_xy 2014-10-10 21:17:12 +09:00
Randy Mackay
1754cacf3c AC_PosControl: remove completed to-do comments 2014-10-04 23:49:24 +09:00
Randy Mackay
cf3b2be99c AC_PosControl: 4hz filter on z-axis velocity error 2014-09-22 13:40:01 +09:00
Randy Mackay
665f353416 AC_PosControl: 2hz filter on accel error
Replaced hard-coded filter with LowPassFilter class allowing the
filter's to be 2hz on both APM and Pixhawk
2014-09-21 17:53:55 +09:00
Randy Mackay
1362bdc338 AC_PosControl: smooth take-off with accel PID's I term
This avoids an instantaneous jump in throttle during take-off by loading
the accel PID's I term with the expected change in throttle level
2014-08-04 21:04:09 +09:00
Randy Mackay
70568225a6 AC_PosControl: init members to resolve compiler warnings 2014-07-16 14:38:40 +09:00
Randy Mackay
9233bbab14 AC_PosControl: cast fabs to float to resolve compiler warnings 2014-07-16 14:38:38 +09:00
Jonathan Challinger
762bb3e6e8 AC_AttitudeControl: Limit _pos_target.z to below alt_max before computing error 2014-07-13 21:14:34 +09:00
Jonathan Challinger
5f66027ba3 AC_AttitudeControl: Fixup some minor mistakes in AC_PosControl 2014-07-13 17:17:31 +09:00
Randy Mackay
82ed70b25e AC_PosControl: add xyz velocity controller
Velocity controller interpretsthe velocity requests as
desired velocities (i.e. feed forward).  These are then used to update
the target position and also added to the target velocity.
Also renamed the set_desired_velocity() function to
set_desired_velocity_xy() to make clear only lat and lon axis are
updated.
2014-07-06 17:01:02 +09:00
Randy Mackay
4d4c7a2118 AC_AttControl: move freeze_ff to flags structure 2014-06-10 20:02:46 +09:00
lthall
8bbce7e658 AC_PosControl: freeze feed forward for alt control in Auto 2014-06-10 20:02:36 +09:00
lthall
0d87298221 AC_PosControl: freeze feed forward and vector fixes 2014-06-10 20:02:33 +09:00
Randy Mackay
2b0f142a17 AC_PosControl: fix typo in D-filter definition 2014-05-29 17:50:48 +09:00
Randy Mackay
29ca7a10df AC_PosControl: set alt hold accel control D term filter 2014-05-29 17:40:23 +09:00
Randy Mackay
c13db680b7 AC_PosControl: remove reset_I_xy
lean_angles_to_accel is now used to load the position rate I terms based
on vehicle's initial roll and pitch angle
2014-05-08 16:15:48 +09:00
Randy Mackay
cd8b1f278c AC_PosControl: remove unused _cos_yaw variable
Also removed _sin_yaw, _cos_pitch, _step saving a total of 17bytes of
RAM
Also made get_speed_up, get_speed_down, lean_angles_to_accel functions
const
2014-05-08 16:15:46 +09:00
Randy Mackay
0819e05896 AC_PosControl: lean_angles_to_accel added for smooth initialisation
init_xy_controller also added to capture initialisation all in one place
2014-05-08 16:15:41 +09:00
lthall
21c93e48ab AC_PosControl: include vel error when get_stopping_point_z
Pair programmed with Randy
2014-05-08 16:15:24 +09:00
Randy Mackay
a1f1dd8059 AC_PosControl: add is_active_z method
Consolidated z-axis timeout checks to save 4bytes of RAM
Added POS_CONTROL_ACTIVE_TIMEOUT_MS to make timeout consistent
2014-05-08 16:15:22 +09:00
Randy Mackay
937e9ea687 AC_PosControl: add set_target_to_stopping_point_xy method
Fixed bug in get_stopping_point_xy in which it would update Z-axis
target if vehicle was moving less than 10cm/s horizontally
2014-04-30 21:46:20 +09:00
Randy Mackay
9f63de9b59 AC_PosControl: set_speed_z accepts positive descent speeds 2014-04-30 21:46:09 +09:00
Randy Mackay
098f8169b0 AC_PosControl: add keep_xy_I_terms method
Stops horizontal PID's I terms from being reset when the controller is
next updated
2014-04-23 15:00:12 +09:00
Ju1ien
6c71569775 AC_PosControl: update_xy_controller allows not resetting I term 2014-04-23 14:59:49 +09:00
Randy Mackay
09a35cf90f AC_PosControl: bugfix for freezing I-term build-up 2014-04-23 11:33:53 +09:00
Randy Mackay
e565ee6d33 AC_PosControl: stop I term build-up when motors at max 2014-04-22 23:05:06 +09:00
Randy Mackay
6f6c9e2585 AC_PosControl: bug fix to vertical speed limit
Vehicle was not reaching target climb or descent rate because of
incorrectly defaulted acceleration
2014-04-21 21:36:02 +09:00
Randy Mackay
7e376bc517 PosControl: update_pos_controller renamed to update_xy_controller 2014-04-21 13:31:55 +09:00
Randy Mackay
90e205c905 AC_PosControl: replace safe_sqrt with pythagorous2 2014-04-01 20:43:51 +09:00
Randy Mackay
dd45647626 AC_PosControl: update some comments re leash lengths 2014-03-17 10:13:02 +09:00
Holger Steinhaus
345115fddd AC_PosControl: fixed leash length calc for descent speed 2014-03-17 10:12:47 +09:00
jschall
024855014f AC_PosControl: update _pos_error if it is being limited
This fixes a bug that causes 10hz throttle noise.
2014-02-17 22:33:06 +09:00
Randy Mackay
9130c88f15 AC_PosControl: throttle rate to simple P controller 2014-02-16 13:35:44 +11:00
Randy Mackay
94fb9c4274 AC_PosControl: replace APM_PI with AC_P 2014-02-15 06:09:08 +11:00
Randy Mackay
8b8d6a8e01 AC_PosControl: use trig values from ahrs 2014-02-15 05:27:48 +11:00
Randy Mackay
551836c49d AC_PosControl: make some methods const 2014-02-15 05:27:40 +11:00
Randy Mackay
26b257c8ba AC_AttControl: alternative get_stopping_point_z 2014-02-15 05:27:39 +11:00
Randy Mackay
1b8791a142 AC_PosControl: remove debug 2014-02-15 05:27:39 +11:00
Randy Mackay
de34359808 AC_PosControl: recalculate leash when speed or accel modified 2014-02-15 05:27:37 +11:00
Randy Mackay
80ae3dca2e AC_PosControl: remove debug 2014-02-15 05:27:36 +11:00
Randy Mackay
bbcf8cc84c AC_PosControl: add horizontal pos control 2014-02-15 05:27:35 +11:00
Randy Mackay
3ce1c0a9d5 AC_PosControl: add get_alt_error method 2014-02-15 05:27:34 +11:00
Randy Mackay
8988b48ad8 AC_PosControl: add init take-off 2014-02-15 05:27:34 +11:00
Randy Mackay
dcac124105 AC_PosControl: add throttle controller 2014-02-15 05:27:33 +11:00
Randy Mackay
05bb943a69 AC_AttControl: first draft of PosControl class 2014-02-15 05:27:33 +11:00