PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppel pendel invertiert, regeln



Boschetun
29.06.2013, 10:09
Guten Tag,

habe eine Frage zu dem doppelten invertierten Pendel.

Ich verstehe nicht wie man diesen regelt, sodass er senkrecht stehen bleibt.

Die Lagrange-Gleichung kann ich aufstellen. So wie ich das verstanden habe,
kann man bei der Lagrage-Gleichung die Winkel und deren Ableitungen eingeben
und man bekommt die benötigten Drehmomente.

Einen Robotor habe ich auch bereits, dieser erwartet die Positionen oder Winkel und regelt den Endeffektor mit dem PD Regler dorthin.

Jetzt fehlt mir noch ein Puzzle wie ich weitermachen soll.
Habe es davor noch nie gemacht und in den wissenschaftlichen Papers wird es nicht erklärt.

- - - Aktualisiert - - -

Mit Endeffektor meine ich den Arm, der dann den doppel-Pendel von unten bewegt.

Was mir gearde eingefallen ist:
Man könnte es mit dem PID-Regler probieren, in dem man die Regelabweichung (Winkel_soll - Winkel_ist) auf Null aus-regelt.
Aber wie mache ich das mit Verbindung von Lagrange-Gleichung?

Geistesblitz
29.06.2013, 10:37
Könntest du den Aufbau nochmal genauer beschreiben? Ist mir noch nicht so ganz klar, was du meinst, das Doppelpendel hängt an einem Roboterarm? Oder hängt das Pendel an einem waagerechten Linearschlitten?

Zum Doppelpendel:
Soll es nur in der Ruhelage (beide Pendel stehen nach oben) geregelt werden oder soll es sich sogar selber aufstellen können? Wenns nur eine Regelung in der Ruhelage ist, sollte es reichen, die Bewegungsgleichungen, die du aus der Lagrangegleichung erhältst, um den Ruhelage zu linearisieren (phi1=phi2=0) und dieses linearisierte System für deinen Reglerentwurf zu verwenden. Kannst du vielleicht mal deine Bewegungsgleichungen zeigen?

Boschetun
29.06.2013, 12:18
Hier ist der Aufbau:


Der Doppelpendel sind bei mir zwei Kreisscheiben. Gesteuert werden diese über die Bewegung des Effektors. Translation und Rotation.
Ich möchte erst mal mit nur einer Kreisscheibe anfangen um das Prinzip der Regelung zu verstehen.

Die Winkel der Kreisscheiben werden über das Kamerasystem geliefert.

Zu den Gleichungen: Habe ein Foto von den Gleichungen T und V gemacht, da ich nicht weis, wie man hier Latex schreiben kann.
Hoffentlich kann man es lesen. Falls etwas unklar ist bitte fragen.


- - - Aktualisiert - - -

Ich denke es ist besser in der Ruhelage zu regeln, damit man erst mal was hin bekommt und schaut, dass der Regler funktioniert.
Für die eigentliche Bewegungsgleichung muss ich noch die Lagrange-Gleichung aufstellen.

Bei der Linearisierung der Bewegungsgleichung meinst du schon die Lagrange-Gleichung, oder?

