Adaptive Regelung am Quadrocopter #2: Erste Erfahrungen mit Openmodal

Zum vorherigen Beitrag: methodische Modellierung in Scilab/Xcos eines Massen-Schwingers.

 

Im Rahmen meiner Arbeit zur adaptiven Regelung am Quadrocopter, habe ich versucht mit dem Open-source tool Openmodal (http://www.openmodal.com) zu arbeiten, und erste Erfahrungen gesammelt, die ich mit euch teilen möchte. Zusammenfassend hat es beim Hochladen von Messdaten Probleme gemacht, weshalb ich nur bis zu diesem Punkt in der Inbetriebnahme von Openmodal gekommen bin. Vielleicht helfen diese Erfahrungen trotzdem schonmal weiter, und vermeiden eine längere Problemsuche.

Falls jemand anders auch schon Erfahrungen gemacht hat, schreibt es gerne in die Kommentare, so könnten wir anfangen hier Informationen zu sammeln.

 

Einbindung im Projekt zur adaptiven Regelung am Quadrocopter

Im ersten Beitrag habe ich kurz von der ersten Modellbildung berichtet in der wir den Quadrocopter als starre Masse angenommen haben, die elastisch mit der Kameramasse verbunden ist. In der Realität sind die Arme weitere Bestandteile des Quadrocopters nicht starr, und haben in den für uns im Betrieb relevanten Frequenzbereich ein strukturdynamisches Verhalten. Das bedeutet das durch eine Anregung an der Quadrocopter Struktur eine andere Beschleunigung zu messen ist, als wenn wir an einer gleich wiegenden Masse die Anregung anbringen würden.
Im Rahmen unseres Projektes brauchen wir an zwei verschiedenen Stellen ein Modell des Quadrocopters. Die ich in einem kommenden Post genauer erklären werde. Vereinfacht benötigen wir die Beschleunigungsantwort an der Kameraaufhängung bedingt durch eine Erregung an derselben Stelle. Diese erregende Kraft entspricht der dort befestigten und schwingungskompensierten Kamerahalterung. Weiterhin brauchen wir für die spätere Simulation des Gesamtsystems die Beschleunigungen an der Stelle der Kameraaufhängung, ebenfalls durch die Kameraaufhängung bedingt aber auch durch äußere Einflüsse an den 4 Motoren z.B.

Ziel ist es anhand der experimentellen Modalanalyse dieses Modell zu bestimmen.

 

Experimentelle Modalanalyse

Die experimentelle Modalanalyse ermöglicht es die strukturdynamischen Eigenschaften von Bauteilen zu bestimmen und zu beschreiben. Sie ermöglicht in der Konstruktionsphase von Strukturen das dynamische Verhalten zu verstehen, sie kann ermöglicht es Modellierungen zu validieren und anzupassen, oder auch Simulationen von angebauten Systemen zu realisieren wie es beim Quadrocopter der Fall ist.

Mittels einer künstlichen Strukturanregung, wie z.B. durch einen Hammerkraftimpuls, misst man an verschiedenen Stellen erhaltene Beschleunigungen oder Geschwindigkeiten. Die Frequenzspektren der daraus berechneten Übertragungsfunktionen ermöglichen es alle relevanten Eigenfrequenzen unter stationären Bedingungen zu identifizieren. Der Benutzer definiert eine für seine Anwendung relevante Frequenzbandbreite. Für diese Bandbreite können die Messdaten bei leicht gedämpften Systemen von Algorithmen wie dem Polymax-Algorithmus angenähert werden, um die modalen Parameter (Frequenzen, Dämpfungen und Modalformen) zu bestimmen.

 

Openmodal – Messdaten hochladen

Openmodal ist ein open-source tool in Python. Es ermöglicht, aus den Beschleunigungsmessungen, und Kraftanregungsmessungen, die Frequenzspektren zu bilden, und daraus die modalen Parameter zu bestimmen. Die Modalen Parameter können über die LSCF- oder LSCEsolver in Openmodal bestimmt werden.  Weiterhin kann man durch vorheriges Definieren der Geometrie der Struktur und der Messknoten, ebenfalls die Schwingungsmoden berechnen und darstellen.

Zur Verwendung von Openmodal muss man es als erstes runterladen (siehe Link weiter unten), und im entpackten Ordner die Anwendungsdatei „openmodal“ öffnen. Dann öffnet sich ein Fenster mit 5 Reitern. Anschließend gibt es verschiedene Wege Messdaten in die Software hochzuladen.

Der erste Weg arbeitet mit dem National Instrument Measurement & Automation Explorer und dem enthaltenen Driver DAQmx. Diesen kann man kostenlos runterladen (Link ist am Ende vom Beitrag). Leider fordert dieser Weg auch Messgeräte von National Instrument zu benutzen. Man definiert im Reiter „Geometry“ die Geometrie der Struktur und die Knoten an denen gemessen, bzw. erregt wird. Im Reiter Measurement kann man dann Openmodal konfigurieren und über National Instrument die zeitlichen Messdaten in Echtzeit einlesen. Dazu gibt es im folgenden Video ab der Minute 1:30 noch mehr Informationen: https://www.youtube.com/watch?v=YHupUB6bF6I

Der zweite Weg arbeitet mit dem UFF-dateiformat (universal file format: .unv). Man kann im Menü oben links eine solche Datei importieren. Diese enthält entweder zeitliche oder auch schon analysierte Messdaten.  Dieses Dateiformat ist ein universelles Format um strukturdynamische Messdaten und Analysedaten von einer Software in die andere standardisiert zu übertragen. In unserem Fall ist das UFF58 Format interessant, da es für Messdaten einer experimentellen Modalanalyse aufgebaut wurde. Dieses Format wird von Softwares wie LabVIEW, DIAdem oder LMS von Siemens unterstützt.

Aktuell habe ich zwei Wege gefunden solche Dateien außerhalb der vorher genannten Softwares zu erstellen. Zum einen die Matlab-Toolbox Uff File Reading and Writing und das Python-programm pyuff, was auch von Openmodal.com bereitgestellt wird.

Um das Python Programm zu betreiben benötigt man vorab ein paar Installationen. Zum ersten Python selbst, dann Numpy mit einer jüngeren Version als 1.12.0 und pytest jünger als Version 3.0.5. Um pytest installieren zu können brauch man jedoch den „pip“ Installer. Dort bin ich leider hängen geblieben, und habe zeitlich bedingt hier abgebrochen.

Mit der Matlab Toolbox kann man ebenfalls uff-dateien mit Messdaten erstellen. Diese kann man  kostenlos runterladen (siehe Link weiter unten). Dort sind unter anderen 3 Matlabskripte enthalten. Im Skript writeuff.m findet man in der Zeile 26 auch nochmal ein Überblick über das Format UFF58.  Anhand der Skripte kann man uff-dateien leicht erstellen und auslesen. Es gibt wiederum verschiedene Versionen von Kodierungen im UFF58 Format. Je nachdem wie die Messdaten sind kommt es zu verschiedenen Kodierungen. Wenn die Abstände zwischen den Messpunkten auf der Abszisse konstant sind (was z.B. einer periodischen Abtastung im Zeitbereich entsprechen würde) spricht man von „even spacing“, wenn nicht dann von „uneven spacing“. Abhängig davon verändert sich die Kodierung, und in der aktuellen alpha-Version von Openmodal  (Version vom 12.08.2016) können Dateien mit „even spacing“ nicht importiert werden.  Das Problem wurde hier gemeldet: https://github.com/openmodal/OpenModal/issues/14 Die Kodierung wird im Matlabskript der Datei writeuff.mat ab der Zeile 503 beschrieben. Ich habe ebenfalls in Zeile 581 versucht die Bedingung umzuändern um den Fall 8 durchführen zu lassen, jedoch rechnet er an einer anderen Stelle die von mir verwendeten „uneven“ Abszissdaten wieder in „even“ Abszissdaten um. An dieser Stelle habe ich dann ebenfalls zeitlich bedingt die Suche abgebrochen.

 

Wichtige Links

 

Matlab Code

Hier nochmal der  zusätzlich verwendete Matlabcode zum Erstellen einer uff-datei:

unvdata{1}.dsType = 58;

unvdata{1}.binary = 0;

unvdata{1}.x = linspace(0,10,1000);

unvdata{1}.measData = cos(unvdata{1}.x);

unvdata{1}.d1 = ‚ONE‘;

unvdata{1}.d2 = ‚NONE‘;

unvdata{1}.date = datestr(now);

unvdata{1}.functionType = 4;

unvdata{1}.rspNode = 2;

unvdata{1}.rspDir  = 1;

unvdata{1}.refNode = 2;

unvdata{1}.refDir  = 1;

 

writeuff(‚test.unv‘,unvdata);

 

clear

testdata = readuff(‚test.unv‘);

plot(testdata{1}.x,testdata{1}.measData)

 

 

 

 

 


2 thoughts on “Adaptive Regelung am Quadrocopter #2: Erste Erfahrungen mit Openmodal

  1. Dear Nicolas!

    This is a nice post, thank you.

    With regards to the pyuff: I would suggest you to install the anaconda distribution of python (https://www.continuum.io/downloads, Py 3.6). With this you will have most of the tools to run python, check out „jupyter notebook“ which is great.

    PS: You will however not be able to run openmodal as a python program out of the box (it requires a special Py environment).

    Hope this helps.

Schreibe einen Kommentar

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