Paparazzi UAS
v5.15_devel-230-gc96ce27
Paparazzi is a free software Unmanned Aircraft System.
|
Simple first order low pass filter with bilinear transform. More...
Go to the source code of this file.
Data Structures | |
struct | FirstOrderLowPass |
First order low pass filter structure. More... | |
struct | SecondOrderLowPass |
Second order low pass filter structure. More... | |
struct | SecondOrderLowPass_int |
struct | Butterworth4LowPass |
Fourth order Butterworth low pass filter. More... | |
struct | Butterworth4LowPass_int |
Fourth order Butterworth low pass filter(fixed point version). More... | |
Macros | |
#define | INT32_FILT_FRAC 8 |
Typedefs | |
typedef struct SecondOrderLowPass | Butterworth2LowPass |
Second order Butterworth low pass filter. More... | |
typedef struct SecondOrderLowPass_int | Butterworth2LowPass_int |
Second order Butterworth low pass filter(fixed point version). More... | |
Functions | |
static void | init_first_order_low_pass (struct FirstOrderLowPass *filter, float tau, float sample_time, float value) |
Init first order low pass filter. More... | |
static float | update_first_order_low_pass (struct FirstOrderLowPass *filter, float value) |
Update first order low pass filter state with a new value. More... | |
static float | get_first_order_low_pass (struct FirstOrderLowPass *filter) |
Get current value of the first order low pass filter. More... | |
static void | init_second_order_low_pass (struct SecondOrderLowPass *filter, float tau, float Q, float sample_time, float value) |
Init second order low pass filter. More... | |
static float | update_second_order_low_pass (struct SecondOrderLowPass *filter, float value) |
Update second order low pass filter state with a new value. More... | |
static float | get_second_order_low_pass (struct SecondOrderLowPass *filter) |
Get current value of the second order low pass filter. More... | |
static void | init_second_order_low_pass_int (struct SecondOrderLowPass_int *filter, float cut_off, float Q, float sample_time, int32_t value) |
Init second order low pass filter(fixed point version). More... | |
static int32_t | update_second_order_low_pass_int (struct SecondOrderLowPass_int *filter, int32_t value) |
Update second order low pass filter state with a new value(fixed point version). More... | |
static int32_t | get_second_order_low_pass_int (struct SecondOrderLowPass_int *filter) |
Get current value of the second order low pass filter(fixed point version). More... | |
static void | init_butterworth_2_low_pass (Butterworth2LowPass *filter, float tau, float sample_time, float value) |
Init a second order Butterworth filter. More... | |
static float | update_butterworth_2_low_pass (Butterworth2LowPass *filter, float value) |
Update second order Butterworth low pass filter state with a new value. More... | |
static float | get_butterworth_2_low_pass (Butterworth2LowPass *filter) |
Get current value of the second order Butterworth low pass filter. More... | |
static void | init_butterworth_2_low_pass_int (Butterworth2LowPass_int *filter, float cut_off, float sample_time, int32_t value) |
Init a second order Butterworth filter. More... | |
static int32_t | update_butterworth_2_low_pass_int (Butterworth2LowPass_int *filter, int32_t value) |
Update second order Butterworth low pass filter state with a new value(fixed point version). More... | |
static int32_t | get_butterworth_2_low_pass_int (Butterworth2LowPass_int *filter) |
Get current value of the second order Butterworth low pass filter(fixed point version). More... | |
static void | init_butterworth_4_low_pass (Butterworth4LowPass *filter, float tau, float sample_time, float value) |
Init a fourth order Butterworth filter. More... | |
static float | update_butterworth_4_low_pass (Butterworth4LowPass *filter, float value) |
Update fourth order Butterworth low pass filter state with a new value. More... | |
static float | get_butterworth_4_low_pass (Butterworth4LowPass *filter) |
Get current value of the fourth order Butterworth low pass filter. More... | |
static void | init_butterworth_4_low_pass_int (Butterworth4LowPass_int *filter, float cut_off, float sample_time, int32_t value) |
Init a fourth order Butterworth filter(fixed point version). More... | |
static int32_t | update_butterworth_4_low_pass_int (Butterworth4LowPass_int *filter, int32_t value) |
Update fourth order Butterworth low pass filter state with a new value(fixed point version). More... | |
static int32_t | get_butterworth_4_low_pass_int (Butterworth4LowPass_int *filter) |
Get current value of the fourth order Butterworth low pass filter(fixed point version). More... | |
Simple first order low pass filter with bilinear transform.
Definition in file low_pass_filter.h.
struct FirstOrderLowPass |
First order low pass filter structure.
using bilinear z transform
Definition at line 39 of file low_pass_filter.h.
Data Fields | ||
---|---|---|
float | last_in | |
float | last_out | |
float | time_const |
struct SecondOrderLowPass |
Second order low pass filter structure.
using biquad filter with bilinear z transform
http://en.wikipedia.org/wiki/Digital_biquad_filter http://www.earlevel.com/main/2003/03/02/the-bilinear-z-transform
Laplace continious form:
1
H(s) = ----------------— s^2/w^2 + s/w*Q + 1
Polynomial discrete form:
b0 + b1 z^-1 + b2 z^-2
H(z) = -------------------— a0 + a1 z^-1 + a2 z^-2
with: a0 = 1 a1 = 2*(K^2 - 1) / (K^2 + K/Q + 1) a2 = (K^2 - K/Q + 1) / (K^2 + K/Q + 1) b0 = K^2 / (K^2 + K/Q + 1) b1 = 2*b0 b2 = b0 K = tan(pi*Fc/Fs) ~ pi*Fc/Fs = Ts/(2*tau) Fc: cutting frequency Fs: sampling frequency Ts: sampling period tau: time constant (tau = 1/(2*pi*Fc)) Q: gain at cutoff frequency
Note that b[0]=b[2], so we don't need to save b[2]
Definition at line 125 of file low_pass_filter.h.
Data Fields | ||
---|---|---|
float | a[2] | denominator gains |
float | b[2] | numerator gains |
float | i[2] | input history |
float | o[2] | output history |
struct SecondOrderLowPass_int |
struct Butterworth4LowPass |
Fourth order Butterworth low pass filter.
using two cascaded second order filters
Definition at line 342 of file low_pass_filter.h.
Data Fields | ||
---|---|---|
struct SecondOrderLowPass | lp1 | |
struct SecondOrderLowPass | lp2 |
struct Butterworth4LowPass_int |
Fourth order Butterworth low pass filter(fixed point version).
using two cascaded second order filters
Definition at line 394 of file low_pass_filter.h.
Data Fields | ||
---|---|---|
struct SecondOrderLowPass_int | lp1 | |
struct SecondOrderLowPass_int | lp2 |
#define INT32_FILT_FRAC 8 |
Definition at line 33 of file low_pass_filter.h.
Referenced by init_second_order_low_pass_int().
typedef struct SecondOrderLowPass Butterworth2LowPass |
Second order Butterworth low pass filter.
Definition at line 255 of file low_pass_filter.h.
typedef struct SecondOrderLowPass_int Butterworth2LowPass_int |
Second order Butterworth low pass filter(fixed point version).
Definition at line 297 of file low_pass_filter.h.
|
inlinestatic |
Get current value of the second order Butterworth low pass filter.
filter | second order Butterworth low pass filter structure |
Definition at line 290 of file low_pass_filter.h.
References SecondOrderLowPass::o.
|
inlinestatic |
Get current value of the second order Butterworth low pass filter(fixed point version).
filter | second order Butterworth low pass filter structure |
Definition at line 333 of file low_pass_filter.h.
References SecondOrderLowPass_int::o.
Referenced by mavlink_send_highres_imu().
|
inlinestatic |
Get current value of the fourth order Butterworth low pass filter.
filter | fourth order Butterworth low pass filter structure |
Definition at line 385 of file low_pass_filter.h.
References Butterworth4LowPass::lp2, and SecondOrderLowPass::o.
|
inlinestatic |
Get current value of the fourth order Butterworth low pass filter(fixed point version).
filter | fourth order Butterworth low pass filter structure |
Definition at line 438 of file low_pass_filter.h.
References Butterworth4LowPass_int::lp2, and SecondOrderLowPass_int::o.
|
inlinestatic |
Get current value of the first order low pass filter.
filter | first order low pass filter structure |
Definition at line 84 of file low_pass_filter.h.
References FirstOrderLowPass::last_out.
|
inlinestatic |
Get current value of the second order low pass filter.
filter | second order low pass filter structure |
Definition at line 178 of file low_pass_filter.h.
References SecondOrderLowPass::o.
|
inlinestatic |
Get current value of the second order low pass filter(fixed point version).
filter | second order low pass filter structure |
Definition at line 248 of file low_pass_filter.h.
References SecondOrderLowPass_int::o.
|
inlinestatic |
Init a second order Butterworth filter.
based on the generic second order filter with Q = 0.7071 = 1/sqrt(2)
http://en.wikipedia.org/wiki/Butterworth_filter
filter | second order Butterworth low pass filter structure |
tau | time constant of the second order low pass filter |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 269 of file low_pass_filter.h.
References init_second_order_low_pass().
Referenced by guidance_indi_enter(), indi_init_filters(), init_filters(), ms45xx_i2c_init(), and sdp3x_init().
|
inlinestatic |
Init a second order Butterworth filter.
based on the generic second order filter with Q = 0.7071 = 1/sqrt(2)
http://en.wikipedia.org/wiki/Butterworth_filter
filter | second order Butterworth low pass filter structure |
cut_off | Cutoff frequency of the filter with -3dB |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 311 of file low_pass_filter.h.
References init_second_order_low_pass_int().
Referenced by hff_init(), jevois_mavlink_filter_init(), and stabilization_attitude_init().
|
inlinestatic |
Init a fourth order Butterworth filter.
based on two generic second order filters with Q1 = 1.30651 and Q2 = 0.541184
http://en.wikipedia.org/wiki/Butterworth_filter
filter | fourth order Butterworth low pass filter structure |
tau | time constant of the fourth order low pass filter |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 360 of file low_pass_filter.h.
References init_second_order_low_pass(), Butterworth4LowPass::lp1, and Butterworth4LowPass::lp2.
|
inlinestatic |
Init a fourth order Butterworth filter(fixed point version).
based on two generic second order filters with Q1 = 1.30651 and Q2 = 0.541184
http://en.wikipedia.org/wiki/Butterworth_filter
filter | fourth order Butterworth low pass filter structure |
cut_off | Cutoff frequency of the filter with -3dB |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 412 of file low_pass_filter.h.
References init_second_order_low_pass_int(), Butterworth4LowPass_int::lp1, and Butterworth4LowPass_int::lp2.
|
inlinestatic |
Init first order low pass filter.
Laplace transform in continious time: 1 H(s) = ------— 1 + tau*s
filter | first order low pass filter structure |
tau | time constant of the first order low pass filter |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 57 of file low_pass_filter.h.
References FirstOrderLowPass::last_in, FirstOrderLowPass::last_out, and FirstOrderLowPass::time_const.
Referenced by nps_fdm_init(), and rpm_sensor_init().
|
inlinestatic |
Init second order low pass filter.
filter | second order low pass filter structure |
tau | time constant of the second order low pass filter |
Q | Q value of the second order low pass filter |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 141 of file low_pass_filter.h.
References SecondOrderLowPass::a, SecondOrderLowPass::b, SecondOrderLowPass::i, K, and SecondOrderLowPass::o.
Referenced by init_butterworth_2_low_pass(), and init_butterworth_4_low_pass().
|
inlinestatic |
Init second order low pass filter(fixed point version).
filter | second order low pass filter structure |
cut_off | Cutoff frequency of the filter with -3dB |
Q | Q value of the second order low pass filter |
sample_time | sampling period of the signal |
value | initial value of the filter |
Definition at line 199 of file low_pass_filter.h.
References SecondOrderLowPass::a, SecondOrderLowPass_int::a, SecondOrderLowPass::b, SecondOrderLowPass_int::b, BFP_OF_REAL, SecondOrderLowPass_int::i, INT32_FILT_FRAC, K, SecondOrderLowPass_int::loop_gain, and SecondOrderLowPass_int::o.
Referenced by init_butterworth_2_low_pass_int(), init_butterworth_4_low_pass_int(), and stabilization_init().
|
inlinestatic |
Update second order Butterworth low pass filter state with a new value.
filter | second order Butterworth low pass filter structure |
value | new input value of the filter |
Definition at line 280 of file low_pass_filter.h.
References update_second_order_low_pass().
Referenced by filter_pqr(), guidance_indi_propagate_filters(), lms_estimation(), ms45xx_i2c_event(), sdp3x_event(), stabilization_indi_calc_cmd(), and stabilization_indi_run().
|
inlinestatic |
Update second order Butterworth low pass filter state with a new value(fixed point version).
filter | second order Butterworth low pass filter structure |
value | new input value of the filter |
Definition at line 323 of file low_pass_filter.h.
References update_second_order_low_pass_int().
Referenced by hff_propagate(), indi_apply_actuator_butterworth_filters(), indi_apply_measurement_butterworth_filters(), and jevois_mavlink_filter_periodic().
|
inlinestatic |
Update fourth order Butterworth low pass filter state with a new value.
using two cascaded second order filters
filter | fourth order Butterworth low pass filter structure |
value | new input value of the filter |
Definition at line 374 of file low_pass_filter.h.
References Butterworth4LowPass::lp1, Butterworth4LowPass::lp2, and update_second_order_low_pass().
|
inlinestatic |
Update fourth order Butterworth low pass filter state with a new value(fixed point version).
using two cascaded second order filters
filter | fourth order Butterworth low pass filter structure |
value | new input value of the filter |
Definition at line 427 of file low_pass_filter.h.
References Butterworth4LowPass_int::lp1, Butterworth4LowPass_int::lp2, and update_second_order_low_pass_int().
|
inlinestatic |
Update first order low pass filter state with a new value.
filter | first order low pass filter structure |
value | new input value of the filter |
Definition at line 71 of file low_pass_filter.h.
References FirstOrderLowPass::last_in, FirstOrderLowPass::last_out, and FirstOrderLowPass::time_const.
Referenced by gazebo_write(), and rpm_sensor_periodic().
|
inlinestatic |
Update second order low pass filter state with a new value.
filter | second order low pass filter structure |
value | new input value of the filter |
Definition at line 159 of file low_pass_filter.h.
References SecondOrderLowPass::a, SecondOrderLowPass::b, SecondOrderLowPass::i, and SecondOrderLowPass::o.
Referenced by update_butterworth_2_low_pass(), and update_butterworth_4_low_pass().
|
inlinestatic |
Update second order low pass filter state with a new value(fixed point version).
filter | second order low pass filter structure |
value | new input value of the filter |
Definition at line 228 of file low_pass_filter.h.
References SecondOrderLowPass_int::a, SecondOrderLowPass_int::b, SecondOrderLowPass_int::i, SecondOrderLowPass_int::loop_gain, and SecondOrderLowPass_int::o.
Referenced by stabilization_filter_commands(), update_butterworth_2_low_pass_int(), and update_butterworth_4_low_pass_int().