PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linearisierung von Spinnenbeinen



HannoHupmann
23.12.2006, 09:41
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.

https://www.roboternetz.de/wissen/images/c/c4/Podtopc.jpg



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


https://www.roboternetz.de/wissen/images/c/cc/Podvec2.jpg
https://www.roboternetz.de/wissen/images/d/df/Beine65.jpg
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.

jeffrey
23.12.2006, 14:18
Hi,
soll das Bein während der Bewegung auf der konstanten Höhe b bleiben, oder darf sich diese ändern?
MfG Jeffrey

PicNick
23.12.2006, 15:20
@jeffrey: meinst du den Körper ? Der sollte schon in der gleichen Höhe bleiben. Oder aber alle Beine sind sich über die Höhe einig. Das wäre, glaub ich, schon erlaubt.
(macht die Sache aber auch nicht einfacher)

tristate
23.12.2006, 16:38
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

Marvin_MAV
23.12.2006, 18:25
Hallo,

ich bin zwar neu hier, aber ich hoffe mein Beitrag motiviert zum Weitermachen:

Also wenn ich die Bezeichnungen aus den Zeichnungen übernehme kommt da bei mir folgendes raus: ("w" ist der Abstand des Ausetzpunktes des Fusses vom Körper (in der Frontalansicht gesehen))

sin(tau)=w/((sin(180-gamma)xC)+(sin)180-beta)xB)

leider sind da noch ein paar "Umstellungen" erforderlich. Nutzen kann man das so wohl noch nicht. Denn mit zwei beliebigen Werten ist wohl schwer zu programmieren. (gamma und beta können die verschiedensten Werte annehmen ohne dass die Formel nicht mehr stimmt) daher müßte man diese Formel überarbeiten, so dass gamma oder beta durch das jeweils andere ausgedrückt wird.

Dazu bräuchte man noch mindestens eine linear unabhängige Formel die z.B. gamma mit betta ersetzt.

z.B.
a=(sin(180-gamma)xC)+(sin(180-beta)xB)

naja, oder so ähnlich.

Grüße
Marvin

jeffrey
23.12.2006, 19:44
Hi,
ich habe das folgende Ergebnis bekommen:
MfG Jeffrey

Marvin_MAV
24.12.2006, 13:03
Hallo Jeffrey,

hast Du das mit meinen Formeln gemacht?
Denn dann hätten wir ja schon das Ergebnis das wir gesucht haben. Eureka!!
"a" soll ja eine Gerade bilden (relativ zum Körper des Robots).
"b" war die Höhe des Robots. Die sollte konstant bleiben, und das tut sie wohl.
Alpha und Beta beschreiben in etwa eine sinusförmige (in der dritten Raumachse geneigte) Kurve. Das war zu erwarten.
Sieht so aus als wäre das alles richtig.

Da ich noch keinen Roboter habe, kann ich das leider nicht überprüfen.
Aber es sieht doch vielversprechend aus.

@Jeffrey:
mit welchem Programm hast Du die Grafiken erstellt?

Grüße
Marvin

Marvin_MAV
24.12.2006, 13:13
Nachtrag:

anhand der Grafiken ist mir aufgefallen, dass die Grafen im Bereich von grob Tau=40Grad bis 140Grad für Roboterspinnen-Beine nutzbare Ergebnisse liefern. Das sind ca. 100Grad nutzbare Bewegung der "Schulter". Wenn man das also mit Modellbau-Servos verwirklicht, liegt man wahrscheinlich automatisch in diesem Bereich. Sollte die Mechanik grössere Ausschläge zu lassen, müsste man Tau begrenzen, sonst knirscht und knackt es in den Beinen. Siehe "a" über Tau: zwischen 0Grad und ca 35Grad beschreibt a eine Fast rechteck-förmige Linie. Das wäre für die Beine sicher nicht gut wenn sie so über den Boden radieren würden.

Marvin

jeffrey
24.12.2006, 15:26
Hallo,
ich habe das ganze numerisch mit Matlab berechnet. Die Formeln dazu habe ich mir selbst hergeleitet, kann ich bei Interesse hier rein stellen, dann kann es überprüft werden.
Ich hab das ganze als nichtlineares Optimierungsproblem betrachtet, wobei für jeden Winkel die Parameter beta und alpha optimiert werden sollten, also insgesamt 262 Parameter, da Tau von 25 bis 155 ging.
Das Optimalitätskriterium war, J=min(Summe der Abstandsquadrate zur Solllinie a= 70).
Dabei musste beta zwischen 0 und 90° und alpha zwischen 0 und 180° liegen.
Als weiter Beschränkung wurde eingeführt, dass b= 60 sein muss.
Die Bilder habe ich auch direkt mit Matlab erstellt.
MfG Jeffrey

Marvin_MAV
24.12.2006, 16:34
Hallo Jeffrey,

ja bitte, stell die Formeln hier mal zur Verfügung. Ich würde gerne versuchen, Deinen Ansatz konkret nach zu vollziehen.

Grüße
(und ein frohes Fest)
Marvin

jeffrey
24.12.2006, 17:21
Hallo,
hab grad mal versucht das in Paint zu verdeutlichen.
Schöne Weihnachten Jeffrey

Marvin_MAV
25.12.2006, 16:40
Hallo Jeffrey,

danke für die Grafiken.
Vom Ergebnis her sieht das so ähnlich aus, wie mein Ansatz.
Mit Deiner Idee das Problem als Optimierungsaufgabe zu betrachten, warst Du natürlich auf dem richtigen Weg, wie man am Ergebnis sieht.

Mir scheint, um das für reale Steuerungen zu nutzen, ist wohl der einfachste Weg, eine Tabelle mit den Werten für Alpha und Beta in Abhängigkeit von Tau zu benutzen. Hier tatsächlich die kleinen Microcontroler rechnen zu lassen ist wohl viel zu zeitintensiv.

Daher die Bitte: Stell doch mal die Tabelle mit den ca. 250 Weten für Tau mit Alpha und Beta hier zur Verfügung. Dise Tabelle kann man dann ja nutzen um die Servos passend zu steuern.

Damit hättest Du Dir, den Ruhm bei den Roboterbauern auf ewig gesichert.
Wie HannoHupmann schrieb:
"Für eine saubere Lösung wären alle Spinnenroboterbastler auf ewig dankbar."

