Hinzufügen eines Aktuators oder einer Kraft zu einem (Federstein-) Gelenksteifkörpermodell

9

Ich arbeite an einem Projekt, bei dem ich ein System modellieren muss, das im Wesentlichen aus einer Reihe von Kugelgelenken besteht, die an einer Basis befestigt sind, die wiederum an einer prismatischen Verbindung (Schiene) befestigt ist.

Ich habe Roy Featherstones Algorithmen für starre Körperdynamik von Anfang bis Ende gelesen und ich habe auch den Abschnitt Dynamik aus dem Springer-Handbuch für Robotik (ebenfalls von Featherstone geschrieben) gelesen .

Es hat lange gedauert, bis ich mich an die Verwendung seiner "räumlichen Vektor" - und "räumlichen Matrix" -Notation gewöhnt hatte, aber nachdem ich seine gesamte Notation als Übung von Hand neu erstellt hatte, erwies es sich als eine gute Möglichkeit, 3x3 und zu verketten 3x1-Matrizen und -Vektoren in 6x6- und 6x1-Matrizen und -Vektoren. Die Mathematik, die er erfindet, um Operationen auszuführen, kann etwas mühsam zu lesen sein, da er eine Standardnotation entführt, aber insgesamt ist alles sehr kompakt und sehr einfach in MATLAB zu implementieren.

Mein Problem ist folgendes: Wie füge ich dem Modell Aktuatoren hinzu? Er geht durch die explizite Konfiguration der gemeinsamen Definitionen, Verbindungsdefinitionen usw., aber wenn es um Aktuatoren oder angewendete Kräfte geht, sagt er etwas wie: " hier einfach ein und Bob ist dein Onkel!" - Es wird überhaupt nicht diskutiert. Im Handbuch der Robotik schlägt er vor, eine falsche Beschleunigung in die feste Basis einzuführen, um den Gravitationskraftterm hinzuzufügen, zeigt jedoch nicht, wie er in lokalen Koordinaten hinzugefügt wird, und er erwähnt auch nicht, wie der Aktuatoreingang hinzugefügt wird.τa

Jede Hilfe wäre sehr dankbar. Ich habe überlegt, mit einem anderen Buch von vorne zu beginnen, aber es wird einen großen Zeitaufwand bedeuten, mich wieder an eine andere Notation zu gewöhnen. Ich würde gerne weitermachen, aber ich fühle mich nur ein paar Zentimeter von der Ziellinie entfernt.

Chuck
quelle

Antworten:

3

Aktuatoren Kräfte

Verstehe ich das richtig: Sie haben ein theoretisches Modell eines starren Mehrkörpersystems und möchten Berechnungen der Starrkörperdynamik durchführen. Sie haben das Modell implementiert und möchten nun berechnen, wie sich das Modell verhält, wenn es von einem Aktuator angetrieben wird.

Was ist jedoch ein Aktuator für Sie? Ist es einfach eine Kraft, die an diesem Gelenk wirkt? Ist es ein Gleichstrommotormodell? Ist es ein PID-Regler?

Die Dynamikalgorithmen in diesem Buch werden in Bezug auf verallgemeinerte Positionen , verallgemeinerte Geschwindigkeiten , verallgemeinerte Geschwindigkeiten und verallgemeinerte Kräfte . Wenn Sie ein prismatisches Gelenk haben, dessen Translation durch beschrieben wird, die lineare Kraft an diesem Gelenk durch . Wenn Sie eine revolute (Scharnier) Gelenk ist , deren Drehung durch haben beschrieben dann stellt ein Drehmoment an diesem Gelenke.˙ q ¨ q τ q i τ i q j τ jqq˙q¨τqiτiqjτj

Es liegt an Ihrem Verständnis eines Aktuators, wie berechnet wird. Wenn Sie einfach Kräfte oder Drehmomente anwenden möchten, setzen Sie die Werte in die entsprechenden Werte von . Sobald Sie dies haben, dienen sie als Eingabe für die Vorwärtsdynamikalgorithmen, um die Systemantwort auf die angewendeten Kräfte zu berechnen.τττ

Hinweis daneben: Featherstone verwendet , um die aktiven Schließkräfte der Schleife zu bezeichnen. Aus Ihrer Modellbeschreibung geht hervor, dass es keine kinematischen Schleifen gibt und daher nicht gilt.τ aτaτa

Schwerkraftbeschleunigung:

Featherstone wendet die Gravitationsbeschleunigung an der Basis an und lässt sie sich durch die Algorithmen durch den Baum ausbreiten. Dies erfolgt in der RNEA, Tabelle 5.1 in der Zeile

a0=ag .

Stattdessen können Sie auch die Zeile ändern

fiB=Iiai+vi×Iivi

zu

fiB=Ii(aiiX0ag)+vi×Iivi

die Gravitationseffekte individuell auf jeden Körper anzuwenden. Dies führt zusätzliche Berechnungen ein und ich sehe keine Vorteile darin.

Räumliche Algebra vs. Verkettung von 3-D-Vektoren

