Skip to main content

Lektion 3: Hinzufügen von Antriebsstrangbefehlen, um das Wandlabyrinth zu lösen

Lösung des Wandlabyrinthproblems

Wie würden Sie nun, da der VR-Roboter sowohl zum Buchstaben „A“ als auch zur Zahl „2“ auf dem Labyrinth-Wand-Spielplatz gefahren ist, ein Projekt erstellen, bei dem der VR-Roboter zu anderen Orten fährt, z. B. zum Buchstaben „B“? Bisher haben wir die Daten des Stoßfängersensors verwendet, um zu einer Wand zu fahren und dann zur nächsten Wand zu wechseln. Um zum Buchstaben „B“ zu navigieren, müssen wir in der Lage sein, den VR-Roboter an einen Punkt in der Mitte der Labyrinthoberfläche zu bewegen, damit er auf einen anderen Weg zu unserem Ziel gelangen kann.

Wenn der Code nur Drive und Turn_for Befehle enthielte, könnte der VR-Roboter im Abschnitt "2" des Wandlabyrinths "stecken bleiben", weil er weiterhin nach links oder rechts abbiegen würde, ohne jemals zu sichern.Eine Draufsicht auf den Spielplatz Wall Maze mit dem VR-Roboter, der über der 2-Markierung positioniert ist. Sie ist nach oben und links abgewinkelt und zeigt etwa zur B-Markierung.

Stattdessen können wir die Distanz von der letzten Wand, die der VR-Roboter berührt hat, bis zu der Stelle schätzen, an der er abbiegen muss. Wir können dann Antriebsstrangbefehle wie  drive_for und turn_formit den Schleifen while und Stoßfängersensordaten in unserem Projekt verwenden, um das Labyrinth zu lösen!

  • Ändern Sie zunächst Ihr vorheriges Projekt, erstellen Sie ein neues Projekt oder wählen Sie „Kopieren“ und fügen Sie diesen Code in VEXcode VR ein, um ihn an dieses Basisprojekt anzupassen.

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.stop()
  • Das obige Projekt beginnt, den VR-Roboter zum Buchstaben "B" zu fahren, aber damit der VR-Roboter dies tun kann, müsste er zuerst zurückfahren und dann nach links abbiegen.Eine Draufsicht auf den Spielplatz Wall Maze mit dem VR-Roboter, der über der 2-Markierung positioniert ist. Der VR-Roboter wird gegen die linke Wand gedrückt und zeigt auf die linke Wand, wobei grüne Pfeile nach rechts und dann nach unten zeigen und den Weg zeigen, den er nehmen muss.
  • Bearbeiten Sie den Code, indem Sie den Befehl stop entfernen und durch die Befehle drive_for und turn_for ersetzen.
    • Wir können schätzen, dass der VR-Roboter etwa 300 Millimeter (mm) rückwärts fahren muss. Stellen Sie zunächst die Parameter des Befehls drive_for auf „Rückwärts“ für 300 Millimeter (mm) ein.
    • Stellen Sie dann die Parameter des Befehls turn_for so ein, dass eine 90-Grad-Drehung nach links erfolgt. Ihr Projekt sollte nun so aussehen:

      def main():
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.turn_for (LEFT, 90, DEGREES)
      
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.turn_for (RIGHT, 90, DEGREES)
      
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.turn_for (LEFT, 90, DEGREES)
      	
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.drive_for (REVERSE, 300, MM)
      	drivetrain.turn_for (LEFT, 90, DEGREES)
  • Starten Sie den Wall Maze Playground , wenn er noch nicht geöffnet ist, und führen Sie das Projekt aus.
  • Wenn Sie diese Befehle hinzufügen, wird der VR-Roboter in die richtige Richtung ausgerichtet, um den Buchstaben „B“ zu steuern.Links das zuvor gezeigte Python-Codeprojekt, das mit drivetrain.turn_for (LINKS, 90, GRAD) endet. Rechts eine Draufsicht auf den Spielplatz Wall Maze, die zeigt, dass sich der VR-Roboter gemäß dem neuen Code bewegt hat, in der Halle zwischen den Markierungen A und 2 positioniert ist und nun zur unteren Wand des Spielplatzes zeigt.

     

  • Wählen Sie die Schaltfläche "Reset", um den Spielplatz zurückzusetzen und den VR-Roboter zurück in die Ausgangsposition zu bewegen.
  • Jetzt, da der VR-Roboter in die richtige Richtung ausgerichtet ist, fügen Sie die folgenden Befehle unter dem letzten turn_ for-Befehl hinzu, um den VR-Roboter zum Buchstaben "B" auf dem Wall Maze Playground zu fahren. Stellen Sie sicher, dass die Befehle in Ihrem Projekt korrekt eingerückt sind.

    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.stop()
  • Starten Sie den Wall Maze Playground , wenn er noch nicht geöffnet ist, und führen Sie das Projekt aus.
  • Der VR-Roboter fährt nun zum Buchstaben „B“ auf dem Wall Maze Playground.

    Eine Draufsicht auf den Spielplatz Wall Maze mit dem VR-Roboter, der über dem Buchstaben B in der Mitte der linken Wand des Spielplatzes positioniert ist. Es wird gegen eine Wand gedrückt, die der Oberseite des Spielplatzes zugewandt ist.

