Skip to main content
Lehrerportal

Die Vision Data Challenge - C++

Lehrer-Toolbox-Symbol Lehrer-Toolbox - Der Zweck der Vision Data Challenge

Der Zweck der Vision Data Challenge besteht darin, sicherzustellen, dass die Schüler die Daten verstehen, die aus der Momentaufnahme des Vision Sensors gesammelt wurden, und wie die X- und Y-Werte in der Mitte berechnet werden. Ihre Schüler sollten dieses Labor auch mit einem Verständnis dafür abschließen, wie diese Daten interpretiert werden könnten (z. B. kann der zentrale X-Wert verwendet werden, um zu bestimmen, wo sich das Objekt relativ zum Mittelpunkt des Roboters befindet) und bewährte Verfahren zum Benennen von Objekten bei der Konfiguration.

Schnappschuss des Vision-Sensors aus der Konfiguration, die eine Hand zeigt, die ein gelbes Zahnrad hält. Über dem Getriebe befindet sich eine quadratische Überlagerung mit den oben aufgeführten Daten: Yellow Box, X 90, Y 62, B 102, H 98.

Schließen Sie die Vision Data Challenge ab, indem Sie die Fragen beantworten und die fehlenden Daten in Ihrem technischen Notizbuch ausfüllen.

  1. Welche dieser Anweisungen wurde verwendet, um den obigen Schnappschuss zu erstellen?
    1. Vision5.takeSnapshot(Vision5__REDBOX);
    2. Vision5.takeSnapshot(Vision5__YELLOWBOX);
  2. Geben Sie diese Werte ein:

    Die Vision Sensor-Befehle werden auf der linken Seite mit leeren Feldern aufgelistet, um ihre Werte auszufüllen. Von oben nach unten werden die Blöcke aufgelistet: Objektanzahl > 0, Objektanzahl, Objekt 0 Mitte x, Objekt 0 Mitte y, Objekt 0 Breite und Objekt 0 Höhe.

  3. Befindet sich die YELLOWBOX links oder rechts vom Mittelpunkt des Roboters?
  4. Liegt die YELLOWBOX über oder unter dem Mittelpunkt des Roboters?
  5. YELLOWBOX ist NICHT der beste Name, um diesem Objekt einen Namen zu geben, wenn Sie leicht erkennen möchten, welche Farbsignatur welche ist. Welcher von diesen ist ein besserer Name? Warum?
    1. YELLOWGEAR
    2. YELLOWCUBE

Lehrer-Toolbox-Symbol Lehrer-Toolbox - Antworten

Die Antworten der Schüler können als Klasse besprochen werden und/oder Sie können ihre technischen Notizbücher überprüfen, um sicherzustellen, dass sie die Aktivität erfolgreich abgeschlossen haben.

  1. Vision5.takeSnapshot(Vision5__YELLOWBOX);
  2. Abgeschlossene Daten, die auf die VEXcode-Befehle ausgerichtet sind. Antworten lesen, der Reihe nach, Objekte zählen > 0 = Wahr; Objekt zählen = 1; Objekt 0 Mitte x = 141; Objekt 0 Mitte y = 111; Objekt 0 Breite = 102; Objekt 0 Höhe = 98.
  3. Die YELLOWBOX befindet sich etwas links vom Mittelpunkt des Roboters, jedoch nur um einen Unterschied von 16,5 Pixeln (Mitte 157,5 - 141).
  4. YELLOWBOX ist etwas niedriger als der Mittelpunkt des Roboters, aber nur um einen Unterschied von 5,5 Pixeln (111 - Mitte 105,5).
  5. A. YELLOWGEAR

    Dies ist ein besserer Name, da er nicht nur die Farbe des Objekts, sondern auch den Objekttyp beschreibt. Es ist ein Zahnrad,  kein Kasten oder Würfel.

Erweitern Sie Ihr Lernsymbol Erweitern Sie Ihr Lernen - Verwenden Sie die Sensoranweisungen innerhalb eines Projekts

Nun, da einige der vom Sehsensor gemeldeten Daten besser verstanden werden, möchten die Schüler diese Sensoranweisungen möglicherweise innerhalb eines Projekts verwenden. Erlauben Sie ihnen, dies zu erforschen.

void has RedCallback() {

	Brain.Screen.setFont(mono40);
	Brain.Screen.clearLine(3);
	Brain.Screen.setCursor(3, 1);
	Vision5.takeSnapshot(Vision5__REDBOX);
  
	if (Vision5.objectCount > 0) {
	  Brain.Screen.print("Red Object Found");
	  Brain.Screen.newLine();
	  Brain.Screen.print(Vision5.objectCount);
	  Brain.Screen.newLine();
	  Brain.Screen.print(Vision5.objects[0].centerX);
	  Brain.Screen.print(Vision5.objects[0].centerY);
	  Brain.Screen.print(Vision5.objects[0].width);
	  Brain.Screen.print(Vision5.objects[0].height);
  
	} else {
	  Brain.Screen.print("No Red Object");
	}
  }

Fortgeschrittene Schüler können diese Anweisungen innerhalb eines Projekts verwenden, um Entscheidungen zu treffen.

Drivetrain.drive(forward);
	Vision5.takeSnapshot(Vision5__REDBOX);
	
	if (Vision5.objectCount > 1 && Vision5.objects[0].centerX > 157.5) {
	  Drivetrain.turnFor(left, 90, degrees);
	} else {
	  Drivetrain.turnFor(right, 90, degrees);
	}