robin
29.09.2008, 20:03
Hi,
Ich bin gerade dabei einen Servo Controller zu Programmieren. Für einen 4-Beinigen Roboter.
Ich verwende AVR Studio und einen Mega 168 mit 20Mhz also sollte ich genug rechenleistung haben.
Er soll 12 Servos in 4 ms Steuern, was auch nicht weiter schwer ist.
In den restlichen 16 ms soll er berechnungen vornehmen, die etwas komplizierten sind:
Servo(1) = arctan(128-(x/y))
Servo(2) = arctan(Wurzel((128-x)²+y²))-4/(200-2)+180-y/2)
Servo(3) = 2*arcsin((1/2*wurzel((128-x)²+y²))/10)
x,y und z sind dabei die bewegungen, die der Körper des Roboters macht. Sie werden vom Hauptcontroller übertragen.
Meine Frage ist jetzt, wie kann ich am einfachsten einen arctan bzw arcsin und Wurzel rechnen?
Dafür gibts es ja keine vorgefertigten befehle.
Für arctan und arcsin werde ich warscheinlich eine Tabelle nehmen müssen. Und bei der Wurzel? über ein Näherungsverfahren?
ich hoffe ihr habt bessere Vorschläge, oder vlt auch einfachere.
ps. meine assembler kenntnisse sind nicht die besten (bin z.Z. bei timern und interupts) sollte aber nicht so wichtig sein, weil es sich nur um rechnungen handelt.
mfg robin
Ich bin gerade dabei einen Servo Controller zu Programmieren. Für einen 4-Beinigen Roboter.
Ich verwende AVR Studio und einen Mega 168 mit 20Mhz also sollte ich genug rechenleistung haben.
Er soll 12 Servos in 4 ms Steuern, was auch nicht weiter schwer ist.
In den restlichen 16 ms soll er berechnungen vornehmen, die etwas komplizierten sind:
Servo(1) = arctan(128-(x/y))
Servo(2) = arctan(Wurzel((128-x)²+y²))-4/(200-2)+180-y/2)
Servo(3) = 2*arcsin((1/2*wurzel((128-x)²+y²))/10)
x,y und z sind dabei die bewegungen, die der Körper des Roboters macht. Sie werden vom Hauptcontroller übertragen.
Meine Frage ist jetzt, wie kann ich am einfachsten einen arctan bzw arcsin und Wurzel rechnen?
Dafür gibts es ja keine vorgefertigten befehle.
Für arctan und arcsin werde ich warscheinlich eine Tabelle nehmen müssen. Und bei der Wurzel? über ein Näherungsverfahren?
ich hoffe ihr habt bessere Vorschläge, oder vlt auch einfachere.
ps. meine assembler kenntnisse sind nicht die besten (bin z.Z. bei timern und interupts) sollte aber nicht so wichtig sein, weil es sich nur um rechnungen handelt.
mfg robin