Commit Graph

205 Commits

Author SHA1 Message Date
Peter Barker 8eb5baa4ae Filter: correct AP_Filter defines
- checking the build type is very rarely used and definitely not required here
 - fix boilerplate to conform to normal pattern of including the config header and #if'ing based on the _ENABLED directly after that
2023-11-21 21:13:42 +11:00
Andy Piper e729c8ccfa Filter: add AP_Filter support
enable filters with AP_FILTER_ENABLED
allow filters to be compiled out
add dynamic updates, remove load/save and enable
2023-11-21 13:26:23 +11:00
Andy Piper 6a40843a9e Filter: provide accessors for center and sample frequencies on NotchFilter 2023-11-21 13:26:23 +11:00
Andrew Tridgell b79e96ab57 Filter: protect against extremely low notch filter frequencies
an incorrectly configured ESC telemetry source can lead to a notch
running at very low frequencies. A simple example is a lua script like
this:

function update()
   esc_telem:update_rpm(12, 0, 0)
   return update, 10
end
return update()

where motor 12 is unused.

with that script in place we get a 1.0078 Hz filter which leads to
massive phase lag and a crashed aircraft

this is a safety protection. We should also try to find out why the
INS_HNTCH_FREQ lower limit is not working
2023-11-03 08:08:31 +11:00
Iampete1 3c6ddda5e8 Flter: notchfilter: remove unneeded value and pre-multiply for speed 2023-10-17 10:03:43 +11:00
Iampete1 d8e18a0fc7 Filter: LowPassFilter2p: constrain cuttoff to 40% of sample rate 2023-10-10 08:26:05 +09:00
Iampete1 b68ece1007 Filter: HarmonicNotch: convert harmonics to int32 param 2023-10-10 08:07:16 +09:00
Andy Piper f726ca1809 Filter: fix notch filter test. 2023-08-02 16:22:59 +01:00
Randy Mackay 07ecbd18ec Filter: add SlewCalculator2D 2023-08-01 09:16:17 +10:00
Randy Mackay f91cda7b6e Filter: SlewLimiter definitions moved to cpp 2023-08-01 09:16:17 +10:00
Andy Piper 0b20328756 Filter: fix notch filter test. 2023-07-18 11:06:02 +10:00
Iampete1 f77635a5a6 Filter: Examples: Add Transfer function check and MATLAB 2023-05-23 10:31:13 +10:00
Iampete1 4406570391 Filter: NotchFilter: private varables to protected 2023-05-23 10:31:13 +10:00
Peter Barker ae349b6d40 Filter: correct description of filter tracking mode 2023-05-17 12:24:01 +10:00
Iampete1 e613a2d812 Filter: examples: add SlewLimiter example to test functionality 2023-05-02 09:36:03 +10:00
Iampete1 8a4b30ec3f Filter: SlewLimiter: always caculate slew limit 2023-05-02 09:36:03 +10:00
Iampete1 8bd374d835 Filter: HarmonicNotch: update FREQ description 2023-03-15 18:53:55 +11:00
Randy Mackay e4d60347fb Filter: implement 3 element mode filter 2023-03-01 18:22:22 +11:00
Andy Piper 1e003871b0 Filter: save freq_min_ratio when saving parameters 2023-01-31 10:58:12 +11:00
Andy Piper 500f59d839 Filter: allow freq_min_ratio to be set on harmonic notch filter
allow harmonics to be set
2023-01-24 10:56:33 +11:00
Leonard Hall f0822e5121 Filter: Support changing update period 2022-12-13 17:10:06 +11:00
Andrew Tridgell 02c06167c1 Filter: allow for expansion of dynamic filters
this allows for the number of dynamic filters on a harmonic notch
filter to expand at runtime, which allows for ESC RPMs to be populated
from other than AP_Motors, such as with lua scripts or for fwd motors
in a SLT quadplane
2022-10-16 20:38:19 +11:00
Andy Piper 1fe7fb8f35 Filter: optimize notch filter frequency updates when the requested frequency has not changed 2022-09-22 11:48:28 +10:00
Andy Piper b8f01323ec Filter: constrain harmonic notch center frequency changes to be within a slew limit
raise notch filter slew for smaller aircraft
ensure NotchFilter init() resets the center frequency
2022-09-21 17:41:38 +10:00
Andrew Tridgell 4ed55d9e21 Filter: fixed out of bound access in ModeFilter 2022-09-06 10:49:50 +10:00
Iampete1 338779d27d Filter: params always use set method 2022-08-03 13:43:48 +01:00
Andrew Tridgell 0103776d83 Filter: fixed test_notchfilter for the change in allocate_filters()
changed for triple notch
2022-07-10 06:57:29 +10:00
Andy Piper dfba938e63 Filter: add triple harmonic notches 2022-07-03 18:21:41 +10:00
Andrew Tridgell eefc41fe30 Filter: added a way to plot attenuation and phase lag for complex filters 2022-06-30 20:58:37 +10:00
Andrew Tridgell 366aa7154c Filter: added FM_RAT for throttle notch frequency ratio
allow for configurable min frequency ratio for throttle based notches
2022-06-30 20:58:37 +10:00
Andrew Tridgell 7928fa6e69 Filter: added a NotchFilter test suite 2022-06-12 15:39:44 +10:00
Andrew Tridgell 7c782dda88 Filter: fixed ordering of samples in notch reset 2022-06-12 15:39:44 +10:00
Andrew Tridgell d07761cfd9 Filter: fixed reset of notch filters
when we reset a notch we need to init the stored values to the current
value, rather than assuming that zero is the right value

