Hauptmenü TMS Robotik AG

f2.3 Höhlenlabyrinth Hin- und Rückweg mBot 2 Extension mBot 2 Extension Labyrinth mBot 2 Mechanikteile ★ ★ ★

Der Roboter soll das Höhlenlabyrinth vermessen, am Ende umkehren und auf gleichem Weg wieder zurückfahren. Dazu muss er sich alle gefahrenen Längen und Winkel des Hinwegs in einer Liste merken und sie in umgekehrter Reihenfolge wiedergeben.

mBot 2 Roboter

Listen

Listen sind besondere Variablen, die mehrere Elemente in einer Reihenfolge speichern können, beispielsweise ein Busfahrplan: 14:03 Moltkestraße 14:06 Krähenstraße 14:08 Kohlmarkt
oder ein Einkaufszettel: Brot Milch Salat Limonade

Jedes Element hat eine Position innerhalb der Liste und jede Liste besitzt eine Länge, nämlich die Anzahl der Elemente in dieser Liste.

Listen können mit entsprechenden Befehlsblöcken geändert werden:

Erstelle in Deinem Programm eine neue Liste Segmente, die alle Längen und Winkel des Hinwegs speichert.

Erweitere das Hauptprogramm:

Hauptprogramm
  1. Fahre bis Hindernis: Fahre nach vorne, bis der Ultraschallsensor ein Hindernis erkennt und speichere dann die zurückgelegte Strecke in der Liste.
  2. Scanne die Umgebung mit dem Ultraschallsensor und bestimme, in welchem Winkel der größte Abstand gemessen wird. Speichere den Winkel für den Rückweg in der Liste.
  3. Drehe den mBot in diese Richtung (wie bisher)
  4. Fahre zurück: Arbeite die Liste von hinten nach vorne ab und bewege den mBot wieder zum Startpunkt zurück.

Fahre bis Hindernis

Ändere den Block, so dass die gefahrene Strecke der Liste hinzugefügt wird.

Fahre bis Hindernis Code
Der letzte Befehl fügt am Ende der Liste die Fahrstrecke in cm hinzu. Die Formel für die Umrechnung von Encoder-Winkel-Inkrementen in cm ist in der letzten Aufgabe erklärt.

Scanne

Ändere den Block, so dass der Drehwinkel für den Rückweg der Liste hinzugefügt wird. Der Roboter muss auf dem Rückweg in die entgegengesetzte Richtung drehen. Eine Linkskurve auf dem Hinweg wird zu einer Rechtskurve auf dem Rückweg.

Winkel für Hin- und Rückweg

Scanne Code

Fahre zurück

Dieser Block fährt den Roboter wieder zurück zum Startpunkt. Dazu benutzt er die Liste Segmente, die während des Hinwegs angelegt wurde.

Die Liste enthält jetzt Paare von Längen und Winkel und sieht folgendermaßen aus:
1. Längensegment (in cm) 1. Drehwinkel für Rückweg (in °) 2. Länge 2. Winkel 3. Länge 3. Winkel ... ... Letztes Längensegment Letzter Drehwinkel

Um wieder zurück zum Startpunkt zu finden, muss der mBot die Liste von hinten nach vorne, also rückwärts abarbeiten. Dabei helfen Dir die beiden folgenden Blöcke:

Block um letztes Element in einer Liste zu finden
Wert des letzten Elements

Block um vorletztes Element in einer Liste zu finden
Wert des vorletzten Elements

Das Element am Listen-Ende Letzter Drehwinkel muss beim Rückweg ignoriert werden, da der Roboter den letzten Drehe-Block im Hauptprogramm nicht ausgeführt hat (da Entfernung < 30 cm). Statt dessen soll der mBot mit einer halben Drehung (180°) wenden, damit er für den Rückweg in der richtigen Richtung steht. Das letzte Element der Liste kann gelöscht werden:

Block um letztes Element in einer Liste zu löschen

In einer Wiederhole-Bis-Schleife wird dann jedes Datenpaar aus Länge und Winkel zuerst eine Fahrt nach vorne mit entsprechender Länge und dann eine Drehung um den richtigen Winkel ausgeführt. Die Drehung übernimmt der Drehe-Block. Anschließend werden die beiden Elemente am Ende der Liste entfernt.

Fahre Zurück Code

So verkürzt sich die Liste bei jedem Schritt um zwei Elemente. Am Schluss bleibt das 1. Längensegment übrig, das mit einem eigenen Bewegungsblock abgefahren wird. Dann werden die LEDs ausgeschaltet und der Roboter steht hoffentlich wieder auf dem Startpunkt. Fertig!