Forum: Digitale Signalverarbeitung / DSP / Machine Learning Zustandsregler entwerfen


von Mathias W. (etezabel)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe als Aufgabe aus einer gegebenen Zustandsbeschreibung eines 
inversen Pendels ein Optimalregler zu entwickeln. Ich möchte die 
Zustandsbeschriebung in Matlab simulieren lassen und mir ausplotten, 
dann berechne ich mir mit dem lqr-Befehl die Rückführung, die ich für 
die Optimalregelung brauche. Leider ist bereits in dem Strukturbild wohl 
ein Fehler, da ich es schon nciht simulieren kann. Weiß einer einen Rat, 
wo der Fehler sein kann und ich das Strukturbild aus der 
Zustandsbeschriebung in Matlab simulieren kann?
Bitte um Eure Hilfe...

Gruß,

von Gast (Gast)


Lesenswert?

Was kommt denn für eine Fehlermeldung?

Sieht eigentlich soweit gut aus.

von Gast (Gast)


Lesenswert?

Vielleicht stellst du hier auch mal die Matlab/Simulink-Files rein, dann 
ist das Suchen nicht so mühsam.

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

ok, hier sind die matlab-files.

von Gast (Gast)


Lesenswert?

ein warning wird angezeigt, dass der erste integrator nicht 
angeschlossen ist......
und eben der fehler, der das system nicht simulieren lässt....

von Gast (Gast)


Lesenswert?

Hallo,

habt ihr bereits den Fehler erkennen können? Es eilt, denn ich muss am 
kommenden Montag darüber einen Vortrag halten...
Bitte um Eure Hilfe....

Gruß,

von Gast (Gast)


Lesenswert?

Ich weiß irgendwie nicht, was dein Problem ist. Das System ist doch 
total instabil, da ist es doch klar, dass es sich nicht wie erwartet 
simulieren lässt. Also Regler entwerfen und gut ist.

Übrigens schreibt mir mein Matlab ne recht genaue Beschreibung hin, 
warum die Simulation abbricht. Ich würde fast vermuten, dass es bei dir 
auch so ist. Also vielleicht einfach mal lesen. ;-)

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

Ok, ich habe den Zustandsregler für eine optimale Regelung ausgelegt. 
Durch den lqr-Befehl kann man einen Rückführvektor einer solchen 
Regelung bekanntlich berechnen lassen. Ich habe auch die Fehlermeldung 
gelesen und die Fixed-Step-Time reduziert. Leider bekomme ich den Fehler 
so nicht weg und meinem Ziel ein geregeltes inverses Pendel durch den 
Pendelwinkel auf einem Plot komme ich nicht näher.
Kannst Du vielleicht nochmal sagen, was ich ändern muss um den Fehler 
weg zu bekommen......

von Gast (Gast)


Lesenswert?

Das geht schon, so aber nicht. ;-)

Also eine Zustandsrückführung wird so genannt, weil man die Zustände 
für eine Rückführung benutzt. ;-) Außerdem ist die Rückführung -k*x.

Damit sollte es dann mehr oder weniger gehen. ;-)

ps: Vielleicht noch als kleiner Tipp, wie wärs mal, sich ein bisschen 
mit Matlab zu beschäftigen, wenn man schon optimale Regelungen machen 
will. ;-)

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

ich habe in einem regelungstechnischen buch, lunze, gefunden, wie ich 
die wichtungsmatrizen genau berechne.
Q=q*C'*C
R=I
bei R nehme ich doch die einheitsmatrix in entsprechender dimension. 
aber bei Q, für q nehme ich unterschiedliche Werte an (1,...,10) und C' 
ist die Transponierte oder was? Ich habe das mal getestet, leider ohne 
erfolg. wie geht´s denn richtig....

von Gast (Gast)


Lesenswert?

So wie du oben die Matrizen berechnet hast, geht das schon sehr gut.

Das Problem ist jetzt noch, dass du nicht weißt, wass eine 
Zustandsrückführung ist. Ich empfehle dir das entsrechnde Kapitel noch 
einmal ordentlich zu lesen.

