Commit Graph

191 Commits

Author SHA1 Message Date
Leonard Hall 1d720cc5e9 AC_PID: library update and additional functions
includes corrections from peer review
2021-04-03 12:07:59 +09:00
Leonard Hall f0f87be06d AC_PID: AC_PI_2D format changes 2021-02-18 12:59:39 +09:00
Patrick José Pereira f9732b6c70 AC_PID: Add missing const in member functions
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2021-02-03 18:45:14 +11:00
Peter Hall 1a14c8a05b AC_PID: populate pid_info limit feild 2021-01-05 10:27:28 +11:00
bnsgeyer c565536afa AC_PID: add support to smoothly reset the integrator 2020-12-21 23:33:48 -05:00
Andrew Tridgell 9e73922fd9 AC_PID: use calc_lowpass_alpha_dt() 2020-11-10 16:15:45 +11:00
Andrew Tridgell 739410953b AC_PID: added slew limiter AC_PID
this adds the fixed wing slew limiter as an optional part of
AC_PID. It allows the user to configure a maximum slew limit to
prevent oscillations in PIDs when gains are too high
2020-10-25 10:32:48 +11:00
Jim Stockwell 1565c69943 AC_HELI_PID: spelling in comment, leaded -> leaked 2020-09-11 08:39:58 +09:00
Peter Barker c78dcb15a1 AC_PID: remove dead get_ff(float target) method as per TODO comment 2020-09-09 13:19:17 +09:00
Andrew Tridgell ad69f6802f AC_PID: added AC_PI controller
will be used by IMU heater
2019-11-02 16:31:04 +11:00
Randy Mackay 0052dcc8f8 AC_PID: update pid_info when integrator set 2019-10-18 11:15:25 +09:00
Leonard Hall ee820258ad AC_HELI_PID: support for upgrade to PID object
updates parameters based on new PID library
rename get_leaky_i to update_leaky_i and move FILT locations
2019-07-25 17:38:15 +09:00
Leonard Hall ab0bdc9fe6 AC_PID: upgrade to PID object 2019-07-25 17:38:15 +09:00
Peter Barker 3175a2ce19 AC_PID: correct examples with override keyword 2019-04-30 09:29:59 +10:00
Randy Mackay 54a505dade AC_PID: fix filt_d_hz accessor
this accessor is not actually used
2019-04-18 10:26:56 +09:00
Randy Mackay cae020c307 AC_PID: minor format fix 2019-04-16 11:23:46 +09:00
Peter Barker 112ace8adb AC_PID: correct AC_PID_LEAK_MIN constant type 2019-04-05 23:04:17 -07:00
Peter Barker 2dae643280 AC_PID: update example to stop shadowing global chibios variable 2019-03-23 11:23:07 +11:00
Peter Barker 18c53b8d8a AC_PID: remove keywords.txt 2019-02-17 00:29:38 -08:00
Peter Barker b47733142f GLOBAL: rename DataFlash_Class to AP_Logger 2019-01-18 18:08:20 +11:00
Peter Barker 312243142b AC_PID: remove use of never-set AP_HAL_PX4 and AP_HAL_VRBRAIN 2019-01-18 09:53:44 +11:00
Leonard Hall 8c6a24450a AC_PID: Fix D term initialisation 2018-09-15 11:00:29 +10:00
Leonard Hall 4ceabe4838 AC_PID_2D: add reset for filter and D term 2018-09-04 13:37:28 +09:00
Peter Barker 774b091611 AC_PID: get example working again 2018-08-31 21:08:11 +09:00
Randy Mackay b381ae7bf3 AC_PID: support storing actual 2018-08-27 16:44:33 +09:00
Peter Barker e2b31a535c AC_PID: update example for new rc() method 2018-08-01 12:11:30 +09:00
Michael du Breuil 1d60b0ec62 AC_PID: Support new RC_Channels::read_input() 2018-04-26 08:00:09 +10:00
Michael du Breuil 5d84850f32 AC_PID: Use RC_Channels instead of hal.rcin 2018-04-11 21:47:07 +01:00
Randy Mackay 04822152da AC_PID: fixes after peer review of AC_PID_2D 2018-01-23 12:00:43 +09:00
Randy Mackay 398a0d89bf AC_P: add const accessor 2018-01-23 12:00:43 +09:00
Randy Mackay c1708db208 AC_PID: add const and use is_positive in AC_PI_2D 2018-01-23 12:00:43 +09:00
Leonard Hall fd964a21d6 AC_PID: add AC_PID_2D 2018-01-23 12:00:43 +09:00
Randy Mackay 4e8155f4e5 AC_PID: allow non-zero ff gain default 2018-01-05 13:33:21 +09:00
Randy Mackay 91d489d91e AC_PID: implement reset_filter 2017-10-26 19:44:47 +09:00
Randy Mackay f995106c1e AC_PID: minor formatting change 2017-08-09 18:03:09 +09:00
Pierre Kancir 320c5e1b96 AC_PID: example fix travis warning
missing function declaration
implicit cast
some style fix
2017-04-13 19:56:16 +01:00
Andrew Tridgell b97bf5d15e AC_PID: added feed-forward to AC_PID 2017-02-18 17:26:43 +11:00
murata 5e11497332 AC_PID: Unify from print or println to printf. 2017-01-27 18:20:22 +11:00
Andrew Tridgell ccae8979c1 AC_PID: expose filt_hz as a AP_Float
this allows defaults to be overridden
2017-01-12 17:39:37 +11:00
Andrew Tridgell 2086b591a2 AC_PID: expose ff() method in AC_PID
this allows for an abstract AC_PID class to be used in
AC_AttitudeControl for both multicopter and heli
2017-01-12 17:39:37 +11: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
Lucas De Marchi ae53920e5b build: don't build examples with old build system
We currently check examples are buildable with waf which doesn't need
the libraries to be specified in a make.inc file.  Having the makefiles
there is misleading since people try to build and realize the build is
broken.
2016-10-11 13:03:08 +11:00
Andrew Tridgell a6404cf1ea AC_PID: removed AFF from heli PID
this is not used any more. Discussed with Rob on dev call
2016-05-12 17:37:01 +10:00
Andrew Tridgell cf08c46f30 AC_PID: fixed default leak min for heli 2016-05-12 17:34:23 +10:00
Andrew Tridgell 412dc10353 AC_PID: expose parameters as AP_Float
this enables full tuning capability
2016-05-07 18:34:03 +10:00
Ricardo de Almeida Gonzaga 5bd034a5a8 Global: start using cmath instead of math.h 2016-04-05 21:06:19 -07:00
Randy Mackay de537390c2 AC_HELI_PID: adjust parameter descriptions
ILMI range is now 0 to 1
2016-04-01 11:59:30 +09:00
Randy Mackay 3465f05bec AC_HELI_PID: shorten FILT_HZ to FILT, I_L_MIN to ILMI
Also minor formatting fix
2016-04-01 11:59:30 +09:00
Randy Mackay 425caeabf7 AC_PI_2D: fix parameter description 2016-04-01 11:59:30 +09:00
Randy Mackay 227e4f86d7 AC_PID: fix parameter description 2016-04-01 11:59:30 +09:00
Randy Mackay 920425567c AC_PID: shorten FILT_HZ to FILT 2016-04-01 11:59:30 +09:00
Lucas De Marchi f637a29ab6 AC_PID: 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
Gustavo Jose de Sousa c2e3f05dbf waf: ardupilotwaf: prefix build context methods with ap_
It helps to distinguish between things from waf and things from ardupilotwaf.
2016-01-22 20:10:29 -02:00
Gustavo Jose de Sousa 3d22490397 waf: examples: use methods from bld instead of ardupilotwaf 2016-01-22 20:10:29 -02:00
Gustavo Jose de Sousa d281067bcc waf: make example binaries be placed in 'examples' dir
This commit makes examples' wscripts use ardupilotwaf.example() instead of
ardupilot.program().
2016-01-15 16:46:41 -02:00
Andrew Tridgell 27b43f4036 AC_PID: fixed example build warning 2016-01-04 08:22:17 +11:00
Jonathan Challinger 9e6be648b9 AC_PID: fix example build 2015-12-29 10:46:35 -08:00
Lucas De Marchi a096703b06 Global: don't link with AP_Progmem
AP_Progmem is not used anymore.
2015-12-27 15:58:12 -02:00
Lucas De Marchi 247195512f AC_PID: remove unused AP_ADC_AnalogSource 2015-12-03 13:32:42 +11:00
Caio Marcelo de Oliveira Filho 6e7b73610d waf: add waf support 2015-12-03 07:54:30 +11: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
Andrew Tridgell 8f4ce7f20b build: removed all nocore.inoflag files
these were APM2 specific
2015-11-16 08:05:17 +11:00
Robert Lefebvre c66af9b788 AC_HELI_PID: Add Leak-Min param and functionality. 2015-11-12 19:37:20 +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
Caio Marcelo de Oliveira Filho 9a2e0c2fd9 AC_PID: remove unnecessary includes from example 2015-10-21 09:16:10 +11:00
Caio Marcelo de Oliveira Filho ec52df991c build: compile only the HAL files needed by the board
Instead of requiring every program to specify the HAL related modules,
let the build system do it (in practice everything we compiled depended
on HAL anyway). This allow including only the necessary files in the
compilation.
2015-10-21 09:16:07 +11:00
Caio Marcelo de Oliveira Filho 2e464a53c2 AP_HAL: make code not depend on concrete HAL implementations
The switching between different AP_HAL was happening by giving different
definitions of AP_HAL_BOARD_DRIVER, and the programs would use it to
instantiate.