Die räumliche Algebra ist nicht nur eine Verkettung von 3D-Vektoren. Ersteres drückt Bewegungen des starren Körpers an einem festen Koordinatenrahmen aus, während letzteres an Punkten ausgedrückt wird, die sich mit dem Körper bewegen. Infolgedessen sind räumliche Beschleunigungen die zeitlichen Ableitungen von räumlichen Geschwindigkeiten. In der klassischen Notation mit zwei 3D-Gleichungen ist dies nicht der Fall (Abschnitt 2.11 von Featherstones Buch):

Wenn ein Körper eine konstante Winkelgeschwindigkeit hat, haben alle Punkte auf diesem Körper, die nicht auf der Rotationsachse liegen, eine Beschleunigung in Richtung der Rotationsachse (Rotationszentrum im planaren Fall). In der räumlichen Algebra hat dieser Körper eine räumliche Beschleunigung von Null, unabhängig von dem Rahmen, in dem die Beschleunigung ausgedrückt wird .ω

Die Raumgeschwindigkeit beschreibt die Linear- und Winkelgeschwindigkeit des Körperpunkts, die derzeit mit dem Ursprung des (festen) Referenzrahmens übereinstimmt. Wenn dieser Rahmen im Massenmittelpunkt ausgedrückt und mit dem globalen Referenzrahmen ausgerichtet wird, scheint es sich um eine einfache Verkettung der linearen 3D- und Winkelgeschwindigkeit zu handeln. Dies ist jedoch nur für diese spezielle Wahl des Referenzrahmens der Fall. In einem anderen Frame ausgedrückt erhalten Sie unterschiedliche Werte, aber es repräsentiert immer noch die gleiche Raumgeschwindigkeit.

Die räumliche Beschleunigung beschreibt den Fluss der linearen und Winkelgeschwindigkeit des Punktes, der mit dem Ursprung zusammenfällt. "Durchfluss" bedeutet hier, wie sich die Vektorgrößen (Linear- und Winkelgeschwindigkeit) über die Zeit ändern.

Martin Felis
quelle
Ich habe hart gearbeitet, um diesen Algorithmus zu implementieren, aber ich habe versucht, so methodisch wie möglich zu sein, um sicherzustellen, dass selbst die grundlegendsten Aspekte jedes Mal genau wie erwartet funktionieren. Zu diesem Zweck habe ich eine Reihe von Experimenten durchgeführt, bei denen ich die genaue Lösung berechnen und die simulierte Lösung vergleichen kann.
Chuck
Der letzte Aspekt, an dem ich gearbeitet habe, war das Kugelgelenk - die Quaternionendarstellung und Beschleunigungen. Für dieses Experiment versuche ich, ein Foucault-Pendel zu simulieren, indem ich die Erde modelliere und ein Pendel mit einer Kugelverbindung auf die Oberfläche lege. Dabei ist meine feste Basis der Erdmittelpunkt, um den sich die Erde dreht. Dann kann ich mich vom rotierenden Erdmittelpunkt bis zu einem beliebigen Breitengrad nach oben / unten drehen und auf die Oberfläche verschieben, wo ich mein Kugelgelenkpendel platziere.
Chuck
Ich brauchte einen Weg, um die Schwerkraft hinzuzufügen, weil ich sie nicht einfach auf die Z-Achse meiner festen Basis legen konnte. Dies würde dazu führen, dass die Schwerkraft nur am Nordpol korrekt funktioniert. Im Wesentlichen kümmere ich mich nicht um Kräfte unter der Erdoberfläche, sondern nur um die Präzession des Pendels.
Chuck
Ich habe eine verwandte Frage gestellt, wie ich mit festen Gelenken umgehen soll.
Chuck
2

Wenn Sie nicht auf die Rigid Body Dynamics Library (RBDL) gestoßen sind, sollten Sie sich ansehen, wie sie implementiert wird, und / oder den Autor Martin Felis kontaktieren.

Barrett Ames
quelle
Barrett, ich habe die RBDL vor einigen Wochen gefunden und obwohl ich manchmal versucht habe, Informationen zu sammeln, ist sie in C ++ mit Methoden geschrieben, die es schwierig machen, dem Code zu folgen. Zum Beispiel gibt es eine Zeile im Kinematikcode, die lautet G.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j]));. Was macht die Funktion apply? Nun, ich muss für jede Klasse in die Header-Datei gehen base_to_body, aber ist das ein Gelenk oder ein Körper? Auch Dinge wie model.base[j].inverse().apply(model.S[j])sind nicht besonders klar.
Chuck
Das bedeutet nicht, dass es manchmal nicht nützlich war, aber für mich ist es sehr anstrengend, Verständnis von der RBDL zu erlangen.
Chuck
Willkommen bei Robotics Barrett Ames. Vielen Dank für Ihre Antwort. Wir bevorzugen jedoch, dass die Antworten nach Möglichkeit in sich geschlossen sind. Links neigen dazu zu verrotten, sodass Antworten, die auf einem Link beruhen, unbrauchbar werden können, wenn der mit Inhalten verknüpfte Inhalt verrottet. Wenn Sie über den Link mehr Kontext hinzufügen, ist es wahrscheinlicher, dass die Leute Ihre Antwort nützlich finden.
Mark Booth