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.
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.

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.
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.
-
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 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.