Skip to content

SpectralAnalyzer

Bernd Klein edited this page Jul 7, 2021 · 17 revisions

Spektral-Analyse (Spectral Analyzer)

(Stand JULI-2020)

Eine Sprektral-Analyse führt eine Analyse über einen spektrum an Frequenzen durch. Im Prinzip wird das Frequenzband 0-1000hz aus den Blackbox-Daten extrahiert und als 2D Graph oder als 3D-Heatmap dargestellt.

Der Spectral-Analyzer wird über den Button Spectral-Analyze aufgerufen. Nachdem das Fenster geöffnet wurde, muss im ersten Schritt eine Konfiguration (also was soll dargestellt werden) erstellt werden. Das Fenster gliedert sich in 4 Spalten mit je drei Graphen

  • Logfile A in Spalten 1+2 getrennt roll, pitch und yaw
  • Logfile B in Spalten 3+4 auch wieder getrennt für jede Achse.

Es können beide Logdateien gleichzeitig analysiert werden.


Konfigurationen:



  1. Auswahlbox PreSet

    Diese Auswahlbox stellt typische Konfigurationen für die zu generierende Graphen da. Wenn du hier eine Pre-Set auswählst, werden automatisch die vier Auswahlboxen in der nächsten Zeile gefüllt. Eine typische Auswahl zur Vibrationsanalysie ist [A+B] Gyro prefilt. Die vier Auswahlboxen werden dann wie folgt gefüllt: Logfile (A) 1. Auswahl = ungefilterte Gyrodaten, 2. Auswahl gefilterte Gyrodaten 3+4 entsprechend für File B.

  2. Auswahlbox %Throttle oder %Motor. (Einheit für die X-Achse)

    in der Regel werden die Vibrationsfrequenzen mit %Throttle ins Verhältnis gesetzt aber dies hat einen entscheidenden Nachteil, bei Flugmanövern in denen Trottel 0% ist (z.B., bei Flips/Rolls) können trotzdem Vibrationen auftreten, diese sieht man dann nicht in der Analyse. Hier hilft die %Motor Einstellung.

linearREDcmap und linearGREYcmap sind vernünftige Optionen für eine eher linear wirkende Farbkorrektur. 3. Auswahlbox Farbgebung der Graphen im 3D (Heatmap)

hot ist eine sehr angenehme und gut interpretierbare Farbgebung. viridis ist die Darstellung die auch in Plasmatree verwendet wird.

  1. Auswahlbox Smoothness (Glättung)

    hier kann die Qualität der Graphik eingestellt werden. Je feiner, je länger dauert der Aufbau. Ein guter Wert ist smooting medium

  2. Auswahlbox Subsampling

    ideal für Logdateien die klein sind. Hier liegen nicht soviele Daten vor und das sampling kann problemlos verfeinert werden (zu Lasten der Laufzeit), gleiches gilt natürlich bei großen Logdateien.

CheckBox 2D: Anstatt einer Heatmap (3D) wird ein 2D Spektrogramm angezeigt. Orange für Logfile A, blau für Logfile B. Die 2D Ansicht ist eine typische Ansicht für eine FFT-Transformation eines Frequenzbandes. Die X-Achse beschreibt die Frequenz, die Y-Achse die Amplitude (der Vibration). Je höher die Amplitude, je höher die Vibration.

fcut1, fcut2, RClim (nur interessant wenn zeitglich die Checkbox <100Hz aktiviert ist)

RCLim (Einheit: deg/s) ist ein Limiter für die Berechnung des mean und peak vaues in einem Graphen. Er limitiert den zu Berechnung herangezogene RC-Eingangswert (deg/s). Beispiel: RCLim = 100, dann werden für die Berechnung nur RC-Wert bis 100deg/s verwendet

fcut1, fcut2 (Einheit Freq-Steps, default 6 + 30) In der aktuellen Version von PIDToolbox kann hier ein oberer und unterer Cuttingwert für die Berechnung des mean und peak Wertes angegeben werden. Eine Einheit entspreicht einem Frequenzstep von 3.33hz (Beispiel 6 + 7 liegen 3.33hz auseinander). Default Einstellung ist fcut1 = 6 und fcut2 = 30. Folglich wird nur der Frequenzbereich von 20-100hz für die Berechnung genutzt. Die Eingabe sind Dezimalwerte. Bei einer Eingabe von z.B. 7.5 in fcut1 wird ab 25hz gerechnet.