Na eben.

Grüße
Marvin_MAV

jeffrey
25.12.2006, 17:09
Hi,
ich denke auch, dass eine Lookup-Tabelle sinnvoll ist. Mein PC hat schon mehrere Minuten gebraucht, um das zu berechnen.
Allerdings sind die Werte natürlich von a, b, B und C abhängig. Deswegen ist diese Tabelle nur für die oben angegebenen Werte sinnvoll. Ich kann sie natürlich trotzdem gerne veröffentlichen.
Ich denke aber, nachdem die Formel und das Vorgehen jetzt da stehen, kann jeder diese Aufgabe ziemlich schnell und einfach für seine eigenen werte durch rechnen.
MfG Jeffrey

pongi
26.12.2006, 09:22
Stell doch das Matlab .m File zur Verfügung, dann kann jeder die Ausgangswerte nach belieben verändern, und selber die Ergebnisse sehen.

jeffrey
26.12.2006, 11:54
Hallo,
hier die Matlab Files. Die Berechnung dauert allerdings einige Zeit.
MfG Jeffrey

HannoHupmann
28.12.2006, 15:10
@Marvin MAV Leider ist die Lösung zwar Richtig und wirklich gut bzw. Brauchbar aber noch nicht dass, was ich gesucht oder gefordert habe.

Im Prinzip haben wieder nur eine Tabelle mit den Werten für jede Position, diesmal aber hochaufgelöst mit jedem Grad zwischen 0 und 180. Sehr fein und gut. Allerdings sobald wir die Beine etwas ändern also ein Bein etwas länger oder die Systemhöhe anders wollen müsste die gesammte Tabelle neu berechnet werden.
Soweit offline kein Problem, wenn es der Roboter aber selber rechnen muss irgendwie sehr umständlich.

Eine Funktion f(tau) = {a, b, C, D, alpha Beta} wäre irgendwie handlicher. Sprich wie bei einer Parabelfunktion gibt man einen x wert ein (in unserem Fall tau) und erhält den dazu passenden y (in unserem Fall, die Winkel für die Gelenke der Beine).
Diese Funktion kann wahrscheinlich recht einfach in einen Algorithmus gepackt werden und wird nicht viel Platz im Speicher eines Roboter brauchen. Die Konstanten a, b, C, D fliessen natürlich mit ein in die Funktion und werden ebenfalls im Algorithmus hinterlegt. Damit lässt sich z.B. die Systemhöhe wärend des laufens ändern ohne, dass alle Positionen neu berechnet werden müssen.
Auch ich diese Funktion dann für alle Spinnenroboter verwendbar, da nur jeder seine Werte für C und D hinterlegen muss.

Also die Lösung ist nahe aber leider noch nicht gefunden.

PS: jeffrey hat selbst gesagt, dass seine Tabelle nur für die oben genannten Werte (welche meinem Roboter entsprechen) sinnvoll sind aber noch nicht universal für jedes dreigelenkiges Bein.

Marvin_MAV
28.12.2006, 20:53
Hallo HannoHupmann,

also ich lehne mich jetzt mal aus dem Fenster, und behaupte:
Die Form des Grafen (alfa über tau) und (beta über tau) wird sich nicht ändern. Egal bei welchen Längen der einzelen Bein-Teile. Ohne es bisher genau agbeleitet zu haben bin ich der Meinung dass der Graf einfach nur ein Sinus ist, der in der dritten Raumebene geneigt ist (also um die X-achse des koordinatensystems, wie auf den Bildern von Jeffrey).
Der Kippwinkel wird mit dem Verhältnis der Bein-Längen zu tun haben.

:-)

Hoffe ich.

Aber ich mach mal an meinen Formeln weiter, dann kann man vieleicht auch während des Laufens die Körperhöhe "b" ändern.

Ich melde mich wieder.

Gruß
Marvin_MAV

Marvin_MAV
28.12.2006, 22:40
Hallo,

ich nochmal:

Also ich habe jetz einen halben Notizblock mit geometrischen Gleichungen gefüllt, und muß feststellen: Ich bin zu dumm.
Vieleicht fehlt mir auch nur die Übung; aber ich finde keine Lösung.
Mein bisheriger Ansatz (mit Anleihen aud Jeffreys Gleichungen war der:
Unterarmlänge (C) und Oberarmlänge (B) stehen in einem festen Verhätnis.
Die Winkel alpha und beta stehen durch das Verhältnis C/B im Zusammenhang mit tau und dem gewünschten Abstand des Aufsetzpunktes des Fußes (a) und zusammen mit der "Bodenfreiheit" .......

ups, ich komme da gerade auf eine neue Idee....

Bis später.

Marvin_MAV

Marvin_MAV
29.12.2006, 01:36
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)

HannoHupmann
29.12.2006, 11:49
@all, um alle zu beruhigen die jetzt in Verzeiflung ausbrechen, das Problem ist bei weitem nicht so trivial wie es auf den ersten Blick den anschein macht. Ich hab mich auch lange hingesetzt und darüber nachgedacht. Und bin ebenfalls zu der Erkenntnis gekommen, dass ich es nicht einfach lösen kann.

Jetzt hab ich das Problem an meinen Mathematikerfreund weiter gegeben, scheint aber wirklich höhere Semester Mathematik zu werden.

Vielleicht kann ich euch am nächstes Jahr eine Lösung präsentieren.
Hinzu kommt, dass bei den Meisten Robotern die Schulter und die Hüftgelenke nicht genau auf einer Achse liegen sondern eine kleine Strecke dazwischen ist.

@Marvin_MAV leider ist sie noch nicht gelöst. Da du die Winkel alpha und beta noch als funktion von Tau ausdrücken musst. Sprich in einer funktion die nur von f(tau) abhängt gibt es keine weiteren Variablen ausser Tau und konstanten in Form der Strecken a, b, C, D.

Als Beispiel, um es zu verdeutlichen, gebe ich für tau einen Winkel von 20° ein muss die Funktion zurückliefern: alpha = 40° beta = 30°. Wenn nun diese Winkel bei den Servos eingestellt werden, dann befindet sich die Fussspitze genau auf der gesuchten linearisierten Strecke s.

jeffrey
29.12.2006, 12:00
Hallo,
eigentlich sind doch für 2 unbekannte 2 gleichungen angegeben, also sollte es sich lösen lassen, ob das allerdings schnell auf einem µc zu rechnen ist, bin ih mir nicht so sicher.

aist=sin(tau)*(sin(alpha-90+beta)*C+cos(beta)*B)
bist= cos(alpha-90+beta)*C-sin(beta)*B

Ich hab mal angefangen einige Sachen umzuformen, allerdings kommen da sehr komplizierte Sachen raus.
für alpha:

alpha=arcos((b+sin(beta))*B/C)+pi/2-beta

das in die erste gleichung eingesetzt, dann kommt raus:

0=sin(tau)*(sin(arcos((b+sin(beta)*B)/C))*C+cos(beta)*B)-a

Da kommt nur noch beta und tau vor, gibt also eine direkte abhängigkeit der beiden Variablen an.
Das sollte man mit Newton lösen können, wenn man will, ich denke aber nicht, dass das auf einem µc online berechnet werden kann.

MfG Jeffrey

jeffrey
29.12.2006, 12:24
So mir fällt gerade nochmal was ein, weiß0 aber nicht genau, ob das funktioniert, ein kompromiss wäre doch, dass man sagt man ändert b nur in einem bestimmten bereich. dann könnte man beta als wert abspeichern, und alpha online berechnen, natürlich ändert sich dadurch die gerade, aber ich weiß nicht wie stak sich das auswirkt. werde es mal testen.
mfg jeffrey

Downad
29.12.2006, 13:21
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

HannoHupmann
29.12.2006, 13:55
@all, nochmal es wird kein Tabellenwerk mehr gesucht. Diese Aufgabe wurde bereits hinreichend gelöst. Danke hier an alle die sich die Mühe gemacht haben. Ist immerhin auch eine Menge Arbeit.
Aber es ist umständlich und kompliziert jedesmal die ganze Tabelle in den µC zu packen für jeden Winkel.
Ich suche noch immer die schöne Formel für die online Berechnung auf dem µC für den Winkel. Ganz ohne Tabelle.
Das Problem an den Tabellen ist immer gleich, sie sind nur für EINE mögliche Beinlänge gültig und nur für EINE höhe. Soll aber die Höhe oder die Spur wärend des Laufens verändert werden (Hindernisse, Platzangebot etc) dann ist es wieder notwendig eine komplett neue Tabelle zu übertragen.

Streng genommen sind also alle Längen mehr oder minder auch Variablen, welch sich eventuell ändern, z.B. die Höhe.

Abgesehen davon kann die Formel dann für jedes Spinnenbein verwendet werden.

Downad
29.12.2006, 18:20
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

HannoHupmann
29.12.2006, 18:30
hab gerade nur grob draufgeschaut und noch nicht alle Gleichungen durchgeschaut. Aber ich sehe bei deiner letzten Auflösung, dass der Winkel Oalpha von obeta abhängt und und der nächste winkel von obeta und Ualpha.
Das sind aber noch immer nicht die Abhängigkeiten von Tau. Nur Tau soll verändert werden alle anderen Winkel aus der Verändung von Tau resultieren.

Dabei sind die Längen (Spuhr, Abstände, Längen der Beine) ohne Werte anzunehmen.

Hobbes
30.12.2006, 09:37
Ich glaube das Problem werdet ihr nicht mehr so einfach Analytisch lösen können.

Eine einfache allgemeinere Lösungen sollten mit einer Gradientenmethode zB http://freespace.virgin.net/hugo.elias/models/m_ik2.htm möglich sein. Diese Berechnungen sind sicher in Echtzeit realisierbar. Allerdings haben Modellbauservos immer das Problem, dass die Geschwindigkeit nicht explizit gesetzt werden kann und sie kein Positionsfeedback geben (was die Bewegung mMn immer etwas ruckeliger als nötig macht)

Für komplexe Bewegungen muss man sich höchst wahrscheinlich in Inverse Kinematik einlesen. Das ich auch nicht so schwer, aber eventuell übersteigt es normale Mittelschulmathematik (und bringt den Mikrocontroller eventuell in die Knie)

HannoHupmann
30.12.2006, 10:19
@Hobbes, da geb ich dir recht rein Analytisch werden wir über die Tabellenform nicht hinaus kommen.
Ob es mit der Gradientenmethode oder mit Euklidischen Vektoren lösbar ist wissen wir noch nicht.
Genauso muss es erst ausprobiert werden ob ein µC sowas dann noch online rechnen kann oder es eben doch auf ein eingespeichertes Tabellenwerk hinaus läuft.

Die Frage des Positionsfeedbacks stellt sich erst einmal gar nicht, denn die meisten unserer Spinnenroboter fahren mit dem Servo die Position einfach an und vertrauen darauf, dass diese danach auch erreicht wird. Hindernisse und Stolperschwellen werden hier erst einmal komplett weggelassen.

NRicola
04.01.2007, 09:21
Hallo,

ich denke mal an meine reichlichen Verspätungen dürften sich die meisten schon gewöhnt haben..
Außerdem war ich mal etwas faul und habe mir vor allem die bisherigen mathematischen Leistungen nicht sooooo genau angeguckt. Na das haben wir ja gerne: schreiben wollen, aber nicht lesen können... :)

Aber erstmal vorweg: huch, ich dachte sowas gibt's schon, deshalb bin ich immer schmunzelnd über eine solche (einfache?) Sache drüber hinweggegangen. Da bitte ich doch glattweg auch mal um Entschuldigung für diese Abwertung. Zwar habe auch ich zu Beginn einen kleinen Denkfehler begangen, quasi einen völlig falschen Weg eingeschlagen. Aber so im Nachhinein kann man es wahrlich als sehr einfach bezeichnen. Natürlich kann auch alles was ich hier jetzt vorstelle völliger Humbug sein. In dem Fall möchte ich diesen vorhergehenden Satz nie gesagt haben... ;)

Da fang ich doch einfach mal an:

Die Bezeichnungen habe ich mal frecherweise um zwei Größen erweitert: eine Strecke D und der Winkel <delta>, der damit und mit dem Boden eingeschlossen wird.

http://www.navierstokes.de/RN/hexabein_schema.jpg

Da kann man ganz einfach erstmal behaupten (auch wenn ich hier womöglisch die eine oder andere Beziehung wiederhole):

http://www.navierstokes.de/RN/hexabein_r.jpg

und auch der Winkel <delta> sowie die Strecke D lassen sich ziemlich einfach bestimmen:

http://www.navierstokes.de/RN/hexabein_delta.jpg

Des weiteren kann man von dem guten alten Kosinussatz Gebrauch machen:

http://www.navierstokes.de/RN/hexabein_beta.jpg

Und der andere nennt sich ähnlich: Sinussatz:

http://www.navierstokes.de/RN/hexabein_gamma.jpg

Und da ja die Summe aller Innenwinkel eines Dreiecks immer 180° sein muss, erhält man ganz schnell <alpha>:

http://www.navierstokes.de/RN/hexabein_alpha.jpg

Das baut zwar alles aufeinander auf, aber wer lustig ist, kann auch alles ineinander einsetzen und dann alles ausschließlich von den Gegebenheiten abhängig machen.
Leider habe ich keine passende Methode um das alles zu überprüfen, aber ich habe mal ein wenig in Excel rumgespielt und da sah alles doch zumindest im Ansatz recht vertrauenserweckend aus.
Aber sollte jemand noch irgendeine Kniffelichkeit oder einen Fehler finden, würde ich mich über Korrektur freilich freuen! ;)
Grüß
NRicola

HannoHupmann
04.01.2007, 12:03
@NRicola leider nur die halbe Arbeit und wieder nur das, was wir hier schon 3-4 mal präsentiert bekommen haben.

Genau das alles in Abhängigkeit zueinander setzten so dass am ende nur noch eine Abhängigkeit von Drehwinkel Tau in der Hüfte. Das hab bisher noch keiner präsentiert als formel. Wohl aber als Tabelle.

Die ganzen Trigonometrischen Sachen sind wohl für viele einfach zu lösen.

PicNick
04.01.2007, 13:01
..bisher noch keiner präsentiert als formel..

Hab ich schon zusammengepfriemelt, muß ich suchen. Ich hab nur damals wieder aufgehört, weil ja das Ganze erst Sinn macht, wenn auch die Haxen in der Kurve zu berechnen kann. Und da kommen ja noch ein paar Details dazu. *uiuiui*

NRicola
04.01.2007, 14:38
Hmm, da muss ich gestehen, da komm ich nicht mit. Da stehen doch jetzt nur noch gegebene Größen drin. Analytischer geht's doch gar nicht mehr.

Oder willst du eine Zeitfunktion, die die Winkel durchfahren sollen?
Grüß
NRicola

ädit:

Eine Funktion f(tau) = {a, b, C, D, alpha Beta} wäre irgendwie handlicher. Sprich wie bei einer Parabelfunktion gibt man einen x wert ein (in unserem Fall tau) und erhält den dazu passenden y (in unserem Fall, die Winkel für die Gelenke der Beine)

Ich gebe ein <tau> vor und bekomme durch o.g. Gleichungen ein neues <alpha>, <beta>, <gamma>, <delta>

pongi
04.01.2007, 15:49
Ich verstehe hier eines nicht: braucht ihr eine Gleichung, die über tau alle andere Parameter angibt? Oder braucht ihr ein Gleichungssystem, wo jede Gleichung von tau abhängt, und so die Parameter gibt?
Ersteres ist schwer zu realisieren, da die verschiedenen Parameter nicht nur von tau, sondern auch voneinander abhängig sind.
Die zweite Methode ist anhand dieser angegebenen Gleichungen schon einfacher. Wenn aber diese Methode gewählt werden soll, verstehe ich nicht ganz, warum die obenstehenden Gleichungen nicht einzeln in einem uC verarbeitet werden können (ausser dass die meisten uC-s sowieso eine Tabelle für cos und sin brauchen werden, oder halt eine Taylor-Reihenentwicklung).
In diesem Fall besteht die Aufgabe nurmehr darin, diese Gleichungen in ein Mathematikprogramm einzufügen, und dann dort zu vereinfachen, damit die gewünschten Abhängigkeiten enstehen.

HannoHupmann
04.01.2007, 16:04
Also die grundsätzliche Frage ist eigentlich ganz einfach bzw. die Formel die ich suche:

Ich gebe ein Tau vor und will daraus Alpha und Beta (welche natürlich von den Längen der Beinteile abhängen) berechnet haben.

Mehr ist es gar nicht.
@NRicola mhm wenn du die Lösung hast, dann sehe ich sie nicht. Bzw. bin zu dumm sie zu erkennen.

Der Gedanke dahinter ist, jeder soll später in die Formel einfach seine Längen für die Beinteile einsetzten und dann eine Formel für tau bekommen die ihm daraus Alpha und Beta berechnet.

Ob sich die Formel danach im µC verarbeiten lässt oder nicht ich erst mal nicht relevant.

NRicola
04.01.2007, 16:46
Hallo,

Oben stehen die Formeln mit den "Zwischenvariablen" <gamma>, <delta>, r und D. Das sieht wie ich finde am übersichtlichsten aus - man macht bei der Umsetzung in die Programmiersprache da dann weniger Fehler.


...wer lustig ist, kann auch alles ineinander einsetzen und dann alles ausschließlich von den Gegebenheiten abhängig machen.

Nagut, da werde ich mal lustig sein. Ich denke mal <beta> und <alpha> sind deine wichtigen Größen. Den Rest wirst du sicherlich vorgeben. Deshalb also hier mal die aufgelösten Gleichungen:

http://www.navierstokes.de/RN/hexabein_umgestellt.jpg

Das sind nun also die direktesten Formeln. Sicher kann man bei <alpha> im letzten Term noch dieses sin(arccos(..)) vereinfachen, wenn man noch irgendwo ein pi/2 reinsteckt, aber das will ich dann mal außen vor lassen.

Wie du siehst, steckt da nun wahrlich nix anderes mehr drin, als alles das, was man sich selbst vorgegeben hat.
Ich muss aber ehrlich sagen, dass ich die obige Lösung um einiges eleganter finde. ;)
Grüß
NRicola

Downad
04.01.2007, 17:01
ich glaube auch nicht, dass die rechnung in einem rutsch besser ist als das ausrechnen der werte über die einfachernen gleichungen.
da muss man doch dann nur die erbebnisse in die nächst einsetzen und weiter gehts......

