Ich habe einen kleinen Vierbeiner mit drei Freiheitsgraden, an dem ich gearbeitet habe: 3DOF Mini Quadruped .
Mein ursprünglicher Code dafür war ein einfacher Servocontroller auf dem Arduino und ein Scala-Code, der Servobefehle über die Leitung senden würde. Ich habe die gesamte Inverse Kinematics- und Ganglogik in Scala ausgeführt und es zum Laufen gebracht: 3dof Quadruped First Gang .
Meine Ganglogik in Scala war etwas naiv; Es hing davon ab, dass sich die Beine am Anfang in der richtigen Position befanden (eine Seite erstreckte sich nach vorn und hinten, die andere nach innen). Die Logik bestand einfach darin, alle vier Fuß rückwärts um 1 mm entlang y zu verschieben. Wenn ein Coxa-Winkel übermäßig nach hinten gedreht wurde, halten Sie an und führen Sie eine kleine Routine durch, bei der der Fuß 10 mm in z angehoben und dann 60 mm entlang y vorwärts verschoben und wieder abgesenkt wird. Naiv, aber effektiv.
Jetzt habe ich meinen IK-Code in Arduino C umgeschrieben und ich versuche zu entscheiden, wie ich mit der Gangdynamik vorankomme. Es fiel mir schwer, gute, leicht verständliche Ressourcen über Gangarten zu finden. Ich weiß etwas über den Unterschied zwischen dynamisch stabilen Gängen (wie Kriechgängen), bei denen der Körper zu jeder Zeit ein stabiles Stativ ist, und dynamisch instabilen Gängen (Gehen, Traben), bei denen zwei Beine gleichzeitig vom Boden abheben, und dem Körper Bescheid fällt im Wesentlichen nach vorne in das vorrückende Bein.
Ich hatte einige Gedanken über Zustandsautomaten und versuchte zu berechnen, ob der Körpermittelpunkt in ein Dreieck fällt, das von den verbleibenden Füßen gebildet wurde, um zu entscheiden, welcher Fuß sicher zu heben war, aber ich bin nicht sicher, ob dies Ideen sind, die es wert sind, untersucht zu werden.
Ich weiß, dass dies eine zu allgemeine Frage ist, aber ich bin gespannt, wie andere Leute dieses Problem angegriffen haben, und alles, was ich finden konnte, sind Forschungsarbeiten.