Hallo Leute, ich habe einen balancierenden Roboter gebaut, den ich veruchen möchte wie ein inverses Pendel zum aufrechten stehen bleiben zu bringen. Die Hardware sowie die Software steht soweit. Grober Aufbau: - STM32F3 Arm Cortex (STM32F3 Discovery Board mit Gyron und Beschleunigungsensor) - Aktuelle Zykluszeit habe ich auf 5ms eingestellt, 2,2ms sind ca. WCET. - Zwei Gleichstrommotoren mit Getriebe - Drehzahl kann über PWM gesteuert werden. - Winkel wird mit einem Kalman-Filter aus (Gyro + Accel.) bestimmt - Software-PID Regler, der allerdings nur als PD-Regler genutzt wird Zurzeit habe ich den PD-Regler nach gefühl eingestellt, was zu befriedigenden Ergebnissen geführt hat. Bei sehr kleinen Auslenkungen aus der Ruhelage kann er mitunter 1-2sec aufrecht stehen bleiben! Allerdings wie ich finde, noch weit entfernt von einer optimalen Regelung. Mein Vorgehen wäre jetzt erstmal ein mathematisches Modell der Regelstrecke aufstellen. Die Regelstrecke würde ich mit einem PT1-Glied approximieren. Dann würde ich den Rechner mal simulieren lassen (nach entsprechenden Gütekriterien) was so optimale Regler Einstellungen wären. Kann das so gehen? Und wie kann ich die Parameter der Regelstrecke geeignet erfassen, da das System ja an sich instabil ist und deswegen ja warscheinlich nicht so die optimale Sprungantwort liefern wird ;-)
:
Bearbeitet durch User
Patrick L. schrieb: > ich habe einen balancierenden Roboter gebaut, den ich veruchen möchte > wie ein inverses Pendel zum aufrechten stehen bleiben zu bringen. Hey, wieder ein gleichgesinnter Bastler! Hallo! Ich habe damals zunächst die Telemetriedaten der Sensoren sowie die daraus errechneten Winkel und Steuerwerte vollständig erfasst und grafisch dargestellt (mit Excel). Wichtig ist ja, die Drehmomente der beiden Motoren so zu dosieren, dass die Kippstellung und -bewegung nur sanft neutralisiert wird. Dazu muss man nicht wirklich gegen den Masseimpuls und die Schwerkraft anarbeiten, sondern man fährt sozusagen unter dem Schwerpunkt durch und neutralisiert den Schwung in die eine Richtung durch ein kurzzeitiges Verkippen in die andere Richtung. Ich habe letzten Winter dann aber die Simulation der Kinematik in Matlab ruhen lassen ... LG, Sebastian
Wenn ich mich dunkel an mein Studium zurückerinnere, ist deine Regelaufgabe ein Kandidat für Zustandsregelung. Ich bin mir jetzt nicht sicher, ob der Kalmanfilter direkt als Beobachter verwendet werden kann, müsste aber gehen. Zustandsgrößen des Systems könnten z.B. Kippbeschleunigung, Kippgeschwindigkeit und Winkel sein. Fies an der Aufgabe ist, dass das Verhalten hochgradig nichtlinear sein dürfte. Ein PD-Regler, der eigentlich ein lineares System erwartet, ist wohl nicht der optimale Ansatz. N.B.: Ich bin immer wieder fasziniert, was hier an Projekten diskutiert wird. Deines gehört definitiv dazu. Max
Patrick L. schrieb: > Die Regelstrecke würde ich mit einem PT1-Glied > approximieren. Welche physikalische Gegebenheit bringt dich dazu daß das ein PT1 ist?
Udo Schmitt schrieb: > Patrick L. schrieb: >> Die Regelstrecke würde ich mit einem PT1-Glied >> approximieren. > > Welche physikalische Gegebenheit bringt dich dazu daß das ein PT1 ist? Habe im Studium mal ein inverses Pendel geregelt. Da hatten wir ein PT1 Verhalten für die Strecke angenommen. Allerdings wurde das ganze dann auch wieder linearisiert und im Arbeitspunkt betrachtet, etc.... Da sich scheinbar viele Leute mit der Problematik beschäftigen werde ich hier auch mal ein wenig Theorie beisteuern. Alles aufs inverse Pendel bezogen, kann aber in großen Teilen Analog für den balancierenden Roboter angesetzt werden. Eine Zustandregelung ist für diese Aufgabe ein wenig Oversized und ja im Grunde durch den Kalman-Filter für den Neigungswinkel bereits geschehen. Der Kalman-Filter ist ja im Prinzip von der Struktur wie der Luenberger-Beobachter, aufgrund von verrauschten Messsignalen wird auf die echten Messwerte geschlossen (und dabei schwächen des einen Sensors durch den anderen ergänzt). Ich möchte der Kalman-Teil aber als Black-Box ansehen aus der ich einfach den Neigungswinkel bekommen und der "hoffentlich" möglichst genau ist. Was mein Problem zur Zeit ist: Wie kann ich das System mit einer Sprunkfunktion beaufschlagen um eine geeignete Sprungantwort zu bekommen, auf deren Basis ich ein sehr vereinfachtes Modell des Systems zu erhalten. Mit diesem könnte ich dann zumindes schon einmal "optimale" Reglerparameter simulieren. Achso, siehe Anhang. Da wurde die linearisierung im AP Phi = 0 vorgenommen. Womit dann gilt sin Phi ~ Phi und cos Phi ~ 1
:
Bearbeitet durch User
Max G. schrieb: > Ein PD-Regler, der eigentlich ein lineares System erwartet, ist wohl nicht > der optimale Ansatz. Dadurch das ja von geringen Auslenkungen aus dem Arbeitspunkt ausgegangen wird wird das ganze ja wieder linear. Ein Einsatz des PD-Reglers wird dadurch möglich. Außerdem sollte man vermeiden einen I-Anteil dazu zu nehmen, da die Strecke (wenn man sich die DGL der Strecke im Anhang oben ansieht) einen nicht zu verachtenden Anteil erhält. Dadurch würde man das ganze nur noch schlechter Regelbar machen. Anbei noch ein Paar Bilder vom aktuellen Aufbau.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.