Forum: Mikrocontroller und Digitale Elektronik Plot Clock - Winkelberechnung aus X Y


von Iguan (Gast)


Lesenswert?

Hallo zusammen! Ich hoffe jemand von euch kann mir jemand 
weiterhelfen...

Ich würde gerne eine Plot Clock bauen mit Teensy 3.6 als 
mikrocontroller:
https://m.youtube.com/watch?v=2DZSj8b2RGw

Mathe-Unterricht ist bei mir schon länger her. Ich bräuchte eine
Formel, wo ich mit gegebener X- und Y Koordinaten die beiden 
Soll-Drehwinkel der Servos berechnen kann.

Angenommen alle Schenkel sind gleich lang (50mm) und die Dreh-Achsen der 
Servos sind 70mm voneinander entfernt.

Wie berechne ich das?

Wenn der Nullpunkt genau zwischen den Beiden Servo-Drehachsen liegt
Wäre der die X- Koordinate des linken Gelenkes:
xLinks = cos(a) * Schenkellänge - (50mm/2)
YLinks =  sin (a) * Schenkellänge...

...weiter komme ich nicht...

Vielen Dank im Vorras für nützliche Tips

Mfg

Iguan

von Benjamin S. (recycler)


Lesenswert?

Schau dir den Einheitskreis an -> 
https://de.wikipedia.org/wiki/Sinus_und_Kosinus

x -> X-Koordinate
y -> Y-Koordinate
a -> Winkel (besser wäre alpha aber da finde ich das Symbol nicht)
l -> Länge (am besten auf 1 normiert)

x = cos(a) * l
y = sin(a) * l

Mit Normierung:
x = cos(a)
y = sin(a)

a = arccos(x)

Arccos ist die Inverse von cos. Das ist auch in der math.h drinnen.
vgl. http://www.cplusplus.com/reference/cmath/acos/


Das als ersten Denkanstoß.

TIP 1: Lege den Nullpunkt in die Mitte
TIP 2: Denke an die Extremabehandlung. z.B. Was ist wenn x = 0 ist? Dann 
ist meist ein if/else schneller

von Yalu X. (yalu) (Moderator)


Lesenswert?

Der Abstand des linken Gelenks zur linken Servoachse ist gleich der
Schenkellänge. Der Abstand des linken Gelenks zum Stift Servoachse ist
ebenfalls gleich der Schenkellänge. Das ergibt zwei Gleichungen, aus
denen du die Position des linken Gelenk berechnen kannst. Der Drehwinkel
des Servos kann dann über die atan2-Funktion berechnet werden. Für die
rechte Seite erfolgt die Berechnung entsprechend.

Du bekommst für die linke und die rechte Gelenkposition jeweils zwei
Lösungen. Das liegt daran, dass bei gleicher Stiftposition die Gelenke
nach links oder nach rechts geknickt sein können. Da man weiß, dass das
linke Gelenk immer nach links und das rechte Gelenk immer nach rechts
geknickt ist, sollte klar sein, welche der beiden Lösungen jeweils
auszuwählen ist.

Dieser einfache Rechenweg setzt voraus, dass der Stift zentrisch im
vorderen Gelenk montiert ist. Ist er das nicht (wie im Video), wird die
Berechnung etwas komplizierter.

von Sigi (Gast)


Lesenswert?

Schau dir mal atan(y,x) an, ist in vielen
Sprachen definiert, teilweise als atan2.

von Günter J. (gjung)


Lesenswert?

Das passende Stichwort ist hier "inverse Kinematik"
Gruß Günter

von Günter J. (gjung)


Lesenswert?

Ach ja, schau Dir doch mal den Text vom Original-Designer an:
http://wiki.fablab-nuernberg.de/w/Ding:Plotclock

von Yalu X. (yalu) (Moderator)


Lesenswert?

Hier hat der Erfinder dieser Uhr den Quellcode veröffentlicht
(plotclock_v1_03.ino):

  https://www.thingiverse.com/thing:248009/files

Darin stehen nicht nur die Formeln, sondern auch Erläuterungen, wie
diese zustande gekommen sind. In der Berechnung wird insbesondere auch
berücksichtigt, dass die Stifthalterung ein Stück schräg außerhalb des
vorderen Gelenks liegt. Durch Anpassen der Parameter L1, L2, L3, L4 und
0.621 kann der Code leicht an andere Armdimensionen angepasst werden.

von Iguan (Gast)


Lesenswert?

Vielen Dank für eure super Inputs!! Ich konnte die beiden Winkel nun 
berechnen! Eine gute masstäbliche Skizze, der Cosinussatz sowie 
Trigonometrie (GAGA-HühnerHof AG) waren der Schlüssel!

von Löse Peter (Gast)


Lesenswert?

Top finde ich, dass der Ersteller trotz Hindernissen mit den Tips auf 
die Lösung gekommen ist und nicht wie die heutigen Schüler die Lösung in 
Bunt fordern!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.