Nun funktioniert auch die rotatorische Bewegung. Es können also entweder Koordinaten für einen Drehpunkt und ein Winkel wie weit drehen übergeben werden oder einfach ein Richtungsvektor mit entsprechendem Winkel.
Daraus errechnet sich der Phoenix selbst alle notwendigen Winkel für jedes Bein und jeden Servo. Alles passt in 800 Zeilen code.

Wie schon anderer Stelle gepostet hier noch kurz wiederholt, der Ablauf ist in etwas wie folgt:
1) Vorgabe von Systemhöhe und eben entweder Koordinaten oder Richtung. Wenn nur eine Richtung vorgegeben wird dann dreht sich der Roboter nicht sondern läuft gegebenfalls schräg nach vorn/hinten/etc.
2) Berechnen einer Achse auf der sich jeder Fuss bewegen muss um entsprechende Bewegung auszuführen.
3) Berechnen der dafür notwendigen Gelenkwinkel
4) Übergeben der Gelenkwinkel an die Servossteuerung und umrechnung in Impulse.

Das ganze läuft zum Teil in SPIN ab (für den Propeller) oder für die mathematischen Funktionen in Assembler. Auch die reine Servosteuerung (I/O-Line Steuerung) läuft in Assembler, da diese beiden Funktionsteile möglichst schnell laufen sollten. So kann alle 20ms ein Singal an die Servos gesendet werden (entspricht 50Hz).

Dieser Erfolg wird leider durch einen kleinen Umstand getrübt. Die Beine sind zu lang und erzeugen unschöne Hebelbewegungen, so dass der Roboter trotzdem wärend des Laufens noch etwas wackelt und scheinbar instabiel ist. Wenn ich ein absolut verwindungssteifes Chassie hätte, wurde sich da wohl nichts rühren (müsste dann wohl aus Aluminium sein). Auch ist in den Servohörnern selbst zuviel Spiel als, dass es zu 100% präzise wird.

Trotzdem ist mit diesem Programm jede Bewegung im Raum möglich und damit ein großer Teil dieses Roboters geschafft. Wenn ich eine ordentliche Kamera finde mit der man ein gutes Video erzeugen kann, dann gibts auch was zu sehen.

Als nächstes werd ich mich dran machen die Pheripheri (LCD, LED, Sensoren, Kamera etc) nach und nach zu implementiern.