sensors: rc filter no unstable cutoff, better initialisation, reset filter on change, constrain output

Filter gets unstable if cutoff is above sample rate/2.
Filter initial frequencies do not matter a lot because they get replaced by parameters anyways.
Filter delay values get reset to 0 when the filter is reconfigured otherwise there can be some weird spikes in the output.
Filter output gets constrained to the range again because of possible overshoot.
This commit is contained in:
Matthias Grob
2017-01-30 16:47:56 +01:00
committed by Lorenz Meier
parent 81dcba3a2a
commit 9e80a6c9d6
3 changed files with 24 additions and 14 deletions
+2 -1
View File
@@ -388,7 +388,8 @@ int update_parameters(const ParameterHandles &parameter_handles, Parameters &par
param_get(parameter_handles.rc_flt_smp_rate, &(parameters.rc_flt_smp_rate));
parameters.rc_flt_smp_rate = math::max(1.0f, parameters.rc_flt_smp_rate);
param_get(parameter_handles.rc_flt_cutoff, &(parameters.rc_flt_cutoff));
parameters.rc_flt_cutoff = math::max(1.0f, parameters.rc_flt_cutoff);
/* make sure the filter is in its stable region -> fc < fs/2 */
parameters.rc_flt_cutoff = math::constrain(parameters.rc_flt_cutoff, 0.1f, (parameters.rc_flt_smp_rate / 2) - 1.f);
/* Airspeed offset */
param_get(parameter_handles.diff_pres_offset_pa, &(parameters.diff_pres_offset_pa));