Betaflight 3.0 Notch Filter Howto

Bereits seit einiger Zeit werden in Betaflight sogenannte Lowpass-Filter verwendet, die die Daten oberhalb eines bestimmten Frequenzbereiches filtern und versuchen Vibrationen herauszufiltern. Dies funktioniert zwar verhältnismäßig gut, stützt sich aber Erfahrungswerte und nicht auf tatsächliche Werte eines spezifischen Setups . Eine der wichtigsten Neuerungen in Betaflight 3.0 dürfte somit der Notch-Filter für die Gyro-Daten sein.

Zusätzlich wurde noch ein weiterer Notch-Filter für den D Term eingeführt. Hier scheinen die voreingestellten Werte die meisten Szenarien abzudecken. Ich habe auch noch nichts weiter gelesen, wie man diese Einstellungen optimieren kann/soll.

Warum das alles?
„Saubere“ Gyro-Daten helfen uns enorm dabei, die PIDs entsprechend einzustellen. Die Vibrationen aus den Motoren und Propellern haben uns bisher oft daran gehindert, gerade P und D entsprechend hoch einzustellen um den Kopter möglichst „knackig“ zu machen. Hohe D Werte haben oft zu einer Überhitzung der Motoren geführt. Boris B sagte neulich, dass wir eigentlich bisher gezwungenermaßen mit viel zu wenig D geflogen sind. Die neuen Filter werden es uns nun ermöglichen, mit höheren Werten fliegen zu können.

Die vom Gyro gelieferten Daten werden in einem hohen Maße von den Vibrationen der Motoren und Propeller beeinflusst. Ziel des Notch-Filters ist es, diese Daten möglichst effektiv zu bereinigen, bevor die Werte vom PID-Controller weiter verwendet werden. Hierbei werden die tatsächlichen Frequenzen der Vibrationen zu Rate gezogen, die zunächst mittels einer Blackbox-Analyse ermittelt werden. Hierzu geht man wie folgt vor:

Zunächst aktviert man das Blackbox-Feature in Betaflight. Die Aufzeichnungsrate stellt man dabei auf mindestens 1kHz ein. Dies ist notwendig, da man so nach dem Nyquist-Shannon Abtasttheorem die Frequenzdaten im für uns entscheidenden Bereich bis 500Hz erhält. Die von uns gesuchten Frequenzen liegen üblicherweise im Bereich zwischen 200 und 300Hz. Mehr ist natürlich immer besser und bei 4kHz Aufzeichnung erhält man Daten bis 2kHz. Wer hier tiefer einsteigen möchte, dem sei dieser Artikel auf Wikipedia ans Herz gelegt.

Im CLI muss man nun noch 2 Befehle eingeben, damit auch die richtigen Daten für die Analyse aufgezeichnet werden:

set debug_mode=notch
save

Dann geht man einfach eine Runde fliegen, etwas hovern, ein paar Flips und Rollen und ein wenig herumfliegen, gerne auch mal mit Vollgas.

Anschließend liest man die Daten aus der Blackbox aus und öffnet diese  mit dem Betaflight Blackbox Explorer (der alte Cleanflight Blackbox Explorer funktioniert hierfür nicht!). Anschließend erstellt man ein Graph Setup mit den Debug-Daten (Debug Notch).

notch1

Mit einem Klick rechts unter Custom Graph auf die erste Zeile erscheint nun unten links ein Fenster mit der Frequenzanalyse, diese kann man oben in der Funktionsleiste noch maximieren. Am besten schiebt man jetzt den Slider rechts an der Frequenzanalyse nach oben und sieht nun die Daten in der vollen Pracht:

notch2

Update: In der finalen 3.0 Version wurden die Debug-Zeilen noch einmal geändert. Die ersten drei Zeilen sind jetzt die Rohdaten von den Roll, Pitch und Yaw Gyros vor Anwendung des Notch-Filters.

Uns interessiert in erster Linie die angezeigte Markierung für den Max Motor Noise der Raw Gyro Data für Roll und Pitch. Markiert einfach rechts  nacheinander die Zeilen für gyro_raw (roll) und gyro_raw (pitch) und notiert euch die beiden Werte von Max Motor Noise:

