Linearisierung von Spinnenbeinen
Nachdem sich unser Quizforum gerade mit der Aufgabe der kreisbogenlinearisierung beschäfigt hat. Kam für die Frage nach der Linearisierung von Spinnenbeinen wieder auf. Hier kurz nochmal die Aufgabenstellung:
Wir könnten dem ganzen auch noch einen wirklich interessanten Aspekt hinzufügen, da diese Aufgabe nun ziemlich weit gelöst ist.
Jeder von euch kennt die klassischen Spinnenbeine, welche hier bei etlichen Hexapods verwendet werden. Ich meine jetzt explizit diese mit 3DOF.
Diese werden in der Hüfte gedreht (meist zwischen 0° und 90° Winkel Tau nicht eingezeichnet) die Fussspitze beschreibt dabei einen Kreisbogen. Um einen Hexapod jedoch ohne Wackeln gerade aus laufen zu lassen MUSS die Spitze eine gerade beschreiben. Die Strecke s. Dabei kann sich das bein maximal zwischen rmin (gleichbedeutend mit der Strecke a) und rmax bewegen.
Bild hier
Es gilt also den Kreisbogen mittels der Glenke in Schulter und Knie auf eine Gerade umzurechnen.
Meine neue Aufgabe ist nun:
"Wie muss eine Funktion aussehen, die aus der Winkeländerung in der Hüfte die Winkel für Schulter (Beta) und Knie (Alpha) ermittelt? Dabei sind die Strecke zwischen Hüfte und Knie (Also zwischen Winkel Beta und Alpha) mit (B) bezeichnet), die Strecke zwischen Knie und Fusspitze (zwischen Winkel Alpha und Gamma mit (C) bezeichnet) als konstant anzunehmen. Der Abstand von Hüftgelenk bis zur linearisierten Geraden (sei a) ist ebenfalls fest. Die Höhe klein b ist für die Winkel Alpha und Beta ebenfalls entscheident. Der Winkel Gamma muss nicht berücksichtigt werden
Bild hier
Bild hier
Die Bilder sind aus unserer Wiki mit dem Thema Spinnenbeine
Kurz nochmal alle Bezeichnungen im Überblick:
Winkel Tau = Drehung in der Hüfte (keine auf und ab bewegungn)
Winkel Beta = Heben und senken des Schenkels und drehen im Gelenk Schulter
Winkel Alpha = Bewegen des Fusses und drehen im Knie.
Die Länge des Schenkels wird mit (B) bezeichnet
Die Länge des Fusses wird mit (C) bezeichnet
Der Abstand von Hüftgelenk bis Fussspitze mit (a) bzw. rmin
Die Systemhöhe des Roboter mit (b)
Für eine saubere Lösung wären alle Spinnenroboterbastler auf ewig dankbar.
Und gibt es vielleicht eine Holy Number für das Verhältnis B, C und a und b.
PS: Im Prinzip ist ein Algorithmus gesucht, der aus dem Winkel des Servos in der Hüfte die Positionen für Schulter und Knie errechnet.
Allerdings würde ich gerne den Mathematischen Ansatz vor dem Code lösen.
PPS: Für alle die sich unter den Längen (B) und (C) nichts vorstellen können hier ein paar Zahlenbeispiele meines Roboters:
(B) = 72mm
(C) = 110mm
(a) ~ 70mm ~ rmin
(b) ~ 60mm
Die werte A und B sind exakt die werte a und b sind eher grob.
Liste der Anhänge anzeigen (Anzahl: 1)
Hatte mich früher mal mit dem Thema beschäftigt hab auch noch ein Excel Sheet was ich damals irgendwoher bekommen hatte. Vielleicht hilft euch das ja schon mal weiter.
mfg
Liste der Anhänge anzeigen (Anzahl: 4)
Hi,
ich habe das folgende Ergebnis bekommen:
MfG Jeffrey
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hab grad mal versucht das in Paint zu verdeutlichen.
Schöne Weihnachten Jeffrey
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hier die Matlab Files. Die Berechnung dauert allerdings einige Zeit.
MfG Jeffrey
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Aaaaaalso, ich brauche Hilfe:
Nach langem Formeln-Umstellen bin ich zu der Erkenntnis gelangt, dass nach dem Sinus-Satz alpha=90-90+beta-beta+alpha ist.
Genau :-]
Gekürzt also: alpha ist gleich alpha. Na immerhin:
Ich habe mich nicht verrechnet, und habe bewiesen, dass das so ist.
Na toll.
Aber im Ernst.
Eigendlich ist die Aufgabe gelöst :-)
cos(tau)=a/(bx+cx) mit bx=sin(beta)*b
cos(tau)=a/(sin(beta)*b)+cx mit cx=(sin(gamma)*c)
cos(tau)=a/(sin(beta)*b)+(sin(gamma)*c)
Mein Problem ist nur:
Da das Servo für den Unterarm am Oberarm befestigt ist, ist leider Gamma durch eine Funktion mit Alpha UND! Beta verknüpft.
Das ist kein lineares Gleichungssystem mehr. Ich finde leider keinen Ansatz und bitte daher hier um Hilfe.
Siehe die bisherigen Zeichnungen und meinen Anhang
Grüße
Marvin_MAV
(gute Nacht)
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich versuche mich auch mal daran
und hoffe dass ich nicht zu weit neben dem ziel liege
(hab aber noch keinen Roboter außer dem Asuro gebaut, deshalb urteilt nicht zu hart über mich falls meine Überlegungen mist sind- Mangel an Praxis)
Grundüberlegung:
Bekannt ist
• 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)
Über Phythagoras lässt sich Sc berechen, die Strecke von der Schulter bis zum Arm am Boden. Sc= Wurzel (Höhe^2+Spur^2)
Für den Winkel Sbeta gilt im rechtwinkligen Dreieck tan (Sbeta)= Höhe / Spur
Für das Dreieck aus Oberarm, Unterarm und SC kann man beta1 über den Kosinussatz berechen.
Cos (beta1)= - (Oc^2-Uc^2-Sc^2)/ ( 2*Uc*Sc)
Da Ubeta sich aus Sbeta uns beta1 zusammen setzt kann man nun alle Winkel in den Armdreiecken berechen.
Ich habe dazu mal ein kleines Excell-Blatt erstellt.
In den Tabellenfeldern RUHE sind einige Grundwerte hinterlegt
Unter Winkel Tau bitte die Start und Endpunkte sowie den Schritt wählen und dann „Knopfdrücken“ Voilá!
Bei meinen Beispielzahlen war Tau (der Winkel der Schuler) nur bis 39° möglich.
Gruß
downad
Liste der Anhänge anzeigen (Anzahl: 1)
Hübsche Formel *g* Jeder µC wird eine Freude haben.
Habt ihr berücksichtigt, daß z.B für das linke vordere Bein in einer Rechtskurve die Sache folgendermaßen aussieht ?