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

Jacobi-Matrix und Gelenkgeschwindigkeit

Nach dieser Lektion: Ich kann mit einer geschätzten Jacobi-Matrix aus den Gelenkgeschwindigkeiten die Geschwindigkeit der Hand berechnen.

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

Wie schnell bewegt sich die Hand?

Die Jacobi-Matrix sagt, wie schnell sich die Hand eines Roboterarms bewegt, wenn sich die Gelenke mit bestimmten Geschwindigkeiten drehen. Sie ist eine kleine Zahlentabelle, die für jede Haltung des Arms neu gilt.

Man kann sie ohne Formeln schätzen: einen Winkel um ein winziges Stück ändern und beobachten, wie weit die Hand wandert. Das lernen Sie hier.

Am Ende dieser Lektion

Notiz

Ich kann mit einer geschätzten Jacobi-Matrix aus den Gelenkgeschwindigkeiten die Geschwindigkeit der Hand berechnen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Gelenkgeschwindigkeitwie viele Grad sich ein Gelenk in einer Sekunde dreht10 Grad je Sekunde
Handgeschwindigkeitwie viele Zentimeter die Hand in einer Sekunde wandert
Jacobi-Matrixeine Tabelle: Handbewegung je Grad eines Gelenks
Differenzenquotienteine Änderung geteilt durch einen kleinen Schritt
Singularitäteine Haltung, in der die Hand in eine Richtung nicht ausweichen kann

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

Ein winziger Schritt zeigt, wie die Hand reagiert

Die Hand liegt bei (30, 20), wenn w1 gleich 0 und w2 gleich 90 ist. Drehen Sie nur w1 um 1 Grad, und die Hand wandert ein Stück. Die Verschiebung geteilt durch den Schritt ist ein Differenzenquotient.

Er sagt: so viele Zentimeter wandert die Hand für ein Grad Drehung. Dasselbe machen wir danach mit w2.

Beispiel: ein Grad mehr, die Hand wandert

Was ändert sich?Hand vorherHand nachherÄnderung (x, y)
w1 plus 1 Grad(30, 20)(29,65; 20,52)(-0,35; 0,52)
w2 plus 1 Grad(30, 20)(29,65; 20,00)(-0,35; 0,00)

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

Die Handänderung bei einem Grad mehr

Befehl
docker exec jupyter python3 -c "import numpy as np; f = lambda a, b: np.array([30 * np.cos(np.radians(a)) + 20 * np.cos(np.radians(a + b)), 30 * np.sin(np.radians(a)) + 20 * np.sin(np.radians(a + b))]); print(np.round(f(1, 90) - f(0, 90), 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.

Einen Differenzenquotienten in Python rechnen

Code: python
import math

def hand(l1, l2, w1, w2):
    a = math.radians(w1)
    b = math.radians(w1 + w2)
    return [l1 * math.cos(a) + l2 * math.cos(b), l1 * math.sin(a) + l2 * math.sin(b)]

# Der Arm steht bei w1 = 20 und w2 = 50. Wir ändern w1 um 0,5 Grad.
vorher = hand(25, 15, 20, 50)
nachher = hand(25, 15, 20.5, 50)
aenderung_x = (nachher[0] - vorher[0]) / 0.5
aenderung_y = (nachher[1] - vorher[1]) / 0.5
print(round(aenderung_x, 3), round(aenderung_y, 3))
# Ändern Sie den Schritt von 0,5 auf 0,01 (an beiden Stellen) und vergleichen Sie.

Die Jacobi-Matrix sammelt beide Spalten

Die Jacobi-Matrix hat zwei Spalten. Die erste hält fest, wie die Hand auf ein Grad in w1 reagiert, die zweite, wie sie auf ein Grad in w2 reagiert. Die obere Zeile gehört zu x, die untere zu y.

Die Handgeschwindigkeit entsteht so: vx ist die obere Zeile mal die beiden Gelenkgeschwindigkeiten, vy die untere. Mit Grad je Sekunde kommt Zentimeter je Sekunde heraus.

Beispiel: Gelenkgeschwindigkeit wird Handgeschwindigkeit

Gelenke drehen sich mitRechnung für vxRechnung für vyHand bewegt sich mit
10 und 0 Grad je Sekunde-0,35 mal 100,52 mal 10(-3,5; 5,2) cm je Sekunde
0 und 10 Grad je Sekunde-0,35 mal 100,00 mal 10(-3,5; 0) cm je Sekunde
10 und 10 Grad je Sekunde-3,5 plus -3,55,2 plus 0(-7; 5,2) cm je Sekunde

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

Beide Gelenke mit 10 Grad je Sekunde

Befehl
docker exec jupyter python3 -c "import numpy as np; j = np.array([[-0.35, -0.35], [0.52, 0]]); print(j @ np.array([10, 10]))"

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

Im gestreckten Arm fehlt der Hand eine Richtung

Bei gestrecktem Arm zeigt die Hand genau vom Ursprung weg. Egal, wie sich die Gelenke drehen: Die Hand kann dann nur senkrecht zum Arm wandern, nicht entlang des Arms.

So eine Haltung heißt Singularität. Die Matrix verrät sie: Ihre Determinante, also das Produkt der Diagonalen minus das der Gegendiagonale, ist dann 0.

Beispiel: zwei Haltungen im Vergleich

HaltungMatrix je GradDeterminanteSingulär?
w1 = 0, w2 = 90[[-0,35; -0,35], [0,52; 0]]etwa 0,18nein
w1 = 0, w2 = 0[[0; 0], [0,87; 0,35]]0ja

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

Die Determinante des gestreckten Arms

Befehl
docker exec jupyter python3 -c "import numpy as np; print(np.linalg.det(np.array([[0, 0], [0.87, 0.35]])))"

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, die Jacobi-Matrix gelte für den ganzen Arbeitsraum. Sie gilt nur für die Haltung, in der sie berechnet wurde. Ändern sich die Winkel, müssen Sie sie neu schätzen.

Ü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.