notch3 notch4

Von den beiden Werten nehmt ihr einen Mittelwert, ich habe mich bei meinem Setup mal für 230 entschieden. Diesen Wert tragt ihr im Betaflight Configurator (PID -> Filter) bei Gyro Notch Filter Frequency ein. Darunter bei Gyro Notch Filter Frequency Cutoff tragt ihr den Wert ein, wo die Vibrationen beginnen signifikant zu werden. Ich habe hier 150 eingegeben. Die Breite des Notch-Filters wird über den Abstand von „Frequency Cutoff“ zu „Notch Filter Frequency“ eingestellt. Der obere Cutoff hat den gleichen Abstand wie der untere. Also in meinem Fall:
150 – (Abstand 80) – 230 – (Abstand 80) – 310

notch5

Anschließend geht ihr wieder (Blackbox an!) fliegen und den Unterschied sollte man sofort hören. Die Motoren sollten jetzt viel leiser laufen und alles ist irgendwie „geschmeidiger“. Bei den jetzt gewonnenen Blackbox Daten könnt ihr euch auch die Frequenzanalyse mit und ohne Notch-Filter ansehen:

notch6  notch7

Zum Schluss werfen wir noch einen Blick auf die gefilterten Gyro-Daten, denn das ist schließlich das Endergebnis nach dem Durchlaufen aller Filter (LPF und Notch). Wie wir sehen, sehen wir praktisch keine nennenswerten Vibrationen mehr, und das ist es ja, was wir erreichen wollten:

notch8

Hört sich im ersten Moment alles furchtbar kompliziert an, ist es aber eigentlich gar nicht. Also nur Mut, es lohnt sich.

Nachtrag:

Heute bin ich dazu gekommen, das Setup mit aktivem Notch-Filter mal ordentlich zu fliegen. Der Effekt ist wie erwartet, die Vibrationen sind deutlich reduziert, der Kopter ist insgesamt „leiser“. Bei den Flugeigenschaften konnte ich jetzt keine riesigen Unterschiede feststellen, aber die Motortemperatur ist deutlich niedriger als ohne Notch-Filter. Im nächsten Schritt werde ich jetzt versuchen die PIDs anzuheben, insbesondere P und D und bin mal gespannt, was da jetzt noch so geht.

Nachtrag 2:

Ich konnte die P-Werte für Roll und Pitch problemlos um 5 Punkte anheben. Gleichzeitig hab ich die dazugehörigen D-Werte um 3 Punkte angehoben. Ich konnte keine störenden Oszillationen feststellen und das Flugverhalten ist jetzt noch besser. Propwash ist praktisch nicht vorhanden. Fantastisch. Ich bin heute mal im Vergleich dazu einen anderen Kopter mit BF 2.9.0 geflogen und muss sagen, dass sich BF 3.0 DEUTLICH besser anfühlt. Ich liebe es 🙂

5 Gedanken zu „Betaflight 3.0 Notch Filter Howto“

  1. Hallo,

    Zitat
    „Der Notch Filter hat (scheinbar fest) eine Breite von 200Hz, umfasst jetzt bei mir den Bereich von 150Hz bis 350Hz, wobei um den Center-Bereich (230Hz) am meisten gefiltert wird.“

    Das ist nicht ganz richtig. Durch setzen des Mittelpunktes und des Anfangpunktes bestimmst Du auch den Endpunkt.

    Beispiel Anfang 100Hz, Mitte 150Hz ergibt ein Ende von 200Hz

    oder Anfang120Hz, Mitte180Hz Ende gleich 240Hz

    Danke für deine Anleitung ich experemetiere auch gerade damit.

    Martin

  2. Könnt ihr mir den Unterschied zwischen Gyro notch filter und D term notch filter erklären.

    Kämpfe momentan mit den Propellern die beim idle recht vibrieren (schaut nach Resonanz aus) und ich könnte diese Probleme evtl. mit dem Notchfilter lösen.

    Danke

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.