Hallo, mit dem Lego-Set 51515 habe ich einen simplen Roboter gebaut, der sich selbst aufrecht halten soll. Warum? Nur zum Spaß, und um vielleicht ein bisschen was zu lernen. Das Thema ist absolutes Neuland für mich, aber ich finde das Ganze sehr faszinierend :-) Nach ein bisschen Recherche bin ich zu dem Ergebnis gekommen, dass ein PID-Regler wohl für dieses Problem geeignet ist. Sowohl die Theorie als auch die Beispiel-Implementierungen im Netz meine ich verstanden zu haben. Allerdings sind meine Ergebnisse bisher sehr ähem dürftig. Der Roboter schafft es nicht mal ansatzweise sich aufrecht zu halten. Auch ein zweistündiges PID-Tuning hat bisher keinen Erfolg gebracht. Daher wollte ich mich mal an die Experten hier wenden: - Könnte es an der Hardware liegen? Ist der Aufbau des Roboters geeignet? Sind Lego-Motoren ggf. zu schwach? - Liegt es an der Implementierung? Der Code ist ja wirklich sehr simpel... - Oder muss man einfach nur mehr/länger/besser an den PID-Parametern feilen? Zwei Bilder vom Roboter habe ich angehängt. Den derzeitigen Stand des Programms ebenfalls. Wer den Roboter in Aktion sehen möchte wir hier fündig: https://drive.google.com/file/d/1XtRt83N_fkW3YN8b2uqhdwNeta5lncKU/view?usp=sharing Für sachdienliche Hinweise wäre ich dankbar :-)
Sowas gabs mal bei meiner ehemaligen Uni als Bachelorarbeit: https://www.ti.uni-bielefeld.de/html/research/fastA4/index.html Ist jetzt also nicht das einfachste Thema, aber auch nicht unmöglich ;)
Das Video sieht doch schon ganz gut aus. Im Prinzip macht der Roboter das Richtige. Er reagiert aber zu langsam, und wenn der Roboter mal eine bestimmte Neigung überschritten hat, dann reicht die Beschleunigung der Motoren einfach nicht mehr aus. Was helfen könnte: sehr weit oben (Größenordnung 20cm) ein Gewicht anbringen. So werden die Pendelbewegungen viel langsamer, und Neigungsänderungen können korrigiert werden, bevor es zu spät ist. Der Roboter muss schon auf sehr kleine Neigungsänderungen reagieren. Vielleicht ist da ein Teil des Problems?
Thomas S. schrieb: > Was helfen könnte: sehr weit oben (Größenordnung 20cm) ein Gewicht > anbringen. Ja sehe ich auch so. Massenträgheit könnte helfen. Verschleiert ja aber nur dass die Regelstrecke so nicht richtig funktioniert. Ich würde auch noch 2 andere Dinge anschauen: Setze am Anfang der while(1) Mal einen Pin auf High und vor dem Wait ganz am Schluss den Pin wieder auf Low. Damit kannst du zum einen schauen wieviel Zeit deine eigentlichen Rechnungen benötigen (evtl. gehst du von 10ms aus und der Rest benötigt nochmal genauso viel, im schlimmsten Fall unterschiedliche Durchlaufzeiten) und ob die 10ms Zykluszeit einigermaßen stabil sind (--> geht ja in den I und D Anteil ein). Wenn du ein Oszi hast. Ansonsten musst du dir evtl Zeiten latchen und irgendwie ausgeben. Variante 1 wäre zu bevorzugen. Was für ein Sensor ist das denn genau der denn Winkel misst? Bezeichnung? Vielleicht auch noch die verbauten Chip Bezeichnung (en) falls du die hast damit man Mal etwas abschätzen kann bzgl Genauigkeit/Reproduzierbarkeit/Updaterate/Bandbreite des Sensors. Ich habe sowas auch während dem Studium Mal aus Schrottteilen gebaut. Hatte sogar nur ein Mega Controller drauf und musste zusätzlich noch die Sensordaten fusionieren. Erster Versuch war auch ein PID mit ca. 100Hz Updaterate. Regelparameter grob eingestellt hat ausgereicht damit das Ding stehen blieb.
N. M. schrieb: > Massenträgheit könnte helfen. Auf jeden Fall. > Verschleiert ja aber nur dass die > Regelstrecke so nicht richtig funktioniert. Es kann aber auch sein, dass man das über die vorgestellte Massenverteilung nicht mehr hinbekommt. Da muss man wirklich sehr flink sein. Versuche einmal, einen Besenstiel und einmal ein Streichholz auf dem Zeigefinger zu balancieren. Bei dem Streichholz ein Ding der Unmöglichkeit.
:
Bearbeitet durch Moderator
Beitrag #6502673 wurde von einem Moderator gelöscht.
Frank M. schrieb: > die vorgestellte > Massenverteilung nicht mehr hinbekommt. LEGO..... Na dann macht halt die Benle (Beine) länger.
Beitrag #6502692 wurde von einem Moderator gelöscht.
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.