A program or library code would have to explicitly include (and depend)
on the concrete implementation of the HAL, even when using it only via
interface.

The proposed change move this dependency to be link time. There is a
AP_HAL::get_HAL() function that is used by the client code. Each
implementation of HAL provides its own definition of this function,
returning the appropriate concrete instance.

Since this replaces the job of AP_HAL_BOARD_DRIVER, the definition was
removed.

The static variables for PX4 and VRBRAIN were named differently to avoid
shadowing the extern symbol 'hal'.
2015-10-21 09:16:07 +11:00
Grant Morphett 1595c137f8 AC_PID_test: fixed AC_HELI_PID constructor 2015-08-31 13:45:13 +09:00
Gustavo Jose de Sousa 286d084d83 AC_PID: 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
Andrew Tridgell a62c450f86 AC_PID: convert example from .pde to .cpp 2015-06-01 16:58:10 +10:00
Andrew Tridgell 3ec8857fbc AC_PID: added set_desired_rate() interface
used to setup _pid_info for logging
2015-05-27 14:28:48 +10:00
Andrew Tridgell 6000bb0c32 AC_PID: log desired rate for VFF as well as AFF 2015-05-27 14:28:48 +10:00
Robert Lefebvre 366f87c91c AC_HELI_PID: Add Acceleration FF method. 2015-05-27 14:28:47 +10:00
Andrew Tridgell e79a21d8c2 AC_PID: fill in desired rate for heli PID 2015-05-27 14:28:46 +10:00
Robert Lefebvre 967071ca62 AC_PID: Integrate PID Logging functionality. 2015-05-27 14:28:44 +10:00
Robert Lefebvre bcc3fa0526 AC_HELI_PID: Pass default FF param setting in constructor 2015-05-22 09:38:28 +09:00
Randy Mackay 56b92e7d8c AC_PID: fix example sketch 2015-05-13 17:55:39 +09:00
Tom Pittenger 9d74f57ed3 AP_PID: replace fabs() with fabsf() 2015-05-09 09:57:26 +10:00
Andrew Tridgell 33555b7f12 AC_PID: revert AP_Math class change 2015-05-05 13:27:05 +10:00
Tom Pittenger 54f4d4b07c AP_PID: compiler warnings: reordered constructor 2015-05-05 13:26:56 +10:00
Tom Pittenger 01180d52c4 AP_PID: compiler warnings: apply is_zero(float) 2015-05-05 13:26:51 +10:00
Andrew Tridgell 777685ce1f AC_PID: fix for HAL_SITL rename 2015-05-05 09:45:54 +10:00
Randy Mackay 67b0c6f5c4 AC_PID: replace is_equal with is_zero 2015-04-28 16:22:08 +09:00
Randy Mackay 3514177314 AC_PI_2D: minor format fix 2015-04-28 16:21:53 +09:00
dgrat 303cfd683a AC_PID: replace floating point '==' with is_equal
Also add div-by-zero check to fix calc_filt_alpha

