Multi Dynamic Notch Filter (BF 4.3)

Derzeit berechnet Betaflight nur einen dynamischen Notch Filter. Stellt man width auf einen anderen Wert als 0 ein, so werden zwei Notch Filter erzeugt, die allerdings nur eine Störsignalspitze verfolgen. Die beiden Notchfilter haben immer einen festen Abstand zueinander. Dank RPM Filterung benötigt man diese Funktion nur noch sehr selten und width sollte stets 0 sein.

Nicht selten gibt es aber mehrere Störsignalspitzen im Gyroskopsignal außerhalb des RPM-Bandes welche gefiltert werden sollen. Betaflight wird ab v4.3 mehrere unabhängige dynamische Notch Filter unterstützen. Hat man mehrere Störsignalspitzen können diese nun individuell gefiltert werden. Auch wenn nur eine Störsignalspitze vorliegt können, je nach breite mehrere Notchfilter nah aneinander dies besser filtern.

Des Weiteren wird zur berechnung der Frequenzen nicht mehr die Fast Fourier Transformation sondern Sliding Discrete Fourier Transformion (SDFT) zur Berechnung verwendet. Diese ist deutlich schneller.

Der Q-Faktor wird hier dynamisch gesetzt. Bei niedrigen Frequenzen (des dynamischen Notch Filters) ist der Q Faktor schmaler und bei höheren Frequenzen breiter. Statt des Q Faktors wird nun die Bandbreite des dynamischn Notches angegeben. Je größer der Wert desto breiter, aber weniger stark ist die Unterdrückung der Störsignalspitzen. Höhere Werter erzeugen auch mehr Latenz (schlecht).

set dyn_notch_count = 2
set dyn_notch_bandwidth_hz = 45
set dyn_notch_min_hz = 150
set dyn_notch_max_hz = 600

Diese Werten werden als default-Werte voreingestellt und sind für Quadcopter mit RPM-Filterung optimal. Ohne RPM Filter sollte set dyn_notch_count zwischen 3 und 5 eingestellt werden. Je nach Störsignalverteilung kann auch eine höhere Bandwidth sinnvoll sein.

Quelle: https://github.com/betaflight/betaflight/pull/10554