-
-
Erfahrener Benutzer
Roboter Genie
Bei meinem Bot ist die Schrittsteuerung wie folgt geregelt:
Dazu sei kurz erwähnt, das ich das mit inverser Kinematik kombiniert habe. In der vorherigen Version war ein Atmega32 für zwei Beine zuständig - mittlerweile hab ich es so optimiert, das ein Atmega128 alle 18 Servos steuert, die IK berechnet und die Schrittsteuerung macht. Das Ganze bei einer Wiederholfrequenz um die 50Hz. Mehrere Controller hatten den Vorteil von mehr Rechenpower und den Nachteil, das zu viel Kommunikation mit der Schrittberechnung nötig war, damit keine unerlaubte Kombination aus schreitenden Beinen stattfand.
In der ersten Version hatte ich meinen Bot mit den verschiedensten Reihenfolgen programmiert, doch je nach Bewegung ist keine starre Reihenfolge optimal. Nun vergleicht der Bot 50 Mal pro Sekunde die Endposition der Beine mit einer optimalen Standposition des Bots in Ruhelage und berechnet, wie weit die einzelnen Beine von dieser optimalen Position entfernt sind. Nach entfernungsbezogener Sortierung ergibt sich eine Prioritätsliste, welche Beine am vordringlichsten Bewegt werden müßten und welche Beine keines Schrittes bedürfen.
Nun wird diese Liste abgearbeitet, vorbei zwei Faktoren ausschlaggebend sind:
Schrittmodi: es kann frei gewählt und sogar während des Laufens umgestellt werden, wieviele Beine gleichzeitig einen Schritt machen dürfen. Die erlaubte Anzahl geht von 1 bis 3. Dadurch, das der Controller die Schritte selber auslöst, ist er auch stets über die Anzahl der Beine informiert, die grade einen Schritt machen.
Ist die Anzahl der schreitenden Beine gleich der Anzahl der Beine, die gleichzeitig einen Schritt machen dürfen, so braucht die Liste nicht weiter angearbeitet zu werden, denn es dürfen sowieso keine Schritte mehr gemacht werden.
Das zweite wichtige Faktum ist die Tot-Liste - eine Liste, in der vermerkt ist, welche Beinkombinationen grundsätzlich verboten sind. So ist es z.B. nicht gestattet, das die beiden vorderen Beine gleichzeitig in der Luft sind. Ebenso ist es nicht gestattet, das z.B. das Bein vorne Links und das Bein mittig links gleichzeitig einen Schritt machen, u.s.w.
Ist das Bein, welches nun bewegt werden müßte dadurch blockiert, das seine Beinnummer zusammen mit der Beinnummer eines schreitenden Beins in dieser Totliste steht, so wird dieses Bein nicht bewegt und das Bein mit der nächstniedrigeren Priorität wird "begutachtet".
Es ist sehr interessant zu sehen, wie gut diese Methode funktioniert. Geht der Bot enge Kurven, so verharren die dem Drehmittelpunkt nahen Beine fast Schrittlos, während sich die äußeren Beine öfter Bewegen. Ebenso führt diese Methode bei 3 gleichzeitig gestatteten Schritten zur bekannten 3/3 Geh-Mehode, ohne das diese explizit vorgegeben ist.
Ein weiterer netter Nebeneffekt dieser Methode ist, das der Bot, wenn er anhält, alle Beine der Reihe nach in die Standposition bringt. Er verharrt also nicht mitten im Schritt oder in einer ungünstigen Standposition, von der aus er vielleicht schlecht in eine andere Richtung gehen kann.
Ich hoffe, ich konnte damit helfen 
Gruß MeckPommER
P.S.: ich finde deinen Bot richtig schick und gelungen! Ich bin schon gespannt auf weitere Videos 
P.P.S.: ausversehen hatte ich auch mal 4 gleichzeitig bewegte Beine erlaubt. Der Bot bewegte trotzdem stets nur maximal 3 Beine, da eine Bewegung des 4. Beines automatisch durch die Tot-Liste abgefangen wurde.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen