Skip to main content
Lehrerportal

Wettbewerbsverbindung: Wendepunkt - C++

Turning Point vex Robotics Competition Field mit Spielelementen und Scoring-Bereichen in den Startpositionen für den Spielbeginn. Entlang der Rückwand befindet sich ein Netz mit einer Reihe von schwenkbaren Flaggen davor.
VRC 2018-2019 Wendepunktfeld

Roboterfähigkeiten

Beim Turning Point des VEX-Robotikwettbewerbs 2018 - 2019 mussten die Spieler unter anderem die Flaggen umschalten. Es gab insgesamt neun Flaggen: drei untere Flaggen, die vom Roboter umgeschaltet werden konnten, und die sechs hohen Flaggen, die nur umgeschaltet werden konnten, indem man sie mit Wettkampfballspielsteinen traf. Die Wettbewerbsteams mussten einen Weg finden, die höheren Flaggen mit einem Ballwerfer zu treffen. Wenn Sie sich vorstellen können, ist die Programmierung des Roboters, um die Fahnen mit Ballspielsteinen durch Messen zu treffen, möglicherweise nicht immer genau. Wenn der Roboter während des autonomen Zeitraums eine falsche Kurve fährt, besteht die Möglichkeit, dass keine der Flags getroffen wird, da die Berechnungen deaktiviert sind. In ähnlicher Weise kann es für die Herausforderung der Fahrfähigkeiten schwierig sein, den Roboter manuell so auszurichten, dass er den Ball richtig startet. Daher würden erfahrene Teams den Roboter mit dem Vision-Sensor programmieren, um Flaggen zu erkennen und den Roboter dann richtig auszurichten, um genaue Aufnahmen zu machen.

Erweitern Sie Ihr Lernsymbol Erweitern Sie Ihr Lernen

Um diese Aktivität zu erweitern, bitten Sie Ihre Schüler, ein Projekt zu entwerfen und zu skizzieren, bei dem sich der Roboter auf erkannte gelbe Objekte zubewegt, die sie möglicherweise für dieses Wettbewerbsspiel verwenden könnten!
Bitten Sie Ihre Schüler, Folgendes zu tun:

  • Öffnen Sie das Beispielprojekt Clawbot (Drivetrain, 2-motor, No Gyro).

    Das Vorlagenprojektsymbol lautet Clawbot Drivetrain, No Gyro am unteren Rand mit einem grauen Diagramm eines Roboters darüber, das angibt, welches Projekt ausgewählt werden soll.

     

  • Verwenden Sie das Beispielprojekt Detecting Objects (Vision) als Referenz bei der Programmierung des Vision Sensors (Google Doc / .v5cpp).
  • Fügen Sie den Vision-Sensor zur Clawbot-Konfiguration (Antriebsstrang, 2-Motor, kein Kreisel) hinzu und konfigurieren Sie den Vision-Sensor so, dass er rote und blaue Objekte erkennt. Klicken Sie hier für weitere Informationen.

    Das Fenster VEXcode V5 Devices ist geöffnet und die Auswahl für Add a Device zeigt den Vision Sensor in einem roten Feld auf der linken Seite an. Weitere Optionen sind Controller, Antriebsstrang, Motor und 3-Draht.

  • Programmieren Sie den Clawbot so, dass er sich auf das erkannte Objekt zubewegt. Der Clawbot kann sogar so programmiert werden, dass er seinen Arm hebt, als würde er eine Flagge schwenken!
  • Laden Sie das Projekt herunter und führen Sie es aus ( in C++), um zu beobachten, ob der Vision Sensor gelbe Objekte wie die gelben Kugeln im VRC Turning Point-Spiel erkennen kann. Wenn der Vision-Sensor Objekte erkennen kann, bewegt sich der Roboter basierend auf diesen erkannten Objekten? Wenn Sie Hilfe benötigen, sehen Sie sich das Tutorial-Video zum Herunterladen und Ausführen eines Projekts an.
  • Wenn es die Zeit erlaubt, richten Sie ein Spielfeld ähnlich dem Wendepunktfeld ein. Üben Sie die Verwendung des Vision-Sensors, damit sich der Roboter bewegen kann, um Punkte zu erzielen!

Sehen Sie sich die folgende Musterlösung an:

// Include the V5 Library
#include "vex.h"
  
// Ermöglicht eine einfachere Nutzung der vex Library


unter Verwendung des Namespace vex;
event checkRed = event(); event checkBlue
  = event ()
  ;

void hasRedCallback (
  ) {Brain.Screen.setFont (mono40)
  ; Brain.Screen.clearLine (1); Brain.Screen.setCursor (1,
    1); Vision5.takeSnapshot (Vision5 __
    REDBOX);
  if (Vision5.objectCount > 0
    ) {ArmMotor.spinFor (forward, 300
    , degrees); ClawMotor.spinFor (forward,
    100, degrees); Drivetrain.driveFor (forward,
    12, inches); ArmMotor.spinFor (reverse, 300, degrees
  ); ClawMotor.spinFor (
  reverse, 100,
  degrees);


}
  else {
  Brain.Screen.print ("No Red
  Object")}}


    void hasBlueCallback () {Brain.Screen.setFont (
    mono40); Brain.Screen.clearLine (3)
    ; Brain.Screen.setCursor (3, 1);
    Vision5.takeSnapshot (Vision5EBOX __); if5.count.arm.spinFor
    ( > 0, 90, degrees)
  ;
  ArmMotor.spinFor
    (reverse, 300, degrees)

;

ClawMotor.spinFor (reverse,
  100, degrees); NICHT ENTFERNEN!
  vexcodeInit();
  // register event handlers
  checkRed(hasRedCallback); checkBlue
  (hasBlueCallback);

  //läuft ständig, um nach neuen Sensordaten zu suchen,
  während (true)
    {checkRed.broadcastAndWait ();
    checkBlue.broadcastAndWait();
    wait(0.2, seconds);
  }
}