In der Industrie werden häufig Roboter eingesetzt, die zuvor programmierte Arbeitsschritte selbstständig und wiederholt ausführen. Ein solcher virtueller Roboter soll hier programmiert werden.
Die Animation zeigt ein mögliches Ergebnis:
Das Projekt besteht aus acht Sprites. Es werden verschiedene Programmierkonzepte, wie Listen sowie das Aufrufen von Blöcken anderer Sprites verwendet. Im Folgenden wird das Grundkonzept skizziert.
Notwendige Kenntnisse:
Der eigentliche Roboter besteht aus fünf Sprites: Dem Fuß, dem unteren Arm, dem oberen Arm und dem Magneten. Wir erstellen zunächst den Fuß als Sprite mit rechteckigem schwarzen Kostüm.
Für den unteren Arm benötigen wir ein Sprite, das als Kostüm ein senkrechtes Rechteck
besitzt. Wichtig ist, dass sich der Drehpunkt dabei am unteren Ende des Rechtecks befindet.
Diesen kannst du beim Zeichnen mit dem Fadenkreuzwerkzeug festlegen.
Wir erstellen eine Variable
, die den Drehwinkel des Arms speichert. Dabei zeigt der Arm
bei einem Winkel von 0° nach links und bei 180° nach rechts.
Beim Starten des Programms wird die Variable auf 90 und die Richtung des Arms auf diesen Winkel gesetzt. Der Arm
zeigt dann also senkrecht nach oben.
Beim Drücken der Pfeiltasten nach links und rechts wird die Variable
um +1 bzw. -1 verändert und
die Richtung des Arms wieder auf diesen Winkel gesetzt.
Der obere Arm ist ebenfalls ein Sprite mit einem Kostüm, das aus einem waagrechten Rechteck besteht.
Der Drehpunkt muss sich am rechten Ende befinden.
Damit ergeben sich folgende Drehwinkel:
Erstelle das Sprite, sorge dafür, dass zu Beginn einen Winkel von 270° einnimmt und
platziere es an die richtige Stelle des unteren Arms.
Das besondere ist nun, dass sich dieser Arm zusammen mit dem unteren Arm bewegen soll.
Dies erreicht man, indem man das Sprite des zweiten Arms an das Sprite des ersten Arms anhängt.
Die folgende Animation zeigt, wie man dazu vorgeht:
Bei der Übersicht aller Sprites erscheint beim zweiten Arm nun ein grauer Kreis. Achte darauf,
dass dieser einen waagrechten Pfeil darstellt. Dies bedeutet, dass sich das angehängte Sprite
nicht mit dem Arm1 dreht.
Auch für den zweiten Arm erstellen wir eine Variable für den momentanen Drehwinkel
und Skripte zum Drehen
mit den Pfeiltasten nach unten bzw. nach oben.
Jetzt fehlt noch der Magnet, ein Sprite mit einem kleinen grünen Kostüm, das wir am zweiten
Arm befestigen. Anders als beim zweiten Arm, soll sich das Sprite mitdrehen.
Der Magnet soll durch Drücken der Leertaste ein- bzw. ausgeschaltet werden können.
Er soll also sichtbar oder unsichtbar sein. Den Zustand des Magnets speichern wir als
Wahrheitswert in einer Variablen .
Abhängig von diesem Wert wird beim Drücken der Leertaste das Sprite versteckt bzw. angezeigt
und der Wert der Variablen umgekehrt.
Damit ist die Tastensteuerung des Roboters vollständig.
Als nächstes erstellen wir ein Sprite mit dem Namen Ablagen, das als Kostüm den Ablagebereich und den Boden darstellt. Zeichne dazu waagrechte Linien und Rechtecke und ziehe die Grafik an die richtige Position im Grafikfenster.
Als Kugel, die vom Roboter bewegt wird, erstellen wir ein weiteres Sprite mit einem kreisförmigen Kostüm.
Das Skript der Kugel soll dafür sorgen, dass diese sich solange nach unten bewegt,
bis sie auf die Ablage trifft. Gleichzeitig soll die Kugel aber überprüfen, ob
sie den (eingeschalteten) Magneten berührt. In diesem Fall nimmt die Kugel die
x- und y-Position des Magneten an. Dazu 'fragt' die Kugel den Magneten nach seiner
Position und setzt seine eigenen Koordinaten auf diese. Das folgende Skript für die Kugel
zeigt das gewünschte Verhalten.
Damit kann der Roboter die Kugel also auf beliebige Ablagestellen bewegen.
Jetzt kommt der interessante Teil des Projekts. Der Roboter soll gelernte Bewegungen
selbstständig wiedergeben.
Die Idee dazu ist ähnlich wie beim Projekt zum Attention-Tracking. Wir speichern einfach
in einer Liste die
verschiedenen Zustände (Drehwinkel der beiden Arme, Aktivität des Magneten).
Für die zugehörigen Skripte erstellen wir ein neues Sprite mit dem Namen Steuerung, dessen Grafik nur ein winzigen, kaum
sichtbarer Punkt ist. Wir nutzen die Grafik nur, um damit Sprechblasen darzustellen.
Beim Drücken der Taste d (Delete), wird die Variable
auf eine leere Liste gesetzt.
Beim Drücken der Taste s (Save oder Speichern) wird der momentane Drehwinkel des unteren
und oberen Arms sowie der Zustand des Magneten der Liste (als dreielementige Liste) hinzugefügt.
Nun fehlt nur noch das automatische Abspielen der gespeicherten Positionen, der
schwierigste Teil des Projekts.
Wir implemementieren zunächst eine einfache Variante.
Beim Drücken der Taste p (Play) werden alle Elemente der Liste durchlaufen.
Ein Element dieser Liste ist ja wieder ein dreielementige Liste (Winkel Arm 1, Winkel Arm 2,
Zustand Magnet). Wir müssen nun dafür sorgen, dass sich der Roboter in die gespeicherte Position bewegt.
Dazu drehen wir zunächst den Arm 1. Wir holen uns aus dem aktuellen Element der Positionsliste
das erste Element (gespeicherter Winkel des des unteren Arms) und speichern ihn in einer Skriptvariablen.
Anschließend wird die Variable
des unteren Arms solange um 1 vergrößert bzw. verkleinert, bis
er dem gewünschten Winkel entspricht. Dabei ist eine Fallunterscheidung möglich, je nachdem der
Sollwinkel größer oder kleiner als der momentane Winkel ist. Nach jeder Veränderung sagen wir dem
Arm 1, dass er seine Richtung auf den neuen Winkel setzen soll:
In gleicher Weise gehen für den zweiten Arm vor. Dazu speichern wir zunächst in einer Skriptvariablen den Sollwinkel für den oberen Arm .
Zuletzt wird der Magnet je nach Listeneintrag ein- oder augeschaltet, also sichtbar bzw.
unsichtbar gemacht.
Damit ist der programmierbare Roboter einsatzbereit.
Um mehrer Kugeln gleichzeitig verwenden zu können, nutzen wir ein Technik von Snap!, die es ähnlich auch in anderen Programmiersprachen gibt. Wir erzeugen von einem Sprite eine Kopie, einen sogenannten Klon.
Einen neuen Klon eines Objekts erzeugt man mit dem Block
. Dabei kann man auswählen,
ob das Objekt selbst oder ein anderes Objekt geklont werden soll.
Ein Klon besitzt alle Eigenschaften des ursprünglichen Objekts und reagiert auch
auf dessen Skripte. Es ist möglich, beim Erzeugen eines Klons ein besonderes
Skript zu starten. Das nutzen wir hier:
Die Animation zeigt die Wirkung beim Klonen der roten Kugel:
Wir bauen zum Abschluss noch einen automatischen Kugelerzeugen. Die Idee dazu ist recht einfach:
Wir erstellen ein quadratisches Sprite, das immer dann an seiner Position einen Kugelklon erzeugt,
wenn er gerade keine Kugel berührt. Das heißt, wenn eine erzeugte Kugel aus seinem Bereich entfernt wird,
wird nach kurzer Zeit wieder eine neue Kugel erstellt. Dazu muss man die Anfangsposition der Kugel
an so wählen, dass der Klon an der Stelle des Kugelerzeugers erscheint. Die eigentliche Kugel verstecken wir.
Beim Erzeugen eines Klons wird dieser dann sichtbar geschaltet.
Hier das Skript des Kugelerzeugers und
eine Animation dazu:
Für den Roboter sind viele Erweiterungen und Verbeserungen möglich. Hier einige Ideen:
Es wäre auch schön, wenn die beiden Arme sich beim Abspielen gleichzeitig bewegen würden und nicht
erst der Arm 1 seine Zielposition einnimmt und anschließend der Arm 2. Außerdem sollte auch
noch wählbar sein, wie lange der Vorgang dauert. Dazu könnte man z. B. einen Block
erstellen, bei dem man als Parameter
die gewünschten Winkel, einen Wahrheitswert für den Magneten und die Anzahl der Einzelschritte für
diesen Vorgang wählt. Innerhalb des Blocks müsste zunächst berechnet werden, wie groß die Winkeländerung
für die beiden Arme sein muss, um ausgehend von der momentanen Position den Sollwinkel in der vorgegebenen
Anzahl von Schritten zu erreichen. Anschließend könnte in einer Wiederholung die Drehwinkel der
beiden Arme gleichzeitig verändert werden. Die Animation zeigt, wie eine Bewegung dann aussehen könnte.
Roboter zeichnen sich durch ihre Arbeitsgeschwindigkeit aus. Mit einer einfachen Variable lässt sich die die Geschwindigkeit des Ablaufs beeinflussen.
Der Einsatz von Robotern in der Industrie ist eine wichtige Voraussetzung, um im Wettbewerb
qualitativ hochwertige und preiswerte Waren produzieren zu können. Roboter helfen,
schwere und gefährliche Arbeiten zu erledigen und Zeit zu sparen.
Die Verwendung von Robotern bedeutet aber auch einen Umbau der Arbeitswelt. Viele
Tätigkeiten, die bislang von Menschen ausgeführt wurden, können nun durch eine Maschine
erledigt werden. So werden sich manche Berufsbilder stark verändern, gleichzeitig aber
auch neue Tätigkeitsbereiche entstehen.
Auch in der Medizin und Pflege spielen Roboter bereits eine Rolle. Operationen, bei denen hohe Präzision gefragt ist, können z. B. teilweise maschinell erfolgen. Auch zur Unterstützung pflegebedürftiger Menschen gibt es Einsatzmöglichkeiten.
Weitere Informationen: