Forum: Mikrocontroller und Digitale Elektronik Theorie zu selbstbalancierenden Roboter


von Martin R. (mironik)


Lesenswert?

Hallo,
ich möchte einen selbstbalancierenden Roboter bauen. An sich ist alles 
klar (Hardware, Software und Regelung mit PID). Es gibt an der Theorie 
aber eine Sache, die mir unklar ist.
Ich kann den Roboter mittels IMU auf genau 90° balancieren. Aber wenn 
der Schwerpunkt nicht genau in der Mitte liegt, dann würde der Roboter 
bei genau 90° immer in eine Richtung fahren. Wenn ich dann auf die eine 
konstante Winkelgeschwindigkeit regle, kann es trotzdem sein, dass der 
Roboter in eine Richtung fährt. Irgendwie müsste man den Roboter so 
regeln, dass er lediglich nahe 90° steht und dabei die Räder sich 
möglichst wenig drehen. Kann mir jemand kurz erläutern, wie man den 
Roboter regelt, damit er quasi still steht oder eine entsprechende 
Lektüre empfehlen? (ja, gegoogelt habe ich schon, da findet man zwar 
viele Projekte aber wenig zur eigentlichen Theorie dazu)
Danke
Grüße

von Jens G. (jensig)


Lesenswert?

Ja dann musst Du eben das 90°-Soll in leichtem Maße immer so anpassen 
lassen, daß die Räder möglichst still stehen. Also nicht sturr auf 90° 
regeln, sondern als zweite Komponente auch auf Radstillstand regeln.

von Uwe B. (uwe_beis)


Lesenswert?

Die IMU liefert dir nur einen Wert, der (in erster Näherung) 
proportional zu Beschleunigung ist, aber nicht abhängig von der 
Geschwindigkeit. Das ist ja auch dir klar.

Die Geschwindigkeit ist das Integral der Beschleunigung + eine 
unbekannte Konstante. Das ist das Problem. Um die Geschwindigkeit zu 0 
zu machen, musst du sie direkt bestimmen. Entweder z. B. aus der 
Drehzahl der Antriebsräder (sofern vorhanden) oder auch der Spannung des 
Motors, die zu 0 werden sollen. Das muss in deine Regelung als eine Art 
Korrekturwert für die nicht exakte Justage der IMU auf 90° einfließen.

Wenn du noch die absolute Position = 0 erreichen willst, gilt dasselbe:

Die Position  ist das Integral der Geschwindigkeit + eine unbekannte 
Konstante. Um die Position zu 0 zu machen, musst du sie direkt 
bestimmen. Z. B. aus dem Drehwinkel der Antriebsräder (sofern 
vorhanden), der zu 0 werden soll. Auch das kann in deine Regelung 
einfließen.

von Purzel H. (hacky)


Lesenswert?

Die IMU bringt ja eine Beschleunigung. Und da musst du (horizontal) auf 
Null plus einen Offset regeln, sodass die Raeder stehen. Woher kommt der 
Offset ? Das laeuft unter schief montiert.

Allenfalls ist ein PID Regler etwas wenig ... zeigt sich aber nach ein 
paar Versuchen. Dann braucht's halt etwas mehr Theorie, wie an einem PID 
an den Parametern zu schrauben.

: Bearbeitet durch User
von Jens G. (jensig)


Lesenswert?

Uwe B. schrieb:
> oder auch der Spannung des
> Motors, die zu 0 werden sollen.

Würde ich nicht machen, sondern wirklich nur auf Drehzahl der Räder 
regeln. Denn Motorspannung=0 erreicht man nur in der absoluten 
Waagerechten - am Hang klappt das dann nicht mehr (falls der Robbi 
geländegängig sein soll ;-)

von Sebastian W. (wangnick)


Lesenswert?


von Martin R. (mironik)


Lesenswert?

Danke allen für die Antworten! Da muss ich mich dann erstmal 
einarbeiten.

von Obelix X. (obelix)


Lesenswert?

Jens G. schrieb:
> Uwe B. schrieb:
>> oder auch der Spannung des
>> Motors, die zu 0 werden sollen.
>
> Würde ich nicht machen, sondern wirklich nur auf Drehzahl der Räder
> regeln. Denn Motorspannung=0 erreicht man nur in der absoluten
> Waagerechten - am Hang klappt das dann nicht mehr (falls der Robbi
> geländegängig sein soll ;-)

