Ahh.. ja, das ist ein bischen triky...

Also: Die Servopulse reichen von 0 bis 7000 prozessorclocks - (ertrempunkte..ich hab das vorher ausgemessen) und übergebe so die Servopositionen.

SCHRITT1: (Hüfte)
Die Hip(Hüfte)-Variable zählt hoch, das Bein bewegt sich nach vorne.
Danach nehme ich diesen Wert, und schicke ihn in in eine quadratische Funktion. In meinem fall ...

//---FUNKTION Quad_X----
int Quad_X (int x)
{
return (100*(((x/100)*(x/100)*-0.042)+((x/100)*3)));
//Eine Quatratische Funktion errechnet den Stellgrad für den Knee-Servo.
}
//---FUNKTION Quad_X abgeschlossen---

was f(x)=x²-0,042+3 entspricht.

Die divisionen durch 100 mache ich, damit die Berechnung im Byte-bereich gemacht werden kann, das ist schneller und genau genug.

SCHRITT2: (Knie)
Das Ergebnis geht dann an den Knee-Servo. Bei 3500 wird der scheitel erreicht (höchster punkt), bei 0 und 7000 die tiefsten punkte (bodenkontakt).

SCHRITT3Fuß)
Um den Fuß senkrecht zu halten ziehe ich immer 3500 vom Knee-Servo-wert ab. Das ist dann zb. am höchsten punkt (Knee=3500) : 3500-3500=0=Foot-Servo. Der Fuß steht 90° zum Knee.

Bei (Knee=0):
3500-0=3500=FootServo. Der Fuß steht senkrecht, also 0°zum Knee.


Ganz linear also

Der Roboter ist zzt. ca. 2Kg schwer, mehr solltens mit den Conrad-Servos auch nicht werden.