Welchen Weg nimmt die Hand und wann?
Eine Bahnplanung legt fest, welchen Weg die Hand eines Roboterarms nimmt und zu welcher Zeit sie wo sein soll. Ohne Plan ruckelt der Arm oder soll schneller fahren, als seine Motoren schaffen.
Hier planen wir die einfachste Bahn, eine Gerade, mit einer Höchstgeschwindigkeit und einem festen Zeittakt. Es bleibt eine Simulation.
Am Ende dieser Lektion
Notiz
Ich kann eine gerade Bahn mit gleichmäßigen Punkten und einer Dauer planen, die eine Höchstgeschwindigkeit einhält.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Bahn | der Weg, den die Hand von Start bis Ziel nimmt | |
| Interpolation | Punkte gleichmäßig zwischen zwei Punkten verteilen | |
| Stützpunkt | ein Punkt der Bahn, an dem die Hand sein soll | |
| Höchstgeschwindigkeit | die größte Geschwindigkeit, die erlaubt ist | 10 cm je Sekunde |
| Zeitschritt | die Zeit zwischen zwei Stützpunkten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Interpolation verteilt Punkte gleichmäßig auf der Geraden
Zwischen Start und Ziel legen wir n gleiche Schritte. Beim Schritt k ist der Anteil t gleich k geteilt durch n. Er läuft von 0 bis 1.
Der Stützpunkt ist der Start plus t mal der Unterschied zwischen Ziel und Start. Das gilt für x und für y getrennt.
Beispiel: eine Bahn in vier Schritten
| Schritt k | Anteil t | Stützpunkt (x, y) |
|---|---|---|
| 0 | 0 | (20, 30) |
| 1 | 0,25 | (25, 25) |
| 2 | 0,5 | (30, 20) |
| 3 | 0,75 | (35, 15) |
| 4 | 1 | (40, 10) |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Fünf gleiche Punkte von 20 bis 40
docker exec jupyter python3 -c "import numpy as np; print(np.linspace(20, 40, 5))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Stützpunkte in Python berechnen
# Eine Bahn von (10, 30) nach (30, 10) in vier gleichen Schritten.
start = [10, 30]
ziel = [30, 10]
n = 4
for k in range(n + 1):
t = k / n
x = start[0] + t * (ziel[0] - start[0])
y = start[1] + t * (ziel[1] - start[1])
print(k, x, y)
# Setzen Sie n auf 2 und starten Sie erneut.
Die Höchstgeschwindigkeit bestimmt die Dauer
Die Länge der Bahn ist der Abstand zwischen Start und Ziel. Die Dauer ist die Länge geteilt durch die Höchstgeschwindigkeit. Schneller darf die Hand nicht fahren.
Der Zeittakt teilt die Dauer in Schritte. Ist der Takt 0,5 Sekunden, ergeben sich so viele Schritte, wie in die Dauer passen, aufgerundet.
Beispiel: Länge, Dauer und Schritte
| Größe | Rechnung | Ergebnis |
|---|---|---|
| Länge von (20, 30) nach (40, 10) | Wurzel aus 20 mal 20 plus 20 mal 20 | etwa 28,28 cm |
| Dauer bei 10 cm je Sekunde | 28,28 geteilt durch 10 | etwa 2,83 s |
| Schritte bei Takt 0,5 s | 2,83 geteilt durch 0,5, aufgerundet | 6 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Dauer bei 10 Zentimetern je Sekunde
docker exec jupyter python3 -c "import numpy as np; print(np.round(np.hypot(20, 20) / 10, 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.
Jeder Stützpunkt braucht seine eigenen Gelenkwinkel
Der Arm steuert Winkel an und keine Koordinaten. Für jeden Stützpunkt berechnen wir deshalb mit der inversen Kinematik die Winkel.
Die Punkte liegen gleichmäßig auf der Geraden. Die Winkel ändern sich aber ungleichmäßig, wie die Tabelle für die Bahn von (20, 30) nach (40, 10) zeigt.
Beispiel: Winkel an drei Stützpunkten
| Stützpunkt | w1 in Grad | w2 in Grad |
|---|---|---|
| (20, 30) | 22,62 | 90 |
| (30, 20) | 0 | 90 |
| (40, 10) | -13,18 | 70,53 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Der zweite Winkel an den drei Stützpunkten
docker exec jupyter python3 -c "import numpy as np; print([round(float(np.degrees(np.arccos((x * x + y * y - 1300) / 1200))), 2) for x, y in [(20, 30), (30, 20), (40, 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.
Ein häufiger Fehler
Warnung
Viele glauben, gleichmäßige Winkel ergäben eine gerade Linie der Hand. Das stimmt nicht: Gleichmäßige Winkel führen die Hand auf einem Bogen. Für eine Gerade berechnen Sie die Punkte zuerst und daraus jeweils die Winkel.