die Frage ist gut... Da könnte man bestimmt ein paar Stunden am Stammtisch rum bekommen. Ich versuch mich mal kurz zu fassen.
Das Steuerungskonzept sieht bis jetzt so aus: Der 1x µC liest die Potis/Tasten von der Kabelvernbedinung ein. Dort werden die noch mit einer "keine Eingabe erfolgt" Zeitkonstante verwurstet und per UART an den 2. µC gesendet. Also hat der 1.µC z.Zt. nicht wirklich viel zu tun.
Geradeaus (Vorwärts/Rückwerts):
Es wird für jedes Bein die bekannte IST-Position genommen, und die Position des Beins längs zum Roboter neu berechnet. Also -+ 0 bis 1mm pro Schleifendurchlauf, je nach Potistellung. Der Seitliche Abstand bleibt dabei konstant, es sein den dieser weicht vom Soll (Standartwert) ab. Das wird dann beim Umsetzen des Beins behoben.
Kurvenlauf (Vorwärts/Rückwärts):
Aus der Bekannten IST-Position des Beins (im Bezug zur Robotermitte) wird die Globale Position zum Kurvenmittelpunkt errechnet. Für jedes Bein einzeln. Der Kurvenmittelpunkt liegt immer auf einer Achse Vetikal (Seitich) zur Robotermitte. Aus dem UART empfangenen Daten sind Vorwärts/Rückwärts (0 bis 1mm) und der Kurvenradius bekannt. Es wird um "Vorwärts/Rückwärts" die Sehnenlänge verschoben. Und aus den neuen Globalen Position auf jedes Bein einzeln zurück gerechnet. Somit ergibt sich für jedes Bein eine neue Längs- und Seiten- Position.
Um die eigene Achse drehen (Links/Rechts):
wie Kurenlauf nur das der Radiusmitelpunkt in der Mitte des Roboters sitzt.
Seitliches laufen kann er nicht.
Um die Schrittfolge der Beine einzuhalten sind gleich zwei funktionen implementiert. Erstens wird immer jedes Bein um (Vorwärts/Rückwärts) verschoben. Bei Kurvenlauf im Verhältniss des Einzelbein-Radius zur Robotermitte (Strahlensatz). Überschreitet ein Bein z.B. beim Umsetzen sein Grenzwert, wird dieser bei "Bein nicht am Boden" wieder aufgeholt.
Auserdem ist für jeden Laufmodus (3-3/4-2/5-1) die Beinspreizung in % hinterlegt (Konstante). Befindet sich das Bein im Rückhub (Umsetzen) wird die IST-Position in % zur Sollposition in % verglichen. Bei Abweichungen wird das Bein verlangsamt, beschleunigt oder der Rückhub sogar abgebrochen. Ist ziemlich kompliziert implementiert, da es so viele Optionen gibt (3 Laufmodi mit Vor/Rück, Kurve, Kreisdrehung)
Jedes Bein wird ein paar mm vor Ende seiner maximalen Auslenkung (längs zur Robo) bereits vom Boden abgehoben, um bei Richtungsumker des Beins nicht den Roboter abzubremsen. Gleiches gilt für das ende des Umsetzvorgangs. Das Bein nimmt erst wieder fahrt mit dem Roboter auf ehe es auf den Boden aufsezt. Das Spart so ca. 4A, und der Robo läuft um einiges flüssiger.
Die Grenzwert längs zum Roboter werden im Kurvenlauf auf den Beineinzelradius angepasst. Somit ist die Schrittlänge jedes Beines variabel. Geradeaus sind alle gleich. Aber bei Kurvenlauf, werden die kurveninneren Schrittlängen eingekürzt.
So ich denke das ist es jetzt mal ganz knapp, und hoffe ich hab mich verständlich ausgedrückt. Falls nicht werde ich versuchen deine Fragen zu beantworten.
mfg Thomas
Lesezeichen