Hauptmenü TMS Robotik AG

f2.1 Höhlenlabyrinth mBot 2 Extension mBot 2 Extension Labyrinth mBot 2 Mechanikteile ★ ★ ☆

Der Roboter soll selbstständig durch ein Höhlenlabyrinth steuern. Verwende den Ultraschallsensor, um die Umgebung zu vermessen. Der Roboter soll dorthin fahren, wo der größte Abstand gemessen wurde.
mBot 2 Roboter

Montiere den Sensor so am Roboter, dass er mit einem Servo-Motor gedreht werden kann und mit den gezeigten Drehwinkeln übereinstimmt. Achte darauf, dass das Kabel bei allen Winkeln lang genug ist.
Servo-Winkel

Der mBot soll nacheinander die folgenden Schritte in einer endlosen Schleife ausführen:

Hauptprogramm
  1. Fahre bis Hindernis: Fahre nach vorne, bis der Ultraschallsensor ein Hindernis in weniger als 15 cm Entfernung erkennt
  2. Scanne die Umgebung mit dem Ultraschallsensor und bestimme, in welchem Winkel der größte Abstand gemessen wird
  3. Drehe den mBot in diese Richtung

Fahre bis Hindernis

Der folgende Block startet die beiden Motoren, damit der mBot nach vorne fährt und wartet – während der Roboter fährt – bis der Ultraschallsensor eine Entfernung kleiner als 15 cm misst. Dann wird der mBot gestoppt.

Fahre bis Hindernis Code
Finde den richtigen Block um festzustellen, ob der Sensor eine Entfernung kleiner als 15 cm erkennt.

Scanne

Dieser Block dreht den Servomotor von rechts nach links und misst die Entfernung in verschiedenen Winkeln mit dem Ultraschallsensor.

Zu Beginn wird der Servo ganz nach rechts bewegt (Position ) und dann in 30°-Schritten nach links gedreht, bis zum linken Anschlag (Position 180°). Nach einer kurzen Pause wird jeweils die Entfernung gemessen.

Der Block verwendet zwei Variablen:

Scanne Code
Bei jeder Messung wird geprüft, ob die aktuell mit dem Ultraschallsensor gemessene Entfernung größer ist, als die bisher größte Entfernung aus der Variable (Max Entfernung).

Falls ja, wird der LED-Streifen auf weiße Farbe gesetzt, die Variable Max Entfernung auf den neuen, größeren Wert gesetzt und der aktuelle Winkel wird in der Variable Richtung gespeichert. Finde dafür die richtigen Befehle!

Drehe

Dieser Block dreht den mBot in die Richtung mit der größten gemessenen Entfernung (Variable Richtung). Dabei muss ein wenig gerechnet werden:
Drehe Code
Der Servomotor hat einen Winkelbereich von 0° (ganz rechts) bis 180° (ganz links), aber der mBot wird mit einem Drehwinkel von 90° rechts (entspricht dem Servowinkel von 0°) bzw. 90° nach links (entspricht 180°) bewegt.

Drehe Code
Finde die richtigen Formeln für die Drehung nach rechts und links und lasse deinen mBot im Labyrinth fahren!

Lust auf eine weitere Höhlenlabyrinth-Aufgabe? Dann schaue hier nach.

Python API

In Python kann der Ultraschallsensor mit dem Befehl
distance = mbuild.ultrasonic2.get(index = 1)
abgefragt werden. Der Rückgabewert distance ist die gemessene Entfernung in cm.

Der Servomotor an S1 wird mit dem Befehl
mbot2.servo_set(angle, "s1")
auf den Winkel angle Grad (°) gesetzt. Der Wertebereich liegt zwischen 0° und 180°.