@Nricola
dein Dreieck (D r b) ist das was ich als substiutionsdreieeck gemeint hatte.

und wie hast du die formeln so schön hinbekommen?


gruß
downad

PicNick
04.01.2007, 18:37
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 ?

NRicola
04.01.2007, 19:56
Hallo,

@Downad:

ja stimmt, wie gesagt, das habe ich mir leider alles gar nicht so genau und nachvollziehend durchgelesen. Aber jetzt so nach nochmaligem: ja, stand ja alles schonmal da.. :)

Die Formeln schreibe ich in TeX (mach da dann auch die passende Hintergrundfarbe rein) und fotografiere den Bildschirm beim pdf-(bzw. ps-)Begucken. Schön zurechtgeschnitten das Bild, auf nem bissel Webspace hochgeladen und drauf verwiesen.

@PicNick:

das würde sich dann eigentlich alles in der ersten Formel, also der für r widerspiegeln, die dann bei so komplexen Mustern nicht mehr ganz so einfach aussieht, wie dieser einfache Bruch dort oben. Mal schauen, wenn ich in den kommenden Tagen und/oder am WE etwas Langeweile finde, dann kann ich mich ja mal einer solchen Kreisbahn mit (fast) beliebigem Radius annehmen. Ich wäre gespannt, ob ich sowas hinbekäme.. :)

Grüß
NRicola

Marvin_MAV
04.01.2007, 23:31
Hallo all, Hallo NRicola,

Deine Formeln/Dein Ausgangsbild habe ich mir gerade mal etwas genauer angesehen, und festgestellt, dass ich da was nicht nachvollziehen kann:

Was ist a und wo taucht in Deinen Zeichnungen tau auf?

Aber Du rechnest munter damit, als seien diese Werte schon geometrisch bestimmt. Aber genau das sind sie noch nicht. (zumindest nicht in Deinen Zeichnungen)

Eben wegen der Abhängigkeit von Deinem delta von alpha UND beta, versagt hier die einfache Geometrie.

Ohne es im Detail nachvollzogen zu haben, bin ich sicher, dass Deine Formel, so schön sie auch ist, mit an Sicherheit grenzender Wahrscheinlichkeit falsch ist.

In Deinen Zeichnungen/Formeln, taucht nicht der kleinste Hinweis einer Abhängigkeit der projizierten "Beinlänge" (Der radiale Abstand des Aufsetzpunktes des Fusses von der Kante des Robot-Körpers) von den Winkeln alpha UND beta auf.
Das kann nicht stimmen!

Aber immerhin hast Du jetzt gesehen, dass es so einfach wie es wirkt nicht ist. (Mußte ich leider auch einsehen, das tröstet Dich vielleicht ein wenig)

Wie auch immer, allen, die hier mitlesen, ist mittlerweile klar (hoffe ich) dass es hier, von jetzt an, nicht mehr um eine anwendungsbezogene, sondern nur noch um eine philosophisch/mathematische Debatte gehen kann.

Rein praktisch KANN man das Problem nur über eine look-up-Tabelle in den Griff bekommen.

Aber ich finde es hoch spannend was hier passiert.
Ich bin sehr daran interessiert zu erfahren, ob hier im Forum eine Lösung für das Problem gefunden wird.
Auch wenn es keinen sittlichen Nährwert hat. Auch habe ich die Hoffnung die Lösung verstehen zu können (was ich mit meinen beschränkten mathematischen Fähigkeiten im Moment bezweifle).

Aber was auch hieraus wird, ich finde es zumindest spannend und werde sicher weiterhin mitlesen. (Und wenn ich das auch weiterhin darf, den ein oder anderen "bissigen" Kommentar abgeben)

:-)

Grüße
Marvin_MAV

NRicola
05.01.2007, 07:39
Hallo,

ja, da hab ich mich wohl mal geirrt, doch erstmal vorweg: a wurde als der horizontale (kürzeste) Abstand zwischen Fuß und Kontaktpunkt Bein-Bot angesetzt (siehe allererster Post).
Da wo ich mich geirrt habe: ich hatte fälschlicherweise angenommen, dass der Winkel <tau> in Jeffreys Zeichnung vom 24.12. korrekt eingemalt ist und sich seither daran nichts geändert hat, also dessen Definition immernoch beibehalten wurde. Das stimmt leider wirklich nicht, denn ich habe <tau> anders angenommen. Hier also nochmal die fehlende Skizze:

http://www.navierstokes.de/RN/hexabein_schemadrauf.jpg

Das heißt, wenn <tau>=0 ist, steht das Bein im Rechten Winkel zum Bot. Da ja die Sache symmetrisch ist, spielt es keine Rolle, ob das positive <tau> nach vorne oder nach hinten (bzgl. des gesamten Bots) weist.

Hinweis: in diesem Bild liegen D und r "unter" dem Bein, werden also grad vom Bein verdeckt.

Dieser "radiale Abstand", den du meinst, ist D. Die Winkel hängen von D ab, weshalb diese Forderung auch erfüllt ist. Solltest du auch nach weiterem Draufgucken nicht dieser Meinung sein, kannst du dann bitte ein Bildchen mit diesem Abstand, den du meinst, malen?! Ich wüsste jetzt sonst nicht, welchen du sonst meinen könntest.

Kurzum: ich sehe meine Gleichungen und Betrachtungen immernoch als richtig an und folglich auch die Tatsache, dass es ja doch gar nicht mal so schwer ist. :)

Sollte es dich dennoch nicht überzeugen, gib einfach nochmal mit den Bedenken die du hast Bescheid und ich werd mich bemühen meine Theorie irgendwie mal zu beweisen oder sowas in der Art.
Grüß
NRicola

HannoHupmann
05.01.2007, 09:18
@Picknick mit kurven fangen wir gar nicht erst an, solange wir nicht das Problem mit der Geraden gelöst haben. Danach können wir uns überlegen wie es in einer Kurve aussehen muss.

@NRicola das ist so schon ganz gut. Schaut auf den ersten Blick (wie immer) erst mal ziemlich verworren aus. Aber alpha und beta können mit der Formel aus tau bestimmt werden.
Erste Frage, hast du deine ganze Rechnung irgendwo als PDF und kannst sie zum download bereitstellen? Dann kann man sie leichter überprüfen als enfach über ein paar Threads.

