INAV Gyro and D-term filters: CLI settings

Gyro lowpass, dynamic gyro notch, adaptive and LULU filters, the RPM filter and the D-term lowpass. These decide how much motor noise reaches the PID loop and how much delay the filtering adds.

28 settings in INAV 9.1. Each range and value list is read from the release's src/main/fc/settings.yaml, each default from the release's settings.yaml, with each constant and C type resolved by INAV's own settings.rb against the SITL and flight-controller target headers, so a board's own config can still change it. Set one with set name = value, then save. Paste a diff all into the CLI checker to test it against any release.

SettingTypeRange or valuesDefault 8.09.09.1Notes
dterm_lpf_hz # uint16
control profile
0 to 500 110 ✓✓✓ Dterm low pass filter cutoff frequency. Default setting is very conservative and small multirotors should use higher value between 80 and 100Hz. 80 seems like a gold spot for 7-inch builds while 100 should work best with 5-inch machines. If motors are getting too hot, lower the value
dterm_lpf_type # uint8
control profile
PT1, BIQUAD, PT2, PT3, LULU PT2 ✓✓✓ Defines the type of stage 1 D-term LPF filter. Possible values: `PT1`, `BIQUAD`, `PT2`, `PT3`.
dynamic_gyro_notch_3d_q # uint16
global
1 to 1000 200
needs USE_DYNAMIC_FILTERS
✓✓✓ Q factor for 3D dynamic notches
dynamic_gyro_notch_enabled # uint8
global
OFF, ON ON
needs USE_DYNAMIC_FILTERS
✓✓✓ Enable/disable dynamic gyro notch also known as Matrix Filter
dynamic_gyro_notch_min_hz # uint16
global
30 to 250 50
needs USE_DYNAMIC_FILTERS
✓✓✓ Minimum frequency for dynamic notches. Default value of `150` works best with 5" multirotors. Should be lowered with increased size of propellers. Values around `100` work fine on 7" drones. 10" can go down to `60` - `70`
dynamic_gyro_notch_mode # uint8
global
2D, 3D 2D
needs USE_DYNAMIC_FILTERS
✓✓✓ Gyro dynamic notch type
dynamic_gyro_notch_q # uint16
global
1 to 1000 120
needs USE_DYNAMIC_FILTERS
✓✓✓ Q factor for dynamic notches
gyro_adaptive_filter_hpf_hz # float
global
1 to 50 10
needs USE_ADAPTIVE_FILTER
✓✓✓ High pass filter cutoff frequency
gyro_adaptive_filter_integrator_threshold_high # float
global
1 to 10 4
needs USE_ADAPTIVE_FILTER
✓✓✓ High threshold for adaptive filter integrator
gyro_adaptive_filter_integrator_threshold_low # float
global
-10 to 0 -2
needs USE_ADAPTIVE_FILTER
✓✓✓ Low threshold for adaptive filter integrator
gyro_adaptive_filter_max_hz # uint16
global
0 to 505 150
needs USE_ADAPTIVE_FILTER
✓✓✓ Maximum frequency for adaptive filter
gyro_adaptive_filter_min_hz # uint16
global
0 to 250 50
needs USE_ADAPTIVE_FILTER
✓✓✓ Minimum frequency for adaptive filter
gyro_adaptive_filter_std_lpf_hz # float
global
0 to 10 2
needs USE_ADAPTIVE_FILTER
✓✓✓ Standard deviation low pass filter cutoff frequency
gyro_adaptive_filter_target # float
global
1 to 6 3.5
needs USE_ADAPTIVE_FILTER
✓✓✓ Target value for adaptive filter
gyro_anti_aliasing_lpf_hz # uint16
global
0 to 1000 250 ✓✓✓ Gyro processing anti-aliasing filter cutoff frequency. In normal operation this filter setting should never be changed. In Hz
gyro_dyn_lpf_curve_expo # uint8
global
1 to 10 5 ✓✓✓ Expo value for the throttle-to-frequency mapping for Dynamic LPF
gyro_dyn_lpf_max_hz # uint16
global
40 to 1000 500 ✓✓✓ Maximum frequency of the gyro Dynamic LPF
gyro_dyn_lpf_min_hz # uint16
global
40 to 400 200 ✓✓✓ Minimum frequency of the gyro Dynamic LPF
gyro_filter_mode # uint8
global
OFF, STATIC, DYNAMIC, ADAPTIVE STATIC ✓✓✓ Specifies the type of the software LPF of the gyro signals.
gyro_lulu_enabled # uint8
global
OFF, ON OFF ✓✓✓ Enable/disable gyro LULU filter
gyro_lulu_sample_count # uint8
global
1 to 15 3 ✓✓✓ Gyro lulu sample count, in number of samples.
gyro_main_lpf_hz # uint16
global
0 to 500 60 ✓✓✓ Software based gyro main lowpass filter. Value is cutoff frequency (Hz)
rpm_gyro_filter_enabled # uint8
global
OFF, ON OFF
needs USE_RPM_FILTER
✓✓✓ Enables gyro RPM filtere. Set to `ON` only when ESC telemetry is working and rotation speed of the motors is correctly reported to INAV
rpm_gyro_harmonics # uint8
global
1 to 3 1
needs USE_RPM_FILTER
✓✓✓ Number of harmonic frequences to be covered by gyro RPM filter. Default value of `1` usually works just fine
rpm_gyro_min_hz # uint8
global
30 to 200 100
needs USE_RPM_FILTER
✓✓✓ The lowest frequency for gyro RPM filtere. Default `150` is fine for 5" mini-quads. On 7-inch drones you can lower even down to `60`-`70`
rpm_gyro_q # uint16
global
1 to 3000 500
needs USE_RPM_FILTER
✓✓✓ Q factor for gyro RPM filter. Lower values give softer, wider attenuation. Usually there is no need to change this setting
setpoint_kalman_enabled # uint8
global
OFF, ON ON
needs USE_GYRO_KALMAN
✓✓✓ Enable Kalman filter on the gyro data
setpoint_kalman_q # uint16
global
1 to 1000 100
needs USE_GYRO_KALMAN
✓✓✓ Quality factor of the setpoint Kalman filter. Higher values means less filtering and lower phase delay. On 3-7 inch multirotors can be usually increased to 200-300 or even higher of clean builds

✓ present, Δ changed in that release (hover for what changed), — not in that release. “needs USE_…” is the build option the setting is compiled with: a target that does not define it has no such setting.Descriptions are INAV's own, from settings.yaml.

Other sections

What changed between releases: 8.0 → 9.0 · 9.0 → 9.1. Machine-readable: params.json (9.1.0), GPL-3.0 like the firmware it comes from.