Ich habe bereits einen zweirädrigen Auswuchtroboter mit einigen Servos mit kontinuierlicher Rotation und einem Beschleunigungsmesser / Gyroskop gebaut. Ich habe die Servos auf einige Getriebemotoren mit 8-Bit-Encodern umgerüstet, mit dem Ziel, dass der Roboter beim Auswuchten herumfährt.
Ich bin ein bisschen festgefahren, wie ich es programmieren soll, um herumzufahren, während ich noch balanciere. Ich denke, eine Möglichkeit wäre, den Steuereingang der Motoren so zu gestalten, als würde er gedrückt. Der Roboter wäre also momentan in der Richtung, in die er fahren soll, unausgeglichen. Das scheint mir allerdings etwas ungeschickt zu sein. Es muss einen besseren Weg geben? Ich denke, ich muss das dynamische Modell für den Balancer mit dem Differentialantrieb kombinieren, aber dies geht etwas über die mir bekannte Steuerungstheorie hinaus.
Update Aus Anortons Antwort habe ich jetzt eine gut aussehende Zustandsmatrix.
Nun zur Polplatzierung: Die A-Matrix muss 4x4 sein, basierend auf dem neuen Zustandsvektor. Und B muss dann eine 4x2-Matrix sein, da ich nur das Drehmoment des linken / rechten Rads steuern kann (u = 2x1-Vektor).
Ich muss vielleicht mehr darüber lesen, aber gibt es eine systematische Möglichkeit, die A-Matrix durch Polplatzierung zu bestimmen? Für dieses Beispiel und noch kompliziertere Beispiele scheint es mir sehr schwierig zu sein, A durch Erraten und Überprüfen zu bestimmen.
Update Nr. 2 Nach einigem Lesen denke ich, dass ich es jetzt verstehe. Ich brauche immer noch die Dynamik des Roboters, um die A-Matrix zu bestimmen. Sobald ich das habe, kann ich die Polplatzierung mit Matlab oder Oktave durchführen.
:)
Mein Kontrollwissen ist sehr gering, aber ich werde meinen Wert von $ 0,02 da