Also get_i and get_shrink_i do not need to set values to zero in Vector2f
constructor because this is already done.
2015-04-28 16:21:46 +09:00
Tom Pittenger 4b97cc1957 AC_PID: fix compile warnings re float constants 2015-04-24 12:22:43 +09:00
Jonathan Challinger 6ea91d012e AC_PID: calculate filt_alpha every time the filter is run 2015-04-14 16:19:02 +09:00
Randy Mackay a095a8c3a1 AC_PID: more protection against NaN and Inf 2015-04-09 20:19:55 +09:00
Leonard Hall ae77c18a19 AC_PID: Protect against NaN and INF 2015-04-09 18:30:12 +09:00
Randy Mackay f260536373 AC_PID: fix example sketch compile error 2015-04-08 15:05:29 +09:00
Randy Mackay 3f3e622be5 AC_PID: fix example sketch 2015-03-30 16:07:56 -07:00
Randy Mackay 12724e9556 AC_PID: remove include of stdio.h 2015-03-11 20:40:05 +09:00
Randy Mackay cc0d5b9ced AC_PI_2D: replace set_filt_hz method with filt_hz
Thanks to Jonathan Challinger for spotting this bug
2015-03-11 17:28:36 +09:00
Randy Mackay c10b0b34ca AC_PID: replace set_filt_hz method with filt_hz
Thanks to Jonathan Challinger for spotting this bug
Also add sanity check to filt_hz
2015-03-11 17:28:20 +09:00
Leonard Hall 34a5bc8b33 AC_PI_2D: 2-axis PI controller 2015-03-06 14:01:56 +09:00
Leonard Hall 046949ea8a AC_HELI_PID: add input filter and restructure
Also removed unused initial_ff from construtor
2015-03-06 14:01:54 +09:00
Leonard Hall 517448e536 AC_PID: add input filtering and restructure 2015-03-06 14:01:52 +09:00
Andrew Tridgell 83dc9bf5b3 AC_PID: fixed example build 2014-08-13 22:11:16 +10:00
Randy Mackay 0a46afa6c4 AC_PID: init members to reduce compiler warnings 2014-07-16 17:46:14 +09:00