Hi,

Die postionen sind ein durchlauf der x-Achse von 10 bis -10, beim vorlauf ist z konstant -10 und beim rücklauf steigt z linear auf -5 und dann fällt es wieder auf -10. y ist konstant 8. die figur ist ein gleichschenkliges Dreieck, auf dem der Fußpunkt entlang läuft.

Die Winkel habe ich entsprechend der obigen Figur vorab von Excel berechnen lassen und dann einfach in kommagetrennter schreibweise speichern lassen. STRG+C, STRG+V fertig war die erste Bewegung.
Die funktionen die Excel ausführt muss ich jetzt noch in den Atmega implementieren.

Habt ihr Vorschläge, wie man möglichst schnell acos(), asin(), atan() berechnen lassen kann? oder sollte man das am besten als Tabelle hinterlegen?
sin() ließe sich einfach als Tabelle machen. 1-180° entsprechen den einträgen 1-180 eines Arrays. Bei asin() ist das problem, dass die Eingabe werte zwischen -1 und 1 liegen.

Mein µController ist jetzt alle 10ms damit beschäftigt 9 Servosignale zu erzeugen. (Mehr als 14 waren bei einer 8µs Auflösung nicht möglich, daher werden immer 9 Signale im 10ms Wechsel erzeugt). In der Zeit ist er fast völlig vom Interrupt0 ausgelastet, sonst ist der Interrupt0 aus. Also müssen in den 2*7,5ms zwischen der jeweiligen impulserzeugung je neun Winkel berechnet werden. Und in Vorraussicht, muss ich auch noch genug Zeit haben, 18 Bytes via I²C zu übertragen, was rechnerisch ungefähr 1,5ms dauert bei 100kbit/s.
Das heißt die Berechnung muss schnell sein. Die Koordinaten werden jeweils mit Ursprung im Schultergelelnk übermittelt. Die Berechnung jedes artgleichen Winkels (Schulter/Oberarm/Unterarm) lässt sich also auf je 6 Winkel anwenden. Die Umrechnung auf die Absoluten Koordinaten mit Ursprung im Schwerpunkt des Roboters macht der gleiche µC, der auch die Bewegungsabläufe steuert.
Ich denke da werde ich einen nehmen, der Zwei I²C kanäle hat. Einer exklusiv für die Beinkoordinaten, damit der garantiert nicht blockiert, denn es ist der wichtigste Datenweg.

mfg WarChild