Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Inverse Kinematik: Winkel für ein Ziel

Nach dieser Lektion: Ich kann die Gelenkwinkel für ein Ziel berechnen und erkennen, ob das Ziel überhaupt erreichbar ist.

Lektion, 70 Min.3 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Welche Winkel führen die Hand zum Ziel?

Die inverse Kinematik berechnet, welche Gelenkwinkel ein Roboterarm braucht, damit seine Hand ein vorgegebenes Ziel erreicht. Sie ist die Umkehrung der Vorwärtskinematik und die Frage hinter jedem Greifauftrag.

Oft gibt es zwei Lösungen, manchmal nur eine, und manchmal gar keine. Das lässt sich mit etwas Geometrie genau vorhersagen.

Am Ende dieser Lektion

Notiz

Ich kann die Gelenkwinkel für ein Ziel berechnen und erkennen, ob das Ziel überhaupt erreichbar ist.

Schlüsselwörter

BegriffWas er bedeutet
Inverse Kinematikaus dem Ziel der Hand die Gelenkwinkel berechnen
Zielder Punkt, an dem die Hand ankommen soll
Erreichbarder Arm kann das Ziel mit seinen Gliedern treffen
Kosinussatzer liefert einen Winkel aus den drei Seiten eines Dreiecks
Ellbogenstellungder Ellbogen knickt nach der einen oder der anderen Seite

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Erreichbar ist ein Ziel im Ring

Zuerst fragen wir, ob der Arm das Ziel überhaupt trifft. Der Abstand d des Ziels vom Ursprung muss zwischen der Differenz und der Summe der Gliedlängen liegen.

Bei den Längen 30 und 20 ist die untere Grenze 10 und die obere 50 Zentimeter. Alles außerhalb dieses Rings ist für die Hand unerreichbar.

Beispiel: fünf Ziele im Ring 10 bis 50

Ziel (x, y)Abstand dErreichbar?
(50, 0)50ja, ganz gestreckt
(20, 30)etwa 36,06ja
(10, 0)10ja, ganz zurückgeklappt
(5, 0)5nein, zu nah
(40, 40)etwa 56,57nein, zu weit

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Der Abstand des Ziels (20, 30)

Befehl
docker exec jupyter python3 -c "import numpy as np; print(np.round(np.hypot(20, 30), 2))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der Kosinussatz liefert den zweiten Winkel

Die beiden Glieder und die Strecke vom Ursprung zum Ziel bilden ein Dreieck. Seine Seiten sind 30, 20 und d. Der Kosinussatz berechnet daraus den Winkel am Ellbogen.

In unserer Schreibweise gilt: cos(w2) ist d mal d minus 30 mal 30 minus 20 mal 20, geteilt durch 2 mal 30 mal 20. Dann liefert arccos den Winkel w2.

Beispiel: der zweite Winkel für vier Ziele

Zield mal dcos(w2)w2 in Grad
(50, 0)250010
(20, 30)1300090, oder -90
(40, 0)16000,25etwa 75,52, oder -75,52
(10, 0)100-1180

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Der zweite Winkel für das Ziel (40, 0)

Befehl
docker exec jupyter python3 -c "import numpy as np; print(np.round(np.degrees(np.arccos((1600 - 900 - 400) / 1200)), 4))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den zweiten Winkel in Python berechnen

Code: python
import math

# Zwei Gliedlängen und ein Ziel, in Zentimetern.
l1 = 25
l2 = 15
x = 29
y = 3
d2 = x * x + y * y
c = (d2 - l1 * l1 - l2 * l2) / (2 * l1 * l2)
print("cos von w2:", round(c, 3))
if abs(c) <= 1:
    print("w2 =", round(math.degrees(math.acos(c)), 2), "Grad")
else:
    print("Das Ziel ist nicht erreichbar.")
# Setzen Sie x auf 60 und starten Sie erneut.

Es gibt zwei Ellbogenstellungen für dasselbe Ziel

Zum Winkel w2 gehört auch der Gegenwinkel minus w2: Der Ellbogen knickt dann zur anderen Seite. Beide Stellungen bringen die Hand zum Ziel.

Den ersten Winkel w1 liefert der Unterschied zweier Richtungen: die Richtung zum Ziel minus einen Hilfswinkel, der von w2 abhängt. Beide Richtungen rechnet math.atan2 aus.

Beispiel: zwei Lösungen für das Ziel (20, 30)

Stellungw1w2Hand
Ellbogen nach rechts unten90-90(20, 30)
Ellbogen nach links obenetwa 22,6290(20, 30)

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Beide ersten Winkel für das Ziel (20, 30)

Befehl
docker exec jupyter python3 -c "import numpy as np; z = np.arctan2(30, 20); print([round(float(np.degrees(z - np.arctan2(20 * np.sin(s), 30 + 20 * np.cos(s)))), 2) for s in (np.pi / 2, -np.pi / 2)])"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele glauben, ein Ziel habe immer genau eine Lösung. Meist hat es zwei. Nur am Rand des Rings gibt es eine, und außerhalb des Rings gibt es keine. Prüfen Sie darum zuerst, ob das Ziel erreichbar ist.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.