this matters when switching IMUs in flight when we are only running
notch filters on the active gyro
2022-06-12 15:39:44 +10:00
Andrew Tridgell 9e3a29bf86 Filter: added EnableOnAllIMUs option to harmonic notch filter 2022-06-12 15:39:44 +10:00
Dr.-Ing. Amilcar do Carmo Lucas d3eae308da Filter: NFC spell corrections in comments 2022-06-11 08:43:03 +09:00
Andy Piper 39d928aa49 Filter: add mutators for notch filter parameters 2022-05-04 17:05:51 +10:00
Peter Barker c3cd733f26 Filter: tidy includes 2022-05-03 09:14:58 +10:00
Andrew Tridgell d7d04bc7cf Filter: removed parameters from the old notch filter
saves some flash space
2022-04-19 09:39:03 +10:00
Andrew Tridgell 1cd1519a4f Filter: clarify meaning of 1st harmonic 2022-04-19 09:39:03 +10:00
Andrew Tridgell 7272a29b7b Filter: added RPM2 harmonic notch type 2022-04-19 09:39:03 +10:00
Iampete1 1521760a17 Filters: HarmonicNotch: remove statment on max number of notches harmonics from parm descripstion 2022-03-25 07:14:06 +11:00
Peter Barker 666c36a57f Filter: add trivial test for ModeFilter get method (float version) 2022-02-19 11:16:40 +11:00
Peter Barker f6a1df472a Filter: add trivial test that ModeFilter's get method works
.... previously only checking return value of apply
2022-02-18 17:55:04 +11:00
Peter Barker 0a8cccd79a Filter: add test for AverageIntegralFilter 2022-02-18 12:11:46 +11:00
Andy Piper fbdeea2d03 Filter: optimize hot parts of notch filter updates 2021-12-22 18:23:33 +11:00
Andy Piper 34920ebd60 Filter: allow harmonics and notch-per-motor in harmonic notch
allow default harmonics to be configured
allow combination of harmonics and indpendent centre frequencies
pre-calculate number of harmonics
2021-12-22 18:13:38 +11:00
Andy Piper 00da3520bc Filter: set output slew rate to zero when max is zero. 2021-11-11 08:13:23 +09:00
Pierre Kancir 60155a7fec Filter: add more unittests 2021-08-30 09:51:25 +10:00
Pierre Kancir fd38be843a Filter: finish modefilter test 2021-08-30 09:51:25 +10:00
Michelle Rossouw 3379a1a215 Filter: Add Vector2f option to notch filter 2021-07-06 14:56:02 +10:00