Kommt bei Alpha zwischen -... noch mehr Formeln oder ist das nur die Andeutung für die nächste Zeile?

@Marvin_MAV, eventuell muss man es jetzt über eine Tabelle in den Prozessor packen. Aber wir wissen noch gar nicht, ob die Formel nicht auch noch vereinfacht werden kann. Eventuell lässt sich, unter beachtung aller Trigonometrischer Formeln, die Formel noch vereinfachen. Eventuell muss man auch noch etwas hinzufügen um Teile zu vereinfachen.
Dann gilt es immernoch zu testen ob es nicht doch online berechenbar ist. Wobei einige Werte sehr einfach berechnet und dann immer wieder eingesetzt werden können.

PicNick
05.01.2007, 09:27
..mit kurven fangen wir gar nicht erst an..

Ist ja nicht unrichtig, aber mein Hinweis sollte zeigen, daß der Drehwinkel in der Hüfte nicht die Ausgangsvariable sein kann

jeffrey
05.01.2007, 10:37
Hallo,
in einer kurve hat man dann halt kein konstantes a, sondern ein a(tau), sollte aber dann einfach in die formel eingesetzt werden können.
mfg jeffrey

jeffrey
05.01.2007, 10:55
hi,
@nricola
rechne doch mal mit deiner formel die winkel für alpha und beta aus, für tau=-60..60, dann kann man das ergebnis mal vrgleichen.
mfg jeffrey

NRicola
05.01.2007, 17:38
Hallo,

Ich habe mal ein ausführliches pdf gemacht. ich hoffe alles ausführlich genug geschildert zu haben. (siehe Anhang)
Ebenfalls dort vorhanden ist eine Excel-Tabelle mit den Werten von 0 bis 60° für <tau> und zum Selbermitrumspielen.

Ja, die drei Punkte sollen nur die nächste Zeile andeuten.

Aber womit wollt ihr vergleichen? Ich hab hier keine vernünftigen Daten gefunden, also nichtmal eine Tabelle, von der hier schon so manches Mal geredet wurde. Die Bilder von Jeffrey im Post vom 23. sind ja mit anderen Längen gerechnet, richtig?

Auf der Seite
http://www.mathe-online.at/galerie/trig/trig.html
habe ich zumindest die <alphas> grob überprüfen können (mit Verwenden von D) - hat soweit alles übereingestimmt.
Grüß
NRicola

[ädit] Mit dem gegeben <delta> aus der Excel-Tabelle lassen sich auch die anderen Winkel überprüfen. Ich habe ein paar Reihen überprüft und keine Unstimmigkeiten gefunden.

HannoHupmann
05.01.2007, 20:54
Sehr gut danke, ich denke das deine Formeln schon richtig sind, ich hab heute Nachmittag mal ein paar Minuten darüber meditiert.

Ich muss nur mal bischen Zeit finden und schauen ob ich nicht die eine oder andere sinus, cosinus tangens berechnung umstellen und damit vereinfachen kann.

Ob es sich mit nem µC berechnen lässt teste ich dann auf jedenfall nach den Prüfungen.

NRicola
06.01.2007, 08:10
Hallo,

ich habe bei der total umgestellten Formel für <alpha> noch einen Vorzeichenfehler bei mir gefunden. Das <delta> da drin (-arctan(..)) summiert sich nicht, sondern hebt sich auf.
In meinem Post habe ich die Gleichung korrigiert. Das korrigierte pdf befindet sich hier im Anhang.
Grüß
NRicola

HannoHupmann
06.01.2007, 10:25
Kann aber irgendwie nicht angezeigt werden, überprüf doch bitte mal den Link @NRicola

Manf
06.01.2007, 13:25
Das Dokument ist im RN.
https://www.roboternetz.de/phpBB2/download.php?id=8801
Es müßte erreichbar sein.
Manfred

NRicola
06.01.2007, 13:37
Ich konnte es grad öffnen.
Grüß
NRicola

[ädit] Du hast bestimmt das Bild auf der Threadseite 2 gemeint, richtig? Da hatte ich ganz versäumt nachzugucken, ob es denn da ist und hab so gar nicht mitbekommen, dass ich es ja noch gar nicht hochgeladen hatte... 8-[
Jetzt ist es aber da..

NRicola
13.01.2007, 08:54
Hallo,

soho, ich hatte mal etwas langeweile gehabt und nun auch die besagten komischen Kreisbahnen gemacht. Das ist ne ziemlich verrückte Sache, weshalb es nicht so sehr lohnt, die Formeln jetzt hier so in diesen Post reinzustellen. Stattdessen ist alles im anhängenden pdf zu finden. Wen Herleitungen nicht interessieren, der fängt auf Seite 5 an zu gucken.
Hinweis: Einige Aussagen bei der Herleitung sind wahrlich dann nicht mehr sooooo sehr richtig. Das was bei der Überprüfung alles da steht, ist das wirklich wahre.
Mit der anhängenden Excel-Tabelle kann jeder auch mal selber rumspielen. Die Spalten G bis K beinhalten die Formeln des "Inneren Kreises", die Spalten L bis O die des "Äußeren Kreises".
Sollte es irgendwelche Kritik oder was geben: immer her damit! ;)
Es ist klar, dass das hier schon weit das Hobbybastlerniveau übersteigt und nicht für jedermann gemacht ist. Aber wer weiß, vielleicht kann ja doch jemand irgendwann mal nützlich drauf zurückgreifen... :)
Grüß
NRicola

1hdsquad
15.01.2007, 17:18
Ich mag eure Formeln echt ;-)
Für einen putzigen AVR sicherlich (in der jetzigen Form) ein ganzer Happen Arbeit, aber vl. setzt ihr auf den falschen Controller? Der Blackfin von AD sollte das packen ;-)
MFG

Achja: Wenn jemand 3dStudio Max8 kennt, ich werde mal bei Langeweile eine Animation mit euren Formeln erstellen...

HannoHupmann
15.01.2007, 17:23
Das wäre zuminderst mal eine nette Idee um unsere Formel zu überprüfen. Bitte bau die Linie ein auf der sich der Roboter bewegen sollte und auf der er es tatsächlich tut.

