Lezione 3: Utilizzo dei sensori e dell'elettromagnete per posizionare un disco nell'obiettivo
Aggiunta del sensore di distanza al progetto
Nella lezione 2, il robot VR ha guidato in retromarcia fino al punto di partenza per rilasciare il disco. Ciò ha richiesto all'utente di calcolare la distanza esatta da percorrere per il robot VR. Questo potrebbe non essere sempre possibile. Invece, il robot VR può utilizzare i valori del sensore riportati per raccogliere e rilasciare i dischi con precisione costante.
In questa lezione, il sensore di distanza verrà utilizzato per determinare dove il robot VR dovrebbe smettere di guidare quando ritorna alla meta. Questo sensore segnala la distanza dalla parte anteriore del robot VR all'oggetto più vicino utilizzando il comando get_distance Per utilizzare il sensore di distanza per riportare il robot VR all'obiettivo, è necessario che accada quanto segue:
- Il robot VR dovrà girarsi di 180 gradi in modo che il sensore di distanza sia rivolto l'obiettivo. Il comando turn_to_heading può essere utilizzato per garantire che il robot VR giri nella direzione corretta.
- Il robot VR utilizzerà il sensore di distanza con la parete posteriore del parco giochi per determinare dove far cadere il disco.
- Il robot VR guiderà verso l'obiettivo.

Per tua informazione
Il comando turn_to_heading gira il robot VR verso una direzione specifica utilizzando il sensore giroscopico. La direzione in cui il robot VR girerà (a sinistra o a destra) è determinata in base alla direzione corrente del sensore giroscopico. 
Il comando turn_to_heading viene utilizzato per dirigere il robot VR verso una direzione specifica, indipendentemente dalla posizione del robot VR. Quando si solleva o si rilascia un disco, il robot VR potrebbe andare fuori rotta. Utilizzando il comando turn_to_heading si garantisce che il robot VR si sposti nella posizione assoluta anziché in una posizione relativa alla direzione precedente.

Continua a costruire il progetto
- Continua a lavorare nel progetto Unit8Lesson3.
-
Aggiungere un comando turn_to_heading dopo il terzo commento. Impostare il parametro a 180 gradi, in modo che il progetto ora assomigli a questo:
def main(): #1. Drive al primo disco mentre non è down_eye.near_object(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. Prendi il primo magnete del disco .Energizza (BOOST) # 3. Guidare fino all'obiettivo drivetrain.turn_to_heading(180, GRADI) # 4. Rilasciare il disco nell'obiettivo -
Ora che il robot VR è orientato verso l'obiettivo, il robot VR dovrà tornare all'obiettivo. Aggiungi un ciclo while sotto il comando turn_to_heading , in modo che la terza sezione del progetto appaia così:
# 3. Guidare fino all'obiettivo drivetrain.turn_to_heading(180, GRADI) in condizione: wait(5, MSEC) - Per tornare all'obiettivo, il robot VR utilizzerà i dati del sensore di distanza per determinare quando il robot VR è all'interno dell'obiettivo. Come discusso nella lezione precedente, ogni quadrato della griglia sul Disk Mover Playground misura 200 millimetri (mm) per 200 millimetri (mm).

-
Utilizzando tali misurazioni, è possibile determinare che il centro dell'obiettivo si trova a circa 200 millimetri (mm) dalla parete del Parco Giochi.

-
Il robot VR dovrebbe guidare mentre il sensore di distanza segnala che il robot VR si trova a più di 200 millimetri (mm) dalla parete del parco giochi. Imposta la condizione del ciclo while sul comando get_distance con il parametro millimetri (mm). Quindi aggiungere l'operatore di confronto a maggiore di (>) 200. La terza sezione del progetto dovrebbe ora assomigliare a questa:
# 3. Guidare fino all'obiettivo drivetrain.turn_to_heading(180, GRADI) mentre front_distance.get_distance(MM) > 200: wait(5, MSEC) -
Aggiungi un comando drive in questo ciclo while , in modo che la terza sezione del progetto appaia così. Questo istruirà il robot VR a guidare in avanti mentre il sensore di distanza segnala una distanza superiore a 200 millimetri (mm).
# 3. Drive to the goal drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) -
Una volta che il robot VR ha raggiunto l'obiettivo (200 mm dalla parete), il robot VR dovrà smettere di guidare. Aggiungere un comando stop all'esterno del ciclo while , in modo che la terza sezione del progetto appaia così:
# 3. Guidare fino all'obiettivo drivetrain.turn_to_heading(180, GRADI) mentre front_distance.get_distance(MM) > 200: drivetrain.drive(AVANTI) wait(5, MSEC) drivetrain.stop() -
Ora che il robot VR è fermo nell'obiettivo, può far cadere il disco. Aggiungere un comando energize sotto il quarto commento e impostare il parametro su 'DROP'. La quarta sezione del progetto dovrebbe ora assomigliare a questa:
# 4. Rilasciare il disco nell'obiettivo magnet.energize(DROP) -
Il robot VR dovrà guidare in retromarcia a breve distanza per evitare di ribaltarsi o scontrarsi con i dischi. La collisione con un disco potrebbe potenzialmente far andare fuori rotta il robot VR. Il robot VR dovrà quindi ruotare in modo da essere nuovamente rivolto verso i dischi. Aggiungere i seguenti comandi dopo il comando di energizzazione finale come mostrato, per indicare al robot VR di guidare in retromarcia per 100 millimetri (mm) e tornare a una direzione di 0 gradi. Assicurarsi che i comandi siano rientrati correttamente nel progetto.
# 4. Rilasciare il disco nell'obiettivo magnet.energize (DROP) drivetrain.drive_for (REVERSE, 100, MM) drivetrain.turn_to_heading(0, DEGREES) - Aprire il Disk Mover Playground se non è già aperto ed eseguire il progetto.
-
Il robot VR avanza, raccoglie il primo disco, quindi si gira a una direzione di 180 gradi per affrontare l'obiettivo. Il robot VR utilizza quindi i valori del sensore di distanza per determinare quando interrompere la guida e rilasciare il disco.

Flusso del progetto per eliminare il primo disco nell'obiettivo
Notare come il ciclo while funziona con il sensore di distanza in questa parte del progetto.
- Il robot VR avanzerà mentre il sensore di distanza si trova a più di 200 millimetri dalla parete.
- Quando il sensore di distanza rileva che la parete del Playground è a meno di 200 millimetri (mm) di distanza, il progetto passerà al comando successivo al di fuori del ciclo mentre e il robot VR smetterà di muoversi.
- Il progetto continuerà, per eccitare l'elettromagnete per far cadere il disco nell' obiettivo.
- Quindi il robot VR si invertirà e ruoterà di 180 gradi per essere pronto ad affrontare il disco successivo.
Selezionare il pulsante Avanti per continuare con il resto della lezione.