Zitat Zitat von oberallgeier Beitrag anzeigen
Es wäre blöd wenn ich nun sage: alles kein Problem. Aber diese simultane Ansteuerung der/von Servos hat mich etliche Zeit gekostet . Es läuft ja darauf hinaus, dass man die an sich typbedingte, maximale Servo-Stellgeschwindigkeit von rund 60°/0,15 sec zu einer langsameren und weichen Geschwindigkeit runterbremst. Alles kein Problem ! Das läuft dann bei mir (bei archie) bis zur simultanen Gestik (Video - leider grottenschlecht). Bei letzterer werden vom zentralen Controller = RNControl die einzelnen Steuersequenzen für Arm links, Arm rechts und Kopf zeitlich genau ausgegeben (mittlerweile "gute" Eigenbauplatinen); auch die Stimme (zeitlich genauer Einsatz einer bestimmten Teilsequenz) wird von der Zentrale per I²C an den Kopf geleitet - der steuert entsprechend die Audioelektronik an.

Wie hab ich die Servosynchronisation gemacht?
1) Bekanntlich werden die Servos nur max 10% der Ansteuerungsdauer mit einem genau bemessenen Stellsignal bedient. Ich habe also in der Ansteuerungspause Zeit die "andern" Servos zu bedienen. Ich hab im Archie viele Billigst-Mikroservo (aktuell insges 27 und vier "normalgrosse") verbaut aus der LxBxH 25 mm x 13 mm x 22 mm Baugröße.
2) Die Servos werden im Standardprotokoll betrieben siehe Link oben : alle ca. 20 ms einen Stellpuls.
3) Ich habe eine Servoroutine mit unterschiedlichen Befehlsmöglichkeiten. Der wichtigste Befehl lautet: fahre Servo i von A nach B mit x Inc/Servoperiode. A und B sind meine Pulsteilchen - rund 5000 pro Vollausschlag/>180° des Servos. Etwa 180 inc/Periode bedeutet dabei full speed und weniger als sechs bis acht inc/Periode ist das minimale Ende; ab 10 inc/Periode läufts wirklich bzw gut glatt. Also gibt die Servoroutine das entsprechende Signal aus und macht jeden einzelnen Puls um x inc länger. Der "Rest" zum genauen Ziel ist dann der letzte variable Puls. Danach neue Bewegung oder Stillstand <=> gleichbleibende Pulsdauer.

Ist das verständlich?

Ja. verständlich wenn man es 3 Mal liest.

Das Problem ist, ich versuch mal es deutlich zu beschreiben:
Der Robot hat 6 Beine (Stabheuschrecke od ähnlich)
Jedes Bein hat 3 Servos
Servo 1 geht vor und zurück = x-Richtung
Servo 2 geht auf und ab = z-Richtung
Servo 3 geht nach innen oder aussen = y Richtung

Wenn jetzt Servo 1 von vorne nach hinten geht, wird der Körper nach vorne geschoben.
Dabei würde das Bein eine kreisförmige Bewegung machen, wenn nicht Servo 3 gleichzeitig
eine Bewegung nach innen machen würde. Diese Bewegung ist aber nicht linear sondern
abhängig von Pos. Servo 1. Wenn nun Servo 1 z.B 60° nach vorne gegangen ist, muss Servo 2
das Bein absenken. Servo 1 geht von z.B. 60°+ nach 0°, also Mittelstellung. In der gleichen Zeit
gleicht Servo 2 die Kreisbewegung durch Bewegung nach innen zu einer Geraden aus. Durch die Bewegung
von Servo 2 bekomme ich aber eine Höhenänderung, in diesem Fall nach oben; dies muss Servo 3 ausgleichen.
Auch hier ist die Bewegung nicht linear.

Mein erster Ansatz ist nun, dass immer 5 Beine am Boden sind. Das heisst, die Zeit vom Abheben eines Beines von 60°- zu Pos. 60°+
wäre dann 1/5 der Zeit der Rüchwärtsbewegung unter Last.

Weiterhin wäre noch unebenes Gelände zu berücksichtigen, damit ein Bein, das in Wirklichkeit keinen Bodenkontakt
hat, nicht sinnlos durch die Luft fährt. Hier sind dann wohl der Einsatz von Tasterm am Füß nötig.

Das ganze müsste man mal irgendwie grafisch darstellen, damit es wirklich verständlich wird.

Die Reihenfolge der Beine 1 - 4 - 2 - 5 - 3 - 6 od. so. Auf jeder Seite sollen immer 2 Beine am Boden sein.

Was sagst Du, ist das machbar?

Gruß

Jürgen