Skip to main content
Portale insegnanti

La sfida dei dati di visione - C++

Icona della cassetta degli attrezzi dell'insegnante Toolbox per l'insegnante - Lo scopo della sfida dei dati sulla visione

Lo scopo della Vision Data Challenge è garantire che gli studenti comprendano i dati raccolti dall'istantanea del Vision Sensor e come vengono calcolati i valori centrali X e Y. Al termine di questo laboratorio, gli studenti dovrebbero anche comprendere come interpretare tali dati (ad esempio, il valore centrale X può essere utilizzato per determinare dove si trova l'oggetto rispetto al punto centrale del robot) e quali sono le migliori pratiche per denominare gli oggetti durante la configurazione.

Istantanea del sensore visivo dalla configurazione che mostra una mano che tiene un ingranaggio giallo. Sull'ingranaggio è sovrapposto un quadrato con i seguenti dati elencati sopra: Riquadro giallo, X 90, Y 62, W 102, H 98.

Completa la Vision Data Challenge rispondendo alle domande e inserendo i dati mancanti nel tuo quaderno di progettazione.

  1. Quale di queste istruzioni è stata utilizzata per scattare l'istantanea qui sopra?
    1. Vision5.takeSnapshot(Vision5__REDBOX);
    2. Vision5.takeSnapshot(Vision5__YELLOWBOX);
  2. Inserisci questi valori:

    I comandi del sensore visivo sono elencati sul lato sinistro, con le caselle vuote da compilare con i rispettivi valori. Dall'alto verso il basso sono elencati i blocchi: Conteggio oggetti > 0, conteggio oggetti, centro x oggetto 0, centro y oggetto 0, larghezza oggetto 0 e altezza oggetto 0.

  3. YELLOWBOX si trova a sinistra o a destra del punto centrale del robot?
  4. YELLOWBOX si trova sopra o sotto il punto centrale del robot?
  5. YELLOWBOX è NON il nome migliore da dare a questo oggetto se si desidera riconoscere facilmente a quale firma cromatica appartiene ogni colore. Quale di questi è il nome migliore? Perché?
    1. INGRANAGGIO GIALLO
    2. CUBO GIALLO

Icona della cassetta degli attrezzi dell'insegnante Risposte alla cassetta degli attrezzi dell'insegnante -

Le risposte degli studenti possono essere discusse in classe e/o è possibile rivedere i loro quaderni di ingegneria per assicurarsi che abbiano completato l'attività con successo.

  1. Vision5.takeSnapshot(Vision5__YELLOWBOX);
  2. Dati completati allineati ai comandi VEXcode. Le risposte sono, in ordine, conteggio oggetti > 0 = Vero; conteggio oggetti = 1; centro oggetto 0 x = 141; centro oggetto 0 y = 111; larghezza oggetto 0 = 102; altezza oggetto 0 = 98.
  3. YELLOWBOX si trova leggermente a sinistra del punto centrale del robot, ma con una differenza di soli 16,5 pixel (centro 157,5 - 141).
  4. YELLOWBOX è leggermente più in basso rispetto al punto centrale del robot, ma con una differenza di soli 5,5 pixel (111 - centro 105,5).
  5. UN. INGRANAGGIO GIALLO

    Questo è un nome migliore perché descrive non solo il colore dell'oggetto ma anche il tipo di oggetto. È un ingranaggio, non una scatola o un cubo.

Estendi la tua icona di apprendimento Amplia il tuo apprendimento - Utilizza le istruzioni di rilevamento all'interno di un progetto

Ora che alcuni dei dati segnalati dal Vision Sensor sono meglio compresi, gli studenti potrebbero voler utilizzare queste istruzioni di rilevamento all'interno di un progetto. Lasciate che esplorino questa possibilità.

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");
	}
  }

Gli studenti più avanzati potrebbero utilizzare queste istruzioni all'interno di un progetto per prendere decisioni.

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);
	}