Wettbewerbsverbindung: Wendepunkt - C++
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 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).
- 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.
- 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);
}
}