-
Notifications
You must be signed in to change notification settings - Fork 0
SpectralAnalyzer
(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
undyaw
- Logfile B in Spalten 3+4 auch wieder getrennt für jede Achse.
Es können beide Logdateien gleichzeitig analysiert werden.
-
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. -
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.
-
Auswahlbox Smoothness (Glättung)
hier kann die Qualität der Graphik eingestellt werden. Je feiner, je länger dauert der Aufbau. Ein guter Wert istsmooting medium
-
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.
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)
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.
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.
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).
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-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
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.
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.
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)
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 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