Das Problem ist das folgende, um mich zu zitieren:
Also eine Zustandsrückführung wird so genannt, weil man die Zustände
für eine Rückführung benutzt. ;-) Außerdem ist die Rückführung -k*x.

Hast du dir mal das Ergebnis für k angeguckt? Dann müsste dir eigentlich 
was auffallen. Es ist ein Vektor. Um genau zu sein, hat er die 
Dimensionen 1x4. Also brauchst du auch irgendeinen Vektor, mit dem du 
das k multiplizieren kannst, oder? Das sind die Zustände. ;-) Deshalb 
nennt man das auch so.

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

ich habe mir in literatur nochmal durchgelesen, wie eine 
zustandsrückführung aussieht. die einzelnen zustände werden jeweils mit 
dem wert des rückführvektors multipliziert und negativ auf den eingang 
rückgeführt.
soweit, sogut, aber wenn ich nun simuliere, kommt folgende meldung.

??? Error using ==> lqr at 45
In the "lqr(A,B,Q,R,N)" command, the A and Q matrices must have the same 
size.

Error in ==> invpen at 51
k=lqr(A,b,Q,R)

Was stimmt denn nun nicht in meiner Matrizenberechnung?

von Detlef _. (detlef_a)


Lesenswert?

Die Tatsache, dass die Matizen nicht passen, ist nur ein Symptom.

http://de.wikipedia.org/wiki/Optimale_Regelung sagt:

"Dann ergibt sich ein lineares Regelgesetz. d.h. der Regler ist ein 
Zustandsregler mit vollständiger Zustandsrückführung."

Du brauchst alle Zustandsgrößen. Bis auf den Pendelwinkel kennst Du die 
nicht.

Siehe dazu: http://de.wikipedia.org/wiki/Beobachter_(Regelungstechnik)

Cheers
Detlef

von Gast (Gast)


Lesenswert?

Ich gehe mal hier davon aus, dass das primäre Ziel die optimale Regelung 
ist und deshalb anzunehmen ist, dass alle Zustandsgrößen zur Verfügung 
stehen. Das ist hier jedoch nicht das Problem.

Das Problem ist, dass mit dem lqr kein Regler gefunden werden kann, da 
die Matrizen Q und R nicht die richtige Größe haben. Die Matrizen aus 
deinem zweiten Dateien-Post gingen. Vielleicht hast du an denen noch 
etwas geändert. Ich konnte das System mit exakt den Werte simulieren, 
die du angegeben hattest. Die einzigen Änderungen habe ich hier hin 
geschrieben.

Die Rückführung sieht jetzt ganz gut aus. Aber willst du wirklich die 
Summer aller Zustände auf dem Scope sehen? Ich glaube kaum. ;-)

Noch als Tipp am Rande: Simulink kennt auch Vektoren. Dazu musst du die 
Blöcke Mux und Demux verwenden. Der Gain-Block kann dann auch 
Matrizenmultiplikation. (wenn man das einstellt) ;-)

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

den zweiten dateien-post meintest du, aber da steht gar kein lqr drin...
ich habe dann den dritten interpretiert.
irgendwie klappt es nicht, kannst du bitte nochmal sagen, wie du das mit 
den matrizen machst. ich habe meinen jetzigen stand beider dateien hier 
angefügt. wie läuft es jetzt???

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

Ich hatte jetzt leider keine Zeit den Fehler in deinen Dateien zu 
suchen. Ich hänge aber mal die Dateien, mit denen es bei mir 
funktioniert, an. Ist zwar didaktisch nicht besonders wertvoll, aber da 
ja deine Zeit auch immer weniger wird. ;-)

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

alles super. Ich habe gesehen, dass mein Fehler auch in dem plot-Befehl 
gewesen ist. Ich hätte das Structure richtig auswerten müssen. So ist 
nun alles prima. Das Ergebnis habe ich angefügt. Das Pendel fängt bei 
60° an und schwingt/pendelt sich dann sehr schnell ein.

Gruß,

von Thomas (Gast)


Lesenswert?

Wobei das Pendel bei 60° sicher schon weit aus dem aus dem Bereich raus 
ist, der als linear angenommen werden kann...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.