ich habe ein bisschen 'rumgerechnet und hänge das Ergebnis hier an. Mit der Methode, die ich Dir vorschlage, kannst Du erstmal anfangen. Schwieriger machen kann man's dann nachher immer noch.
bin deine Rechung durchgegangen und muss sagen das sie im großen und ganzen doch ein guter einstig in die problematik ist. musst mir zwar erst ein paar Skizzen machen um sie zu verstehen, aber dann ging alles ganz einfach. Werde mir jetzt ein klein "Probe-Arm" aus drei Servos bauen um diese mal in verbindung mit einen Mikrokontroler auszuprobieren.
Wenn das so Funktioniert wie ich mir das vorstelle werde ich versuch deine gleichungen zu erweiter so das ich annährend zu mein arm komme.
Ich befürchte nur das der Torso des robos wegen den fahrtwegen der arme noch ein problem werden könnte, sprichh der Arm fährt gegen ihn.
Nochmals danke für deine hilf werde damit weiter arbeiten.
freut mich, dass Du mit der Rechnerei klargekommen bist. Der Weg, den Dir vorgenommen hast, nämlich auf dieser Grundlage erst einmal mit einem einfachen Modell anzufangen, ist goldrichtig. Neben der Mathematik wirst Du noch auf ganz andere Probleme stossen, z.B. Schwierigkeiten beim Auslesen der Winkelmesser usw. ... ich erlebe gerade Ähnliches mit der Winkelmessung an den Rädern meines Fahrroboters.
In der Zwischenzeit rechne ich noch ein bisschen weiter. Ich glaube ich habe eine ganz gute Methode gefunden, um auch Arme mit beliebig vielen Teilarmen zu beschreiben. Über das Vermeiden von Kollisionen habe ich mir noch keine weiteren Gedanken gemacht. Es fängt wahrscheinlich damit an, dass der Knickwinkel einen Maximalwert nicht überschreiten darf. Das lässt sich dann noch verfeinern, indem Du den Maximalwert vom Drehwinkel des Gesamtarms abhängig machst.
Sag' Bescheid, wenn Du mit der Mathematik weitermachen willst.
ich würde über den ganz normale schulmathematik daran gehen....
da die Gelenke in den Armen unbeweglich sind (sollen sie das sein??) ist es ein Problem im 2D, da ich sqrt(x^2+y^2) als neue Achse nehmen kann. der Drehwinkel im ersten Drehgelenk wird sehr einfach berechnet:
gegeben sind die Längen der Arme (a und b) und ein Punkt P=(x,y,z).
der Koordinatenursprung liegt im Punkt B, also im ersten Achsengelenk.
der Winkel des ersten Drehgelenks wird über die Beziehung w=arctan(x/y) errechnet
Strecke c ist über c=sqrt(x^2+y^2+z^2) zu berechnen.
dadurch hat man jetzt nur noch ein 2-dimensionales Problem!
durch den Cosiussatz ergibt sich direkt (wie schon schön im PDF-file gezeigt): c=arccos((c^2-a^2-b^2)/(2*a*b))
den letzten winkel e berechnet man über den Hilfswinkel b:
na ja, "die Formel" ist es nicht gerade. Ich habe das, was ich für den zweiteiligen Arm angefangen hatte, auf den allgemeinen Fall ausgedehnt. Herausgekommen ist ein Algorithmus, mit dem man die Positionen aller Punkte des Arms iterativ berechnen kann. - Den Rest musst du selber machen.
Das Problem ist übrigens dasselbe, das bei der Animation virtueller Lebewesen gelöst werden muss: Die Bewegungen der Gliedmassen folgt denselben Gesetzen wie Dein Roboterarm. Da findest Du wahrscheinlich reichlich Literatur und auch elegantere Lösungen.
Ciao,
mare_crisium
Edit: Attachment gelöscht wegen Upload-Quota. Bei Interesse pn schicken.
Lesezeichen