Es bringt weder etwas die Drehzahl der Räder noch den Winkel zu regeln. 
Es muss die Beschleunigung geregelt werden. Kommt ein Störgröße z.B. 
Wind hinzu kippt das Ding bei Drehzahl 0 um. Durch Änderung der Drehzahl 
wird der Störgröße entgegengewirkt so das die Beschleunigung wieder 0 
ist. Aus diesem Regelkreis ergibt sich dann automatisch der Winkel egal 
ob der 80° oder 100° ist.
Bringt man das Gleichgewicht kontrolliert aus dem Gleichgewicht 
resultiert das in eine Drehbewegung der Räder und eine Fahrtbewegung.

von Monk (Gast)


Lesenswert?

Obelix X. schrieb:
> Bringt man das Gleichgewicht kontrolliert aus dem Gleichgewicht
> resultiert das in eine Drehbewegung der Räder und eine Fahrtbewegung.

Wie beim Segway.

Spannend wird die Frage, ob sich der Roboter automatisch dem Wind 
entgegen stellen kann, ohne weg zu rollen. Das würde ich gerne mal in 
der Praxis sehen, ist bestimmt spannend.

von Obelix X. (obelix)


Lesenswert?

Ja, der IMU müsste ja unterscheiden, ob ein Mensch die Stange bewegt 
oder Wind. Könnte der IMU aber entweder mit Gewichtssensoren im 
Trittbrett oder Hand-Sensoren im Lenker feststellen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Obelix X. schrieb:
> Ja, der IMU müsste ja unterscheiden, ob ein Mensch die Stange bewegt
> oder Wind.

In beiden Fällen muss das Gerät das Kippen vermeiden. Das geht nur, 
indem es mit den Rändern unter den "Angriffspunkt" fährt.

Ergo: Auch bei Wind wird sich das Teil fortbewegen müssen, um das Kippen 
zu vermeiden. Es wird also mit der Zeit "fortgeweht". ;-)

von Monk (Gast)


Angehängte Dateien:

Lesenswert?

Frank M. schrieb:
> Es wird also mit der Zeit "fortgeweht"

Man kann sich gegen den Wind lehnen. Mit Rollschuhen wäre das nicht 
möglich, aber der Roboter kann seine Räder abbremsen bzw. gegensteuern.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Steve van de Grens schrieb:
> Man kann sich gegen den Wind lehnen. Mit Rollschuhen wäre das nicht
> möglich, aber der Roboter kann seine Räder abbremsen bzw. gegensteuern.

Sorry, zwischen den Füßen auf Deinem Foto und den Rädern eine 
selbstbalancierenden Roboters gibt es einen kleinen Unterschied:

Um gegenzusteuern ("gegen den Wind lehnen"), muss er seine Räder bewegen 
(drehen!), da er den Anstellwinkel nicht anders hinbekommt. Er wird also 
zwangsweise ins Rollen kommen.

von Monk (Gast)


Lesenswert?

Frank M. schrieb:
> Er wird also zwangsweise ins Rollen kommen.

Ja ein Stückchen, bis er den richtigen Neigungswinkel hat. Wie gesagt, 
ist bestimmt spannend, das mal in echt zu sehen. Das ist bestimmt nicht 
einfach umzusetzen, schätze ich.

von Obelix X. (obelix)


Lesenswert?

Frank M. schrieb:
> Um gegenzusteuern ("gegen den Wind lehnen"), muss er seine Räder bewegen
> (drehen!), da er den Anstellwinkel nicht anders hinbekommt. Er wird also
> zwangsweise ins Rollen kommen

Der IMU muss die Räder nicht unbedingt drehen. Er muss einen Drehmoment 
erzeugen. Das kann dazu führen, dass sich die Räder drehen aber es führt 
auch dazu, das die Lenkstange sich entgegen bewegt. Wenn ein Mensch auf 
dem IMU steht verhindert er diese Gegenbewegung was in einer 
Vorwärtsbewegung resultiert. Steht kein Mensch drauf, kann der IMU mit 
diesem Drehmoment die Lenkstange dem Wind so entgegen stellen, dass er 
stehen bleibt.

Vergleiche mit einem Hubschrauber, ohne Heckrotor würde sich der Rotor 
in die  eine Richtung bewegen und die Kabine in die andere Richtung.

von Bolor (bolorkhuu_d)


Lesenswert?

hab vor Jahren einen gebaut, es war ein langer Weg.

https://www.youtube.com/watch?v=jPH4uLOQLpM

Du musst erstmal verstehen was ein Zustandsregler ist, Polvorgabe etc.
Dann PI Stromregler. Kaskadenregelung. Ein self balancing Robot braucht 
einen sauberen Winkel, den du ausschliesslich mit Kalman Filter sauber 
kriegen kannst, denn der Beschleunigung Sensor ist an sich stark 
verrauscht, mit Gyroscope musst du es kombinieren, Gyroscope liefert dir 
eine Winkelgeschwindigkeit, die man numerisch integriert kommt auf den 
Winkel, der leider mit offset behaftet ist, wird der Fehler vom 
Beschleunigungssensor korrigiert. Siehe Beobachter Entwurf in 
Regelungstechnik.

