also das in eine Formel zu packen hatte ich versucht aber das war mir zu unübersichtlich. nun sind es 11 schritte zum Ziel.

Bekannt:
• die Länge des Oberarms (Oc)
• die Länge des Unterarms (Uc)
• die Höhe in der sich der Roboter bewegen soll (h)
• die Spurbreite = wie weit außerhalb des Roboters setzen die Füße auf (Spur)

Drehwinkel tau in der Schulter –Vorwärtsbewegung!

aus dem Drehwinkel tau ergibt sich die Länge Sa (Abstand Schulter - Bodenpunkt des Beines)
cos (Tau) = spur / Sa
Sa = spur / cos (Tau) [1]
Die Hypothenus des Substitutionsdreiecks (Sa, Höhe, Sc) ergibt
Sc = wurzel ( Sa^2 + h^2) [2]
Der Winkel Sbeta Cos (Sbeta) = Höhe/Sc
Sbeta= arccos((Höhe/Sc) [3]
und Cos (beta1)= - (Oc^2-Uc^2-Sc^2)/ ( 2*Uc*Sc)
beta1=arccos(Oc^2-Uc^2-Sc^2)/ ( 2*Uc*Sc) [4]

In Armdreieck (Oberarm, Unterarm,Sc) ist Ubeta berechenbar
Ubeta = Sbeta+beta1 [5]
Mit Ubeta kann einen Winkel im Ellenbogen Ualpha berechen
Ualpha = 90 – Ubeta [6]

Über die Strecke Uc und den Winkel Ubeta lässt sich Ua berechen Cos (Ubeta) = Ua/Uc
Ua = cos(Ubeta) * Uc [7]
Damit ist Ob gegeben – da Sa = Ob + Ua ist
Ob = Sa- Ua [8]

Nun kann man Obeta berechen; sin(Obeta) = Ob/Oc]
Obeta= arcsin(Ob/Oc) [9]
Folglich ist der Ellbogenwinkel
Ellenbogenwinkel= Obeta+Ualpha [10]

Und der Schulterwinkel-Oberarm
Oalpha = 90 – Obeta [11]
Voilá alle Winkel sind aus den gegeben Werten (
Uc, Oc sowie h und spur ) berechnet.

servo1, Schulter: Tau muss man vorgeben: läuft von -tau bis +tau oder wie auch immer
servo2, Schulter-Oberarm:Oalpha = 90 – Obeta
servo3, Ellenbogen:Ellenbogenwinkel= Obeta+Ualpha

ich würde nun am Anfang eine Initialisierung auf dem µC laufen lassen und die 3 Werte in einer Tabelle ablegen.

gruß

downad