fcut1 und fctu2 werden mit einer gelben gestrichelten Linie im Graphen dargestellt (nur wenn Checkbox <100hz aktiviert ist)

separate Auswahlboxen pro Spalte

wenn kein PreSet verwendet wird, kann hier auch manuell ausgewählt werden, welche Daten man analysieren möchte. Diese vier Auswahlboxen werden durch PreSet (Auswahlbox oben links) automatisch gefüllt.

scale (Werte von 0.1 - 1.0, default 0.5)

jeder Graph pro Spalte kann mit einem Skalierungsfaktor nochmals detailreicher eingestellt werden. Ein guter Wert ist 0.5, stellst du 0.1 ein siehst du eine detailreicheren Bereich aus Deinem Spektrum. Bitte beachte: um zwei Plots miteinander zu vergleichen, sollten die Skalierungs-Faktoren gleich sein sonst kann man schnell Äpfel mit Birnen vergleichen.

Heatmap-Skalierung. Beachten, dass die Voreinstellung so eingestellt ist, dass ein optimal gefilterter Gyro sollte wenig bis gar keine Aktivität zeigen, mit Ausnahme eines Sub-100Hz-Bandes (Checkbox <100Hz) bezogen auf %Throttle. Dterm und Motorsignale sind typischerweise "lauter", so dass manchmal Skalenanpassungen nützlich sind, um Details zu sehen.

CheckBox <100hz

Typischerweise wird diese Einstellung verwendet, um Propwash-Vibrationen oder Vibrationen rund um 50%-Throttle zu analysieren(z.B. bei Gyro/Pterm/PIDerror).

Sobald dieser Checkbox aktiviert wird, werden die gleichen Daten im Frequenzberech 0-100hz vergrößert angezeigt. fcut1 wird durch die untere gelbe gestrichelte Line dargestellt. fcut2 durch die obere gestrichtelte Linie. Der Bereich unter 20hz ist gewolltes Bewegung begzogen auf die Flugcharakteristik Deines Copters.

Alles über der 20hz (untere gelbe Linie) sind ungewollte Bewegungen, die wir nicht wollen (z.B. Vibrationen, Propwash, ...) - also alle ungewünschten Vibrationen.

Als Daumenregel: alles zwischen 20-100hz sollte so wenig Bewegung zeigen wie möglich (also wenig gelb). EEin wenig ist normal zu viel deutet auf Vibrationen oder Oszillieren hin. Es ist nicht empfehlenswert Deine Filter soweit in diesen Bereidh nahe an die 20hz heran einzustellen, da dies eine deutliche Phasen-Latenz hervorruft. Im linke Bild sieht man deutlich einen Spot bei rund 40hz und zeigt deutliches Oszillieren.

Analysen in den <100hz Bereich, kann aber Dir aber Einblicke in Probleme mit Vibrationen und Oszillationen im Mittel-Throttle Bereich geben und könnte auch Aufschlüsse wie gut Dein Copter Propwash bewältigt.


Ein besonderes Merkmal von PIDToolbox ist, das die meisten Diagramme zusätzliche numerische Daten als Überlagerung anzeigen. Diese dienen für eine genauere und objektivereren Vergleich zwischen unterschiedlichen Logdateien. Bei den Spektrogrammen siehst Du Durchschnitt (Mean) und Max-Werte (Peak), welche sich auf eine bestimmten Frequenzbereich beziehen (der zwischen den gelben Linien).

Im vollen Umfang bis 1000hz werden diese beide Variablen aus dem Bereich zwischen 100-1000hz ermittelt. Dies deckt in der Regel das komplette Band von Vibrationen der meisten Copter ab.

Im <100hz Modus, wird mean/peak aus den Daten zwischen 20-100hz berechnet (also den Bereich der ungewollten Bewegung/Rauschen).

Phase-Delay

Zu guter letzt: Oben rechts im Fenster wird der Phasen-Delay angezeigt - getrennt nach Logfeile A+B. Diese Werte berechnen sich aus den aktuellen Filtereinstellungen aus den aktuellen Logdateien. Hier im Beispiel sieht man das im Logfile B die Latenzzeiten 2.5ms im Gyro und 2.5ms im DTerm sind. Im Gegensatz zum Logfile A mit 3.14 und 2.1ms. Hier ist schon ein Indiz das an den Filtern gearbeitet wurde. Die Gesamtsumme ist geringfügig besser geworden. Eine Gesamt-Latzenzzeit von 5ms ist schon recht gut.

Bitte beachte: Diese Berechnung ist eine Schätzung basieren auf eine Kreuzkorrelatoins-Verzögerungstechnik und wird nur über die Roll-Achse berechnet (Diese Achse ist in der Regel die Achse mit den größten Modulation im RC-Eingang). Dies ist auch notwendig, denn eine Verzögerung von zwei flachen Signalen kann man nicht sehen.

Für aussagefähige Ergebnisse muss der Debug-Mode auf GYRO-SCALED gesetzt werden.

Faust-Regel:: je weniger gefiltert wird, desto geringer der Phasen-Delay. Also je kleiner der angezeigte Delay, desto besser kann Propwash und anderen schwinungsiduzierder turbulenter Luft. Im Idealfall hat Dein Copter eine Gesamtlatzenzzeit von <5ms, ist abhängig von der Art und der Intensität der eingestellten Filter.

Liegt deine Latenzzeit z.B. bei Gyro 3.5ms und DTerm bei 4.5ms - dann ist das zu hoch. Sprich du solltes prüfen ob du an Deinen Filtern etwas verbesserst (also weniger Filtern). Dies ist aber stark davon abhängig wie das Spektogramm in 3D oder 2D aussieht.

Behalte im Hinterkopf: Dein Gyro hat eine Latenzzeit, folglich erhält Dein PID-Controller diese Werte erst nach dieser Zeit (verzögert), anschließend kommen der DTermfilter und dann kommt erst die PIDSum. Dies enthält also alle bis dahin aufgetretenen Latenzen. Das Ganze wird dann als Motorsignal an die Motoren (ESC) gesendet. im obigen beispiel 3.5+4.5=8ms verzögert.

Einfaches Rechenbeispiel: Dein Copter fliegt 130km/h, dann sind 8ms Verzögerung knappe 30cm die Dein Copter sich fortbewegt hat - mag wenig sein - aber bei 130km/h sind knapp 30cm zu spät reagiert ggf. ein Crash.

X/Y Achsen

X-Achse repräsentiert einen prozentualen Wert zwischen 0 und 100 für Throttle oder Motor. Siehe Auswahlbox #XAxis Y-Achse repräsentiert das Frequenzband von 0-1000hz

2D-Analyse

Bitte beachte, die Spektrogramme als auch die 2D-Spektraldiagramme sind normalisiert um Logfiles unterschiedlicher länge vergleichbar zu machen. Somit ist eine Vergleichbarkeit unterschiedlicher Logdateien möglich ohne das Du Teilmengen gleicher länge auswählen muss.


Auswertungsmöglichkeiten (Presets)

Informationen oben rechts (estimated filter delay...)

Anzeige für Logfie A+B. Geschätzte Phasenverzögerung basierend auf Kreuzkorrelationstechnik. Die Schätzung ist am zuverlässigsten bei ausreichender Stick-Eingabe, um Gyro und Dterm zu modulieren. Erfordert auch, dass Betaflight Debug-Mode auf ''GYRO_SCALED'' gesetzt ist.

[A+B] Gyro prefilt vs Gyro

Kann für die Analyse von Vibrationen verwendet werden. Es werden die Gyro-Rowdaten mit den gefilterten Gyro-Daten verglichen. Anhand dieses Ergebnisses können LowPass-Filter/Notch-Filter/... in BF angepasst werden. Ausgewertet werden zwei Logfiles (A+B)

Andere PreSets

Pterm

Diese Spektralanalyse kann dafür gentutzt werden um PTerm-Oszillation zu erkennen. PTerm ist auch ein Indikator für den primären Fehler (aus dem PID-Controller). PTerm und PIDError sind häufig identisch

Dterm

DTerm Fehler können kritisch sein, denn der DTerm Fehler zahlt sehr in Vibrationen ein und kann zu überhitzten Motoren und bis zur Zerstörung des ESCs sorgen.

weitere Details folgen

NEXT => Step-Response-Tool Analyse