Mini-Herausforderung

In this challenge, the VR Robot should navigate to the number ‘3’ in the Wall Maze Playground using multiple while loops, Drivetrain commands, and the Bumper Sensor.

Eine Draufsicht auf den Spielplatz Wall Maze mit dem VR-Roboter über der Nummer 3. Die Zahl 3 befindet sich im oberen linken Quadranten des Labyrinths, oberhalb von B und rechts, innerhalb einer Ecke, die von 3 umgebenden Wänden gebildet wird. Der VR-Roboter wird gegen die Wand unterhalb der 3 Markierungen gedrückt, die dem Boden des Spielplatzes zugewandt sind.

Befolgen Sie diese Schritte, um die Mini-Herausforderung abzuschließen:

  • Sehen Sie sich das Lösungsvideo unten an und überprüfen Sie, wie der VR-Roboter fahren sollte, um die Mini-Herausforderung abzuschließen. Im folgenden Videoclip beginnt der VR-Roboter an der Startposition und folgt dem gleichen Fahrmuster zu einer Wand, bis die Stoßstange gedrückt wird und sich dann dreht. Der Roboter fährt den gleichen Weg, um anzufangen, wie er es getan hat, um zum Buchstaben B zu fahren. Am Wendepunkt von der Wand weg dreht sich der Roboter nach rechts, um zur Nummer 3 fortzufahren. Von diesem Punkt aus fährt er vorwärts und dreht zweimal nach links, um an den nächsten Wänden vorbeizukommen, vorbei am Buchstaben B. Schließlich fährt der Roboter vorwärts und dreht zweimal nach rechts, um an den letzten Wänden vorbeizukommen und Nummer 3 zu erreichen.

  • Erstellen Sie ein Projekt, indem Sie die erforderlichen Befehle zum Unit4Lesson3-Projekt hinzufügen oder entfernen, um den VR-Roboter zur Nummer ‘3‘ auf dem Wall Maze Playground zu fahren.
  • Starten Sie das Projekt, um zu testen, ob es funktioniert.
  • Wenn das Projekt nicht erfolgreich ist, bearbeiten Sie es und versuchen Sie es erneut. Fahren Sie mit diesem Vorgang fort, bis die Herausforderung abgeschlossen ist.
  • Sobald der VR-Roboter erfolgreich zur Nummer ‘3‘ auf dem Wall Maze Playground gefahren ist, speichern Sie das Projekt.

Herzlichen Glückwunsch! Du hast die Wandlabyrinth-Herausforderung erfolgreich abgeschlossen!

Fragen

Bitte wählen Sie unten einen Link aus, um auf das Lektionsquiz zuzugreifen.

Google Doc / .docx / .pdf