Laufen mit Beinen
Wie ein vierbeiniger Roboter in Bewegung aufrecht bleibt: Gaits und ihr Timing, das Stützpolygon, statische und dynamische Stabilität sowie die Fußplatzierungsregel, die der Trot-Generator von Strido verwendet.
In Strido
Der skriptbasierte Gait ist TrotGait in packages/strido-core/src/strido/gait.py, gemeinsam genutzt von MuJoCo, Gazebo und dem realen Roboter (über ros2/strido_control/strido_control/gait_node.py). Die gelernte Policy (packages/strido-sim/) erhält einen Takt mit derselben Periode von GAIT_PERIOD_S in packages/strido-core/src/strido/policy.py). Die praktische Anwendung steht in Kinematik und Gaits.
Gaits als Timing-Muster
Ein Gait ist ein periodisches Muster von Fußkontakten. Jedes Bein
wobei
Gaits unterscheiden sich nur in
| Gait | Tastgrad | Versätze (FL, FR, RL, RR) | Füße am Boden |
|---|---|---|---|
| Schritt (Kriechgang) | immer | ||
| Trot | 2 (ein diagonales Paar) | ||
| Passgang | 2 (ein seitliches Paar) | ||
| Sprunggang | 2 (vorderes oder hinteres Paar) |
Mit
Schwerpunkt und Stützpolygon
Der Schwerpunkt (CoM) von Körpern mit Massen
Das Stützpolygon ist die konvexe Hülle der auf den Boden projizierten Kontaktpunkte. Ein stillstehender Roboter (oder einer, der sich so langsam bewegt, dass die Trägheit vernachlässigbar ist) ist statisch stabil, wenn die Bodenprojektion des CoM innerhalb dieses Polygons liegt: Die Schwerkraft erzeugt dann um keine Polygonkante ein resultierendes Kippmoment.
Die statische Stabilitätsreserve ist der kürzeste Abstand vom projizierten CoM zum Rand des Polygons:
Über die Statik hinaus: ZMP und Capture Point
Beschleunigt der Körper, kommen Trägheitskräfte zur Schwerkraft hinzu. Der Zero-Moment-Point (ZMP) ist der Punkt am Boden, an dem die horizontalen Momente aus Schwerkraft und Trägheit verschwinden. Für eine Punktmasse in Höhe
Die Kontaktkräfte können nur drücken, daher muss der ZMP innerhalb des Stützpolygons bleiben; verlangt die Planung einen ZMP außerhalb, rollt oder hebt ein Fuß ab und der Roboter kippt. ZMP-Planung ist das klassische Werkzeug für gehende Humanoide.
Dasselbe Pendel liefert den Capture Point (instantaner Capture Point, divergente Bewegungskomponente). Seine Dynamik
ist die Stelle, an der ein Fuß aufgesetzt werden muss, damit der Körper darüber zur Ruhe kommt. Intuition: Je schneller man sich bewegt, desto weiter vorne muss man auftreten, um anzuhalten.
Rechenbeispiel. Die Standard-Körperhöhe von Strido ist GaitConfig.body_height). Dann
Beim maximalen Vorwärtsbefehl
Fußplatzierung nach Raibert
Marc Raiberts hüpfende und laufende Maschinen zerlegten die Regelung in drei Teile: Sprunghöhe, Körperlage und Vorwärtsgeschwindigkeit über die Fußplatzierung. Die Idee: Während der Standphase bewegt sich der Körper um die Strecke
Der Rückführterm
So funktioniert der Trot-Generator von Strido
TrotGait ist eine bewusst einfache, deterministische, ungeregelte (Open-Loop-)Version des Obigen (kein Rückführterm, GaitConfig:
| Parameter | Wert | Bedeutung |
|---|---|---|
period | voller Zyklus | |
duty | Trot: Stand- und Schwungphase gleich lang | |
step_height | Scheitel der Schwungphase | |
body_height | Hüftachse über den Füßen | |
max_linear | Befehlsbegrenzung | |
max_yaw_rate | Befehlsbegrenzung |
PHASE_OFFSET gibt FL und RR
Geschwindigkeit je Fuß. Für einen Befehl
wobei
Standphase. Mit dem normierten Standfortschritt
Schwungphase. Mit
Jeder Fuß landet also bei clamp_leg). Bei Nullbefehl bleiben die Füße in ihrer Nennstellung.
Rechenbeispiel. Vorwärtsbefehl
Jeder Fuß bewegt sich von
Für eine reine Drehung, packages/strido-core/src/strido/geometry.py), also
Grenzen. Als ungeregelter Generator reagiert er nicht auf Stöße, Rutschen oder Neigung: Nichts setzt den Fuß weiter nach vorne, wenn der Körper zu schnell ist. Diese Lücke füllt die gelernte Policy – sie sieht die IMU und kann Rückführung lernen (siehe Reinforcement Learning).
Selbsttest
Ein Gait hat
. Wie viele Füße sind zu jedem Zeitpunkt am Boden, und kann sie statisch stabil sein? Antwort
Jedes Bein ist 20 % des Zyklus in der Luft; mit versetzten Phasen schwingt immer nur ein Bein, daher sind mindestens drei Füße am Boden. Ja, wenn der CoM innerhalb des Stützdreiecks bleibt.
Warum ist die statische Stabilitätsreserve eines Trots fast immer nicht positiv?
Antwort
Nur zwei diagonale Füße stützen den Körper, daher ist das Stützpolygon eine Strecke; die CoM-Projektion liegt nur zufällig darauf, nie echt innerhalb.
Wie groß ist in
TrotGaitdie Schrittlänge bei, und wo landet der Fuß? Antwort
; der Fuß landet vor der Nennposition. Was bewirkt eine Erhöhung von
body_heightbei der Capture-Point-Zeitkonstante?Antwort
wächst, der Körper kippt also langsamer, aber der Capture Point liegt bei gleicher Geschwindigkeit weiter vorne. Welcher Raibert-Term fehlt im Trot von Strido, und was bedeutet das?
Antwort
Der Geschwindigkeits-Rückführterm
. Der Gait kann Geschwindigkeitsfehler oder Störungen nicht korrigieren.
Weiterführende Literatur
- M. H. Raibert, Legged Robots That Balance, MIT Press, 1986.
- B. Siciliano und O. Khatib (Hrsg.), Springer Handbook of Robotics, 2. Aufl., 2016 — Kapitel über Laufroboter und Gehen.
- J. Pratt, J. Carff, S. Drakunov und A. Goswami, „Capture Point: A Step toward Humanoid Push Recovery“, IEEE-RAS Humanoids, 2006.
- M. Vukobratović und B. Borovac, „Zero-Moment Point — Thirty Five Years of Its Life“, International Journal of Humanoid Robotics, 2004.
- R. B. McGhee und A. A. Frank, „On the stability properties of quadruped creeping gaits“, Mathematical Biosciences, 1968.