Geistesblitz
29.06.2013, 14:52
Ok, wie es aussieht hast du jetzt die Energiegleichungen für kinetische und potentielle Energie aufgeschrieben. Nun musst du noch die Lagrange-Gleichung damit anwenden:
d/dt(dL/dx')-dL/dx=0
Damit erhältst du die Bewegungsgleichungen.

Dein System ist mir aber noch nicht ganz klar: was sind das für Scheiben auf dem Endeffektor, oder soll das das Doppelpendel sein? Wo sollen translatorische Freiheitsgrade sein? Bitte, beschreibe deine Aufgabe mal wirklich nachvollziehbar, bisher hast du uns nur Details verraten, aber noch nichts konkretes zum ganzen System.

Boschetun
29.06.2013, 15:08
Das system besteht aus einem Roboterarm mit einem runden End-Effektor. Auf diesen End-Effektor will ich Kreisscheiben balancieren.
Zuerst nur eine Kreisscheibe. Der Roboterarm hat 3 Freiheitsgrade: x,y,phi .
Mit dieser Anordnung will ich einen Regler erstellen, welcher den Schwerpunkt der Kreisscheibe über den Schwerpunkt des Endeffektors hält.
Damit wäre die Kreisscheibe im Gleichgewicht. Die Position der Kreisscheibe sowie deren Orientierung erhalte ich über ein Camerasystem.

Wenn man sich die Kreisscheibe als ein Balken denkt, dann ist die ganze Anordnung sehr ähnlich zu dem invertierten Pendel.
Denn mit der Drehung des End-Effektors ändere ich die Position der Kreisscheibe. Somit wäre die Kreisscheibe eig. regelbar.

Versuche gerade die Lagrange-Gleichung mit Hilfe von Matlab zu erstellen. L=T - V habe ich hin bekommen.
Ist ein ziemlich langer Term!
Jetzt kann ich aber nicht L nach thetas ableiten, wahrscheinlich weil diese bei mit zeitabhängig sind.
Habe es so gemacht:

syms t; %Zeit
theta1 = sym('theta1(t)');
%Z.B
f = 3*theta1
diff(f,theta1)

das gibt komischerweise ein Problem.
Error in sym/diff (line 44)
R = mupadmex('symobj::diff', S.s, x.s, int2str(n));

Geistesblitz
29.06.2013, 17:15
In solchen Fällen würde ich erst nach einer Hilfsvariablen ableiten und diese dann durch Theta substituieren. Also in etwa so:

syms t theta1h; %Zeit, Hilfsvariable
theta1 = sym('theta1(t)');
%Z.B
f = 3*theta1h;
g=diff(f,theta1h);
g=subs(g,theta1h,theta1);

Hmm, ich glaube nicht, dass es so einfach ist, wie du dir das denkst. Durch den Kontakt zwischen Kreisscheibe und Endeffektor kann sich nämlich die Kreisscheibe abwälzen, wodurch sich der Rotationsanteil verändert. Außerdem muss dabei Reibung beachtet werden, falls die Scheibe auf dem Effektor rutschen kann, und gegebenenfalls sogar abheben. Sehe ich das richtig, dass die Kreisscheiben einfach auf dem Endeffektor draufliegen, ohne weiter fixiert zu sein? Könnten die Kreisscheiben rein theoretisch nach vorne "umkippen"?

Boschetun
30.06.2013, 13:32
Habe vergessen zu erwähnen, dass der ganze Ablauf auf einem geneigten Tisch stattfindet. Der Kreis kann also nicht umfallen.

Genau, die Kreisscheibe kann sich abwälzen aber durch die Drehung des Endeffektors soll sie aber stabil gehalten werden.
Die Kreisscheibe ist aus Plastik und wiegt höchstens 200g. Die Scheibe ist nicht auf dem Endeffektor fixiert und kann abheben oder den Kontakt verlieren.
Dazu habe ich eine Impuls- und Drall-Gleichung aufgestellt. Aus dennen habe ich bestimmt wie groß die Beschleunigungen der Winkel und y-Position werden dürfen. Das kann ich auch posten.

Wie gesagt ich habe so was davor noch nie gemacht. Ist es richtig, dass die Lagrange-Gleichung mit dan den Bewegungsablauf und Momente des gesamten Systems gibt?
Deswegen habe ich das Objekt mit in die Lagrange-Gleichung genommen.
So wie ich mir das vorstelle ist wenn das Objekt sagen wir mal ein Stück nach rechts rutscht dann fixiert dass die Kamera. Der Lagrange-Gleichung wird gemeldet, dass sich der Manipulator nach links drehen soll.
Die Lagrange-Gleichung liefert mir die nötigen Winkel wie ich den Roboter einstellen soll. Dann gebe ich die Winkel an die Roboter-Regelung und der Roboter führt die Bewegung aus.
So stelle ich mir das vor.
Frage ist: Ob die Lagrange-Gleichung das macht was ich mir vorstelle.
Denn irgendwie finde ich in Büchern nichts. Oder ich schaue in die falschen Bücher. Denn es wird nicht das Prinzip erklärt.

Danke für den Tipp mit Matlab!!! Das ist echt genial!

Habe jetzt ein neues Problem. In der T-Gleichung habe ich Trägheits-Matrizen stehen. Bei der Berechnung kommen ebenfalls Matrizen mit complexen Anteilen.
Aber das darf ja nicht sein. Das muss ja eine skalare Gleichung sein. Ich muss also die Trägheitsmatrizen in skalare Werte umrechnen.
In einem Buch habe was dazu gefunden: Da wird die Trägheitsmatrix durch omega_i' * R_i * Trägheitsmatrix_li_nach_i * R_i'*w_i umgerechnet.
Sehr seltsam.
Es geht bestimmt auch einfacher, aber ich weiß noch nicht wie...

- - - Aktualisiert - - -

Habe noch ein wenig in Büchern geschaut.
Ich führe nur Drehungen um die z-Achse aus, also brauche ich nur ein Element aus der Träghetsmatrix.
Das mit der Rotation um die z-Achse. Vermute ich, bin mir noch nicht sicher.

Geistesblitz
30.06.2013, 15:16
Wenn sich der Körper nur um die z-Achse dreht, dann brauchst du auch nur das Trägheitsmoment bezüglich der z-Achse ;)
Und da dein Körper rotationssymmetrisch ist, fallen die Deviationsmomente auch unter den Tisch.

Die Lagrangegleichung ist eigentlich nur das Werkzeug, das du benutzt, um aus einem gegebenen System auf die Bewegungsgleichungen zu kommen. Mit den Bewegungsgleichungen musst du dann dein System steuern und deinen Regler auslegen. Die Bewegungsgleichung gibt normalerweise die Bewegungsabläufe zurück, wenn man eine Eingangsfunktion (Kräfte, Momente, Weganregung etc.) vorgibt. Somit kann man auch Sollwerte für die Bewegung vorgeben und sich umgekehrt die benötigten Stellmomente/-kräfte ausrechnen lassen (alles natürlich mit zeitlicher Abhängigkeit). Allerdings solltest du da wirklich nochmal ein wenig nachlesen, ich werd dir sicherlich nicht alles dazu erklären können.

Boschetun
30.06.2013, 16:14
Vielen Dank, dass du dir Zeit nimmst mir zu Helfen!

Bin immer noch dabei die Lagrange-Gleichung mit Matlab aufzustellen.
Dabei bin ich auf folgendes gestoßen:
p1 =
l1*cos(theta1hilf)
l1*sin(theta1hilf)
>> p1'*p1
ans =
l1*cos(conj(theta1hilf))*conj(l1)*cos(theta1hilf) + l1*sin(conj(theta1hilf))*conj(l1)*sin(theta1hilf)

Warum bekomme ich da komplexe Anteile?
Wenn ich die Gleichung aufstelle habe ich dann lauter komplexe Anteile und dann wird es schwierig alles zusammenzufassen.