Skip to main content

Lezione 3: Aggiunta del sensore Down Eye

Nella lezione precedente, il sensore di distanza è stato utilizzato per determinare se il robot VR ha rilevato o meno un oggetto e, in tal caso, ha guidato in avanti verso l'oggetto. Tuttavia, non sono stati utilizzati valori del sensore per determinare se il robot VR fosse vicino al bordo del parco giochi per fermarlo. Fermare il robot VR quando era vicino al bordo del parco giochi gli impedirebbe di allontanarsi lateralmente.Il codice del progetto è sul lato sinistro, con il parco giochi mostrato sul lato destro. Il robot VR si trova oltre il bordo rosso del parco giochi e ha smesso di muoversi in modo da non cadere dal bordo del parco giochi.

 

Così com'è, il progetto ripete i comportamenti di andare avanti e girare, per sempre. Tuttavia, non vi è alcuna condizione per verificare la presenza del bordo rosso intorno al Parco Giochi. Pertanto, il robot VR può cadere dal parco giochi quando si guida in avanti.

Una vista angolata del Dynamic Castle Crasher Playground che mostra il robot VR che spinge il blocco di un castello. Il robot VR si è fermato prima che il blocco del castello sia stato spinto fuori dal bordo del parco giochi.

Aggiunta del sensore Down Eye

È necessario un altro sensore affinché il robot VR sia in grado di determinare se è vicino al bordo del parco giochi o meno. Il sensore Down Eye può essere utilizzato per determinare se il robot VR è vicino al bordo del parco giochi rilevando il bordo rosso intorno al parco giochi.Una vista della parte inferiore del robot VR, con il sensore Down Eye del robot VR evidenziato.

I comportamenti di guida in avanti e di svolta devono solo ripetersi fino a quando il sensore Down Eye non segnala che viene rilevato il bordo rosso. Pertanto, il ciclo infinito while può essere sostituito con un ciclo while con una condizione not , per ripetere i comportamenti di guida in avanti e svolta finché non viene soddisfatta la condizione di rilevamento del bordo rosso.

  • Caricare il progetto Unit9Lesson2 dalla lezione precedente.

    def main():
    	while True:
    		# Il sensore di distanza rileva un castello?
    		
    		if front_distance.found_object():
    			# Crash castle detected by Distance Sensor
    			drivetrain.drive(FORWARD)
    		
    		else:
    			# Turn to find a castle using the Distance Sensor
    			drivetrain.turn(RIGHT)
    			
    		wait(5, MSEC)
  • Rinominare il progetto Unit9Lesson3.
    La barra degli strumenti VEXcode VR mostra i nomi del progetto evidenziati con una casella rossa. Il nome del progetto è Unità 9 Lezione 3.
  • Aggiungere un commento per indicare come verrà utilizzato il ciclo mentre con il sensore Down Eye. Il tuo progetto dovrebbe assomigliare a questo:

    def main():
    	# Cerca l'edificio mentre il bordo rosso non viene rilevato
    	mentre True:
    		# Il sensore di distanza rileva un castello?
    		
    		if front_distance.found_object():
    			# Crash castle detected by Distance Sensor
    			drivetrain.drive(FORWARD)
    		
    		else:
    			# Turn to find a castle using the Distance Sensor
    			drivetrain.turn(RIGHT)
    			
    		wait(5, MSEC)
  •  È necessario un comando per controllare continuamente il sensore Down Eye. Il robot VR dovrà ripetere questi comportamenti mentre il sensore Down Eye non rileva il colore rosso. Modificare la condizione del ciclo while inserendo la parola chiave not davanti alla condizione. Il tuo progetto dovrebbe assomigliare a questo:

    def main():
    	# Cerca l'edificio mentre il bordo rosso non viene rilevato
    	mentre non è vero:
    		# Il sensore di distanza rileva un castello?
    		
    		if front_distance.found_object():
    			# Crash castle detected by Distance Sensor
    			drivetrain.drive(FORWARD)
    		
    		else:
    			# Turn to find a castle using the Distance Sensor
    			drivetrain.turn(RIGHT)
    			
    		wait(5, MSEC)
  • Quindi, modificare la condizione da True al  comando down_eye.detect. Impostare il parametro su "ROSSO". Il tuo progetto dovrebbe assomigliare a questo:

    def main():
    	# Cerca l'edificio mentre il bordo rosso non viene rilevato
    	mentre non è down_eye.detect(ROSSO):
    		# Il sensore di distanza rileva un castello?
    		
    		if front_distance.found_object():
    			# Crash castle detected by Distance Sensor
    			drivetrain.drive(FORWARD)
    		
    		else:
    			# Turn to find a castle using the Distance Sensor
    			drivetrain.turn(RIGHT)
    			
    		wait(5, MSEC)
  • Apri il parco giochi dinamico Castle Crasher se non è già aperto ed esegui il progetto. Il robot VR si comporta come previsto? 
  • Quando questo progetto viene eseguito, il robot VR si dirigerà verso un oggetto rilevato e girerà a destra in caso contrario. Tuttavia, anche se il sensore Down Eye sta cercando il bordo rosso, al robot VR non viene detto cosa fare una volta rilevato il rosso, quindi continua a guidare e alla fine cade dal parco giochi.

    Una vista dall'alto verso il basso del parco giochi Dynamic Castle Crasher che mostra il robot VR che spinge un castello fuori dal bordo del parco giochi ma non cade anche fuori dal parco giochi.

Una volta soddisfatta la condizione del ciclo while , il flusso del progetto verrà eseguito all'esterno del ciclo  while.

Selezionare il pulsante Avanti per continuare con il resto della lezione.