1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 14:25:20 +03:00

Higher-order gyro filter (#5257)

* Implement nth order Butterworth

Uses biquad sections

* Purge RC+FIR2

* Add butterworth LPS as gyro filter

Replaces RC+FIR

* Make FKF code conditional

* Add USE_FIR_FILTER_DENOISE

Denoise is almost useless anyway ...
This commit is contained in:
Petr Ledvina 2018-03-14 13:45:20 +01:00 committed by Michael Keller
parent 35f5e5025f
commit 141d6ec30a
8 changed files with 129 additions and 43 deletions

View file

@ -177,7 +177,9 @@ static FAST_RAM void *ptermYawFilter;
typedef union dtermFilterLpf_u {
pt1Filter_t pt1Filter[2];
biquadFilter_t biquadFilter[2];
#if defined(USE_FIR_FILTER_DENOISE)
firFilterDenoise_t denoisingFilter[2];
#endif
} dtermFilterLpf_t;
void pidInitFilters(const pidProfile_t *pidProfile)
@ -239,6 +241,7 @@ void pidInitFilters(const pidProfile_t *pidProfile)
biquadFilterInitLPF(dtermFilterLpf[axis], pidProfile->dterm_lpf_hz, targetPidLooptime);
}
break;
#if defined(USE_FIR_FILTER_DENOISE)
case FILTER_FIR:
dtermLpfApplyFn = (filterApplyFnPtr)firFilterDenoiseUpdate;
for (int axis = FD_ROLL; axis <= FD_PITCH; axis++) {
@ -246,6 +249,7 @@ void pidInitFilters(const pidProfile_t *pidProfile)
firFilterDenoiseInit(dtermFilterLpf[axis], pidProfile->dterm_lpf_hz, targetPidLooptime);
}
break;
#endif
}
}