Matthias Grob
870229ef49
FunctionsTest: add isFinite() tests with Vector3f arguments
2022-10-19 19:09:20 +02:00
Matthias Grob
5ca28dd6dc
Use isAllFinite() in all places that check finiteness on entire vectors or matrices
2022-10-19 19:09:20 +02:00
Thomas Stastny
da99387215
welford mean: protect against negative variances
2022-09-29 14:14:16 -04:00
Thomas Stastny
d3849c0265
welford mean: convert to matrix only template
2022-09-29 14:14:16 -04:00
Matthias Grob
e115095f70
Functions: correct interpolate function for N points
2022-09-07 08:00:27 +02:00
Matthias Grob
2edb35b1b5
Functions: add gradual function with arbitrary number of corner points
2022-09-07 08:00:26 +02:00
mcsauder
87a5705960
Rename math::gradual() to math::interpolate() and add unit tests to cover additional corner cases.
2022-08-18 14:18:02 +02:00
Daniel Agar
bce4237963
move ekf2 Matrix helper utilities to mathlib
2022-08-05 09:58:07 -04:00
Thomas Stastny
e4b11c49c3
mathlib: add second order reference model filter with optional rate feedback ( #19246 )
...
mathlib: add second order reference model filter with optional rate feedback (#19246 )
Reference models can be used as filters which exhibit a particular, chosen (reference) dynamic behavior. This PR implements a simple second order transfer function which can be used as such a reference model, additionally with rate feedback. The system is parameterized by explicitly set natural frequency and damping ratio. Another nice externality is that the output state and rate are kinematically consistent. Forward-euler and bilinear transform discretizations for the state space integration step are available.
2022-04-05 10:31:41 +02:00
Matthias Grob
74c0ae6e55
Functions: add sign from boolean function with unit tests
2022-03-23 10:51:45 +01:00
Claudio Micheli
d122513197
extend support for Battery status message
...
Signed-off-by: Claudio Micheli <claudio@auterion.com >
2022-01-13 08:40:34 +01:00
Daniel Agar
ab547bb982
sensors/vehicle_angular_velocity: RPM notch don't fully disable if first harmonic frequency drops below minimum frequency
...
- keep higher frequency harmonics enabled per ESC
- cleanup timestamp handling (timeouts, etc)
2022-01-10 14:51:29 -05:00
Daniel Agar
b58922a5d7
sensors/vehicle_angular_velocity: notch filters automatically reset on sufficient parameter change
2022-01-10 14:51:29 -05:00
Daniel Agar
7d632254be
NotchFilter push initialization/reset into filter
...
- this simplifies the reset by allowing a notch filter to reset as
needed
- improves cascade initialization, on reset each filter will reset
properly from the previous
2022-01-10 14:51:29 -05:00
Daniel Agar
ecc2ca7f98
mathlib: int16_t negate explicitly handle both INT16_MIN and INT16_MAX
...
- technically negating INT16_MAX doesn't need special handling, but
this ensures any simple saturation logic downstream works by default
2021-12-15 12:45:58 -05:00
bresch
67a893ac6d
WelfordMean: remove unnecessary case for first sample
...
setting the mean to the sample value and then adding 0 is the same as
setting the mean to zero and then add the sample value divided by 1
2021-12-13 11:42:48 -05:00
bresch
5468841aa5
WelfordMean: add unit test
2021-12-13 11:42:48 -05:00
Matthias Grob
68e2940f58
math: support max of three values additional to min and use it everywhere
2021-12-07 21:06:51 +01:00
Matthias Grob
e8676fe87a
BATTERY_STATUS: improve filling cell voltage
...
according to review comment
2021-12-07 21:06:51 +01:00
bresch
43fb076828
AngularAcceleration: explicitly disable filter when cutoff <= 0
2021-11-18 09:25:47 +01:00
Daniel Agar
0ec3f0d2cb
mathlib: LowPassFilter2p update cutoff freq min to match NotchFilter
...
- numerically the cutoff frequency not being smaller than 1% of the
sample frequency is probably a better choice, but we're mostly filtering
16 bit data now stored in 32 bit float
2021-11-11 11:17:15 -05:00
Daniel Agar
78436e706c
mathlib: NotchFilter add optimized parameter update if only notch frequency changes
2021-11-11 11:17:15 -05:00
Matthias Grob
8b37db7825
Functions: fix corner case x_low == x_high == value resulting in NAN
...
and added unit test to cover it
2021-10-13 17:24:16 -04:00
bresch
1b58202b0d
AlphaFilter: add function to set param from cutoff frequency
2021-10-06 16:26:03 +02:00
Matthias Grob
58ea97a699
MulticopterPositionControl: add horizontal margin for saturation cases
2021-09-08 19:55:27 +02:00
Daniel Agar
65745a3676
purge broken qurt support and atlflight boards
2021-07-16 08:53:36 -04:00
Daniel Agar
b5430c22c4
AlphaFilter: move from ecl -> mathlib
2021-07-15 10:38:24 -04:00
Daniel Agar
a5ee28883a
gyro_fft: track FFT peaks and median filter frequency
2021-07-06 12:32:25 -04:00
Daniel Agar
d430e13401
sensors: wait for real sample rate to initialize LowPassFilter2p
2021-06-01 08:58:10 -04:00
Daniel Agar
438b0abc7a
mathlib: Biquad filters use internal fields for parameter update
2021-06-01 08:58:10 -04:00
Daniel Agar
9661eddef8
mathlib: LowPassFilter2p initialize b0 to 1 for safety
2021-06-01 08:58:10 -04:00
Daniel Agar
5493d96d17
mathlib: merge LowPassFilter2p, LowPassFilter2pArray, and LowPassFilter2pVector3f
...
- fix reset for direct form 2
- push NAN checks out to filter users
2021-05-31 10:26:45 -04:00
Daniel Agar
f25a70a674
mathlib: Notchfilter updates
...
- merge NotchFilterArray into regular NotchFilter (apply vs applyArray)
- only use direct form 1 to prevent reset confusion
- safe default field initialization
- update VehicleAngularVelocity usage
2021-05-31 10:26:45 -04:00
Daniel Agar
015849b402
mathlib: LowPassFilter2p and NotchFilter add magnitude response getter
2021-04-05 22:47:30 -04:00
Daniel Agar
e57aaaaa5e
rotate accel/gyro FIFO before publish and fix angular velocity filter resets
...
- rotates accel & gyro FIFO data before publication both to simplify downstream usage (including log review) and fix other issues
- to best handle int16_t data rotations are now either performed with swaps if possible, otherwise promoted to float, rotated using the full rotation matrix, then rounded back to int16_t
- fix sensors/vehicle_angular_velocity filter reset both with proper rotation and new calibration uncorrect helper
- in FIFO case filtering is done before calibration is applied, but we need to handle a possible reset from a completely different sensor (vehicle body angular velocity -> sensor frame uncorrected data)
2021-03-22 12:01:12 -04:00
Daniel Agar
2257c3767e
simple gyro auto calibration module
2021-03-15 09:46:47 +01:00
bresch
be9b3404a2
lpf test: test several sampling frequencies
2021-02-26 14:06:45 -05:00
bresch
3277648959
lpf test: move to common function
2021-02-26 14:06:45 -05:00
bresch
844602c961
Add unit tests for Butterworth 2nd order low-pass filter
2021-02-26 14:06:45 -05:00
Daniel Agar
6482120d9a
sensors/vehicle_angular_velocity: use full raw FIFO data (sensor_gyro_fifo) if available
2021-02-25 10:06:17 -05:00
Matthias Grob
a637f282ce
FunctionsTest: cover lerp
2021-02-24 17:27:31 +01:00
Beat Küng
14bf9cf753
mc: add SYS_VEHICLE_RESP param to configure vehicle responsiveness
2021-02-24 17:27:31 +01:00
Julian Kent
e014954c91
Remove old matrix inversion routines
2021-01-28 09:14:08 +01:00
Julien Lecoeur
343cf5603e
initial control allocation support
...
- control allocation module with multirotor, VTOL standard, and tiltrotor support
- angular_velocity_controller
- See https://github.com/PX4/PX4-Autopilot/pull/13351 for details
Co-authored-by: Silvan Fuhrer <silvan@auterion.com >
Co-authored-by: Roman Bapst <bapstroman@gmail.com >
2021-01-18 11:25:37 -05:00
Julian Kent
a5dfa0c803
Add helper function for decel distances
...
Co-authored-by: RomanBapst <bapstroman@gmail.com >
2021-01-13 10:26:10 +01:00
Matthias Grob
badaf1eae0
Functions: add squareroot linear function
2020-12-03 18:19:42 +01:00
Daniel Agar
d14deb0e5a
FFT add simple median filter
2020-11-02 12:58:46 -05:00
Daniel Agar
d5e68bc05a
mathlib: NotchFilter delete unused update method
2020-10-27 12:30:59 -04:00
Matthias Grob
400d97e60c
math: add unit tests for everything in Functions.hpp
2020-07-24 11:31:15 +02:00
Matthias Grob
0b391fdcfc
mc_att_control: add gradual3 function to cover hover thrust rescaling
2020-07-24 11:31:15 +02:00