1hdsquad
15.01.2007, 17:28
Jepp, kein Problem.
Wie gesagt, bei Zeit/Langeweile...
Wo soll ich das denn hochladen? Ein Video in 1600x1200 ist schon groß ;-)

HannoHupmann
15.01.2007, 17:40
mach es kleinder 800x600? oder 1024x7irgendwas. Alternativ finden wir schon nen Server wenn es den fertig ist.

1hdsquad
15.01.2007, 17:47
Das war ein Witz. Diese Größe hätte ja keine Vorteile...
768 ist übrigens irgendwas, also
dim irgendwas as string*3
irgendwas = 768

HannoHupmann
15.01.2007, 17:50
dazu fällt mir jetzt Spontan nur ein

#include Fatal_Error_WinXP_Script

run Fatal_Error_WinXP_Script;

1hdsquad
15.01.2007, 18:02
Win XP?
Das unterstützt mein AVR nicht ;-)

3TageBart
15.01.2007, 20:08
wie groß ist denn die Datei? mein Server langweilt sich eh immoment...

HannoHupmann
15.01.2007, 21:31
@1hdsquad das macht nicht Fatal_Error_WinXP_Script ist ein universal-fehler, er installiert nämlich eine plattformangepasste WinXP Version alles weitere ergibt sich dann von selbst.

1hdsquad
16.01.2007, 16:41
l0l... Wie war das noch: "Error - Problem between Chair and Keyboard"
Die Datei ist so groß, wie ich sie rendere. Von 2x2 bis 20000x20000 kannste alles haben. Die verschicke ich dann aber nicht per Email ;-)
MFG

HannoHupmann
18.01.2007, 21:32
@NRicola ich hab mir gerade deine Formeln durchgeschaut (für die einfache Linearisierung) und schon mal keinen Fehler gefunden. Abgesehen davon lässt sie sich sogar sehr einfach berechnen, sofern der µC sinus und cosinus funktionen sowie die umkehrfunktionen davon kann.
Den, den Block (B²+D²-C²)/(2BD) kann man recht einfach offline vorberechnen bzw. einmal berechnen und immer einsetzten.

1hdsquad
18.01.2007, 21:40
Jepp. Ich komme grade nicht zum Rendern, denn meine Abiturzulassung steht an...
Vl. am WE...
MFG und macht weiter, nicht aufgeben ;-)

NRicola
19.01.2007, 17:01
Hallo,

das ist sehr schön!
Bei den sin-, ...-funktionen würde ich da jetzt zwei Möglichkeiten sehen: entweder man legt alle Funktionen in Form einer Tabelle ab und schaut, welcher gelistete Wert dem berechneten nahe ist.
Alternativ kann man auch die Reihenentwicklungen dieser Funktionen verwenden:

http://www.navierstokes.de/RN/hexabein_sincosform.jpg

http://www.navierstokes.de/RN/hexabein_sindiag.jpg

http://www.navierstokes.de/RN/hexabein_cosdiag.jpg

Bei arcsin und arccos sieht das mit der Reihenentwicklung (http://de.wikipedia.org/wiki/Arcsin#Reihenentwicklung) aber nicht mehr ganz so gut aus. Nach dem Glied der Potenz 31 streikt dieses Graphenmalprogramm und ich vermute mal, dass auch jeder gesunde Microchip davon nicht sonderlich angetan ist. Zudem sah damit die Funktion nur gerade so nicht mehr wie eine Gerade aus. Soll diese Reihe etwa auch die gleiche Grundlage für jeden Taschenrechner sein??? Hmm, schon blöd, dass das so träge ist..
Das ist ja dann widerum ein Grund mehr, eine Tabelle zu machen.
Grüß
NRicola

1hdsquad
19.01.2007, 22:03
Ich hatte die Funktionen mal porbeweise in meinem TI83+, der hat auch gemeckert. War mir aber nciht sicher, ob ich keine Fehler gemacht hatte...
Gute Nacht

NRicola
20.01.2007, 12:56
Hallo,

die sin und cos oder die Arkusfunktionen?
Wenn erstere, wieviele Glieder hast du mit reingenommen?
Grüß
NRicola

NRicola
05.02.2007, 12:32
Hallo,

...lang ist's her.
Mir ist aber aufgefallen, dass bei den Arkusfunktionen nur das Malprogramm mit den Formeln (rein formell) nicht klar gekommen ist. Die Gleichungen etwas anders formuliert und alles klappt. :roll:
Da fällt einem dann auch auf, dass die gute Wikipedia wahrlich weitab der Unfehlbarkeit ist. Die Gleichung für die arcsin-Reihe ist dort falsch. Diejenige, die da steht (siehe Link in meinem Post vom 19.01.), ist die für den arsinh. Die für den arcsin ist eigentlich nur ohne Vorzeichenwechsel:

http://www.navierstokes.de/RN/hexabein_reihe_arcsin.jpg

Und so sehen die Reihenvarianten für die beiden Funktionen aus:

http://www.navierstokes.de/RN/hexabein_arcsindiag.jpg

(Punktsymmetrie in [0;0])

http://www.navierstokes.de/RN/hexabein_arccosdiag.jpg

(Punktsymmetrie in [0;π/2])

Wer es also schafft einen µC analytisch komplexeres rechnen zu lassen, der dürfte mit diesen Formeln ganz gut aufgehoben sein.
Grüß
NRicola

1hdsquad
09.02.2007, 16:37
Tja, 20MHZ, reichen die mit einem AVR und Assembler?
MFG

HannoHupmann
25.03.2007, 11:37
Das lineariserungs Problem haben wir jetzt weitgehnds gelöst, auch wenn es auf einem µC schlecht implementiert werden kann (ich muss bei meinem Spezialteil mal schauen, mir war neulich so als hätte ich eine lib gefunden die cos, sin, tan und arcos, arcsin und arctan verarbeiten konnte).

Ich hab bei lynxmtion auf der Projektseite
http://www.lynxmotion.com/ViewPage.aspx?ContentCode=projects&CategoryID=20

ein paar Projekte gefunden die sich mit der inversen Kinematik von Roboterarmen beschäftigen. Das Prinzip eines Armes und eines Spinnenbeines ist das selbe. Längen und Gelenke sind natürlich beim Bein kleiner oder weniger. Da sich die Exelsimulationen aber anpassen lassen, könnte hier eine Lösung für Spinnenbeine herauskommen.

Leider bin ich noch nicht dazu gekommen, die Datein mit meinen Masen zu testen. Aber vielleicht hat ja jemand anders auch noch lust sich der Sache anzunehmen.

mfg Hanno

PS: wer nicht genau weis was inverse Kinematik ist, schau bei der Wikipedia nach, da steht es kurz erklärt.

rossir
03.07.2007, 22:29
Ich denke auch, dass die hier gefundenen Formeln richtig sind.
Ich baue zwar keinen Hexapod (deswegen muss ich vorsichtig sein mit dem was ich sage) glaube aber, dass ich eine andere Formel bräuchte.

Eine Formel die, nicht von Tau abhängt sondern, Tau berechnet.

Eigentlich will ich doch einen Fuß auf dem Boden, relativ zum seinem Hüftgelenk, eine gerade Linie beschreiben lassen. Wenn ich das Hüftgelenk in die Koordinate (0, 0, 0) lege und der Abstand zum Boden b sein soll dann soll der Fuß auf der Geraden (a, y, -b) eine Strecke zurück legen.

Denn am liebsten (weil am bequemsten) hätte ich folgende Programmfunktion (Skizze) zur Steuerung eines Beines:

moveOneLegForward(a, b, deltay) {
for(y=10; y>=-10; y-=deltay) {
alpha=fg1(a, y, -b, B, C);
beta= fg2(a, y, -b, B, C);
tau= fg3(a, y, -b, B, C);
apply2servos(alpha, beta, tau);
}
}

Dabei ist, wie gehabt,
b: die Höhe des Hexapods überm Boden
a: der Abstand der Fußstrecke vom Hüftgelenk
B: die (konstante) Längen des Oberschenkels
C: die (konstante) Längen des Unterschenkels

Wie siehst Du das HannoHupmann?
Bzw. wie hast Du denn jetzt konkret die Beinbewegung realisiert? Hast Du die Formeln benutzt?

NRicola
04.07.2007, 05:19
Hallo,

kurzum willst du, dass sich dein Fuß mit einer gewissen Geschwindigkeit am Hüftgelenk vorbei bewegt, richtig?
Du möchtest also eine Geschwindigkeit vorgeben und aus dem derzeitigen tau das nächste tau berechnen, oder? (=>für diskreten Zeitschritt)
Grüß
NRicola

rossir
04.07.2007, 23:24
Du meinst, so was wie:

tau[t0+dt]= f( tau[t0], dt, a, y, -b, B, C )

? Wobei dt der "diskrete Zeitschritt" ist?

Ist zwar auch eine interessante Idee (so 'ne Art Bresenham line Algorithmus für Spinnenbeine) aber darauf bin ich nicht aus. (Obwohl, wenn's geht?! Warum nicht!)

Eher so was wie eine Integer Lösung bzw. Formel für einfache Microprozessoren (also ohne sin, cos etc. oder Tailorreihenentwicklung). Gerne auch ein kompaktes 3D Kennfeld welches mir für beliebige (x, y, z) Koordinaten meine (alpha, beta, tau) Werte liefert.

Dabei sollten x, y und z am liebsten Bytes sein, also in [-128, 127] liegen (Einheit könnte z.B. mm sein) und alpha, beta und tau ebenfalls Bytes mit denen ich sofort die Servos ansteuern könnte.

nomad
05.07.2007, 14:52
hi leute,
bau jetzt gerade ein spinnentier mit 4 beinen (3DOF).
kann jetzt gerademal die plattform mit den 4 beinen hochstemmen.

also:
ich verfolge schon seit laengeren, die linearisierung von spinnenbeinen,
pid-regler und inverse kinematik.
ist ganz schoen happig die mathe.
ich seh bei der ganzen sache einige probleme (abgesehen vom speicherbedarf und
rechenpower)
a) alle rechnungen gehen von einer idealisierten umgebung aus.
also keine hinternisse, keine stoerung der beinbewegungen.
ebener boden.

ich versuch in zukunft mal das ganze mit 3 propeller-chips und mehreren
walknets zu loesen. (google walknets... cruse et al.)
1.chip = master (calc walknet, sensorverarbeitung, communication mit den beiden
anderen SlaveChips.
2. & 3. chip = steuern jeweils 2 beinpaare (jeder servo hat also ein core zur
verfuegung), calc subwalknet, communication mit den anderen chips..
da die chips jeweils 8 cores haben, welche miteinander reden koennen,
ueber globale variablen.koennten die beine dynamisch bewegt werden (auch bei
hinternissen, stoerung der beinbewegung).

vermutlich werd ich erstmals ein simulations-programm (Linux, C & SDL und ev.OpenGL).
das wird vermutlich dauern.
aber eben....
was denk ihr darueber?
gruss
nomad

FriedV
08.09.2008, 16:39
Besten Dank für die Formeln, sie sind soweit ich geprüft habe richtig.
Anbei ein Standbild aus einer Solidworks+Cosmosmotion Simulation, die Maße entsprechen dem Lynxmotion Robby, 6 Beine "Reihenmotor"!
Als nächstes werde ich eine Kopplung zum realen Robby aufbauen,
PC -> XBee - XBee -> SSC32, sozusagen als Testbench. Welchen Mikro ich letztendlich für den autarken Robby nehmen werde, steht noch nicht fest. Kandidaten sind AtMegaxxx oder LPC21xx.
Gruß Fried

FriedV
08.09.2008, 16:40
Besten Dank für die Formeln, sie sind soweit ich geprüft habe richtig.
Anbei ein Standbild aus einer Solidworks+Cosmosmotion Simulation, die Maße entsprechen dem Lynxmotion Robby, 6 Beine "Reihenmotor"!
Als nächstes werde ich eine Kopplung zum realen Robby aufbauen,
PC -> XBee - XBee -> SSC32, sozusagen als Testbench. Welchen Mikro ich letztendlich für den autarken Robby nehmen werde, steht noch nicht fest. Kandidaten sind AtMegaxxx oder LPC21xx.
Gruß Fried

NRicola
08.09.2008, 19:57
Hi FriedV,

es freut mich, dass du an dieser Stelle hier weiter machst! Ich bin auf deine Infos und Errungenschaften bereits jetzt sehr gespannt!
Grüß

NRicola