1. Grundidee des Algorithmus
Regeln
- Es darf immer nur eine Scheibe bewegt werden.
- Es darf nur die oberste Scheibe eines Turms genommen werden.
- Eine größere Scheibe darf nie auf einer kleineren liegen.
Rekursiver Lösungsplan
Um n Scheiben von A nach C zu bewegen, benutzt man B als Hilfsturm:
- Bewege n−1 Scheiben von A nach B.
- Bewege die größte Scheibe von A nach C.
- Bewege n−1 Scheiben von B nach C.
Für den Dobot gedacht: Ein einzelner Algorithmusschritt entspricht einem Pick-and-Place-Befehl: Scheibe ansaugen oder greifen, anheben, zum Ziel fahren, ablegen. Erst die Strategie planen, dann in Bewegungsbefehle übersetzen. 🤖
hanoi(n, start, ziel, hilfe):
wenn n == 1:
bewege eine Scheibe von start nach ziel
sonst:
hanoi(n-1, start, hilfe, ziel)
bewege eine Scheibe von start nach ziel
hanoi(n-1, hilfe, ziel, start)
2. Interaktive Übung
Klicke zuerst auf einen Turm mit Scheibe, dann auf den Zielturm.
3. Vom Algorithmus zum Dobot-Programm
Für den realen Dobot Magician braucht jeder Turm feste Koordinaten. Zusätzlich braucht man sichere Höhenpositionen, damit der Arm nicht gegen Scheiben oder Türme fährt.
| Aktion | Beschreibung | Dobot-Idee |
|---|---|---|
| 1. Anfahren | Zur obersten Scheibe des Startturms fahren | move_to(start_x, start_y, z_oben) |
| 2. Aufnehmen | Sauger oder Greifer aktivieren | suction_on() oder gripper_close() |
| 3. Anheben | Auf sichere Transporthöhe fahren | move_to(start_x, start_y, z_sicher) |
| 4. Transport | Über den Zielturm fahren | move_to(ziel_x, ziel_y, z_sicher) |
| 5. Ablegen | Auf passende Stapelhöhe absenken und loslassen | suction_off() oder gripper_open() |