Wenn man den Motorstrom messen kann, wird einiges einfacher, denn du 
kannst den Drehmoment direkt vorgeben ohne mit unterlagerter 
Drehzahlregelung zu beschäftigen.

Bei Regelungstechnk gibts ne schöne Methode, man nennt sie exakte 
Linearisierung, bzw. partielle Linearisierung, damit kriegst du einen 
neuen Steuereingang, womit das System an sich weniger kompliziert wird, 
Bei mir war sie die Beschleunigung, nicht Drehmoment. Die kannst du 
direkt numerisch integrieren und deiner Drehzahlregler als Sollwert 
vorgeben.

von Jan H. (jan_h74) Flattr this


Lesenswert?

Hier mehr info ueber dieses thema, Google translate hilfst du !! : 
https://wiki.robotmc.be/index.php/Balancerende_robot

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Bolor schrieb:
> hab vor Jahren einen gebaut, es war ein langer Weg.

Geniales Teil! Die Musik dazu ist übrigens auch gut ausgewählt.

👍

Kann der Roboter denn auch auf der Stelle stehen bleiben und was 
passiert wenn du ihn mit dem Finger anstupst? Hast Du schon mal probiert 
ihm einen kleinen Rucksack mit einem Gewicht einseitig anzuzuhängen?

Wenn ich später mal gesund in die Rente gehen sollte, dann werde ich 
auch so einen Balance-Roboter bauen. Allerdings komplett analog, nur mit 
Operationsverstärkern. Damit jeder anhand des Schaltplans sofort 
erkennen kann, wie die Regelungstechnik dazu funktioniert.

von Udo S. (urschmitt)


Lesenswert?

Frank M. schrieb:
> Um gegenzusteuern ("gegen den Wind lehnen"), muss er seine Räder bewegen
> (drehen!), da er den Anstellwinkel nicht anders hinbekommt. Er wird also
> zwangsweise ins Rollen kommen.

Bzgl dieser (älteren) Diskussion. Soweit ich weiß misst ein Segway nicht 
nur den Winkel der Lenkstange, sondern auch noch ob der Benutzer sich 
nach vorne lehnt oder zurück und entscheidet daraus ob sich der Segway 
bewegen soll.
Es wäre interessant wie das gemessen wird, ob in der Platte auf der man 
steht, oder durch DMS im Lenker, oder ...?

Die Regelung als solche nutzt auf jeden Fall die Winkelgeschwindigkeit 
als Maß wie schnell der Segway kippen will und errechnet daraus die 
notwendige Beschleunigung der Räder.
Wie Bolor schon geschrieben hat ist das kein einfacher PID mehr, sondern 
eine  Mehrgrößenregelung / Zustandsregelung.

: Bearbeitet durch User
von Bolor (bolorkhuu_d)


Lesenswert?

Michael M. schrieb:
> Bolor schrieb:
>> hab vor Jahren einen gebaut, es war ein langer Weg.
>
> Geniales Teil! Die Musik dazu ist übrigens auch gut ausgewählt.
>
> 👍
Danke!
> Kann der Roboter denn auch auf der Stelle stehen bleiben und was

Klar kann er stehen bleiben, siehe ein anderes Video in meinem Youtube 
Kanal. Er steht wie eine Eins.

> passiert wenn du ihn mit dem Finger anstupst? Hast Du schon mal probiert
> ihm einen kleinen Rucksack mit einem Gewicht einseitig anzuzuhängen?
Die Regelung ist robust genug gegen gewisse Störung, Mit einem seitlich 
verladen Gewicht wird die translatorische Ruhelage um ein paar cm in die 
Gegenrichtung verschoben, das lässt sich mit I Regler kompensieren.

> Wenn ich später mal gesund in die Rente gehen sollte, dann werde ich
> auch so einen Balance-Roboter bauen. Allerdings komplett analog, nur mit
> Operationsverstärkern.
Mit old School OV Regler sollte gehen, nur viel umständlich stelle ich 
mir das vor

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Bolor schrieb:
> Er steht wie eine Eins.

Das hört und sieht man gern. 😃

Bolor schrieb:
> Mit old School OV Regler sollte gehen, nur viel umständlicher stelle ich
> mir das vor.

Umständlich darf es ruhig sein, Hauptsache analog und mit vielen 
Poti-Trimmer. Dann hat man immer was, wo man zwischendurch mal ad hoc 
dran rumspielen 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.