Skip to main content

Lezione 2: Guida alla lettera "A"

Utilizzo del sensore di distanza per evitare pareti 

Ora che hai imparato cosa sono gli operatori di confronto e come possono essere utilizzati in un progetto, applicherai questo apprendimento per guidare il robot VR alla lettera "A" nel parco giochi del labirinto a muro. Questo progetto utilizzerà il sensore di distanza per navigare attraverso il parco giochi del labirinto a muro senza sbattere contro i muri.

Nomina e salva il progetto

  • Avviare un nuovo progetto di testo e selezionare Wall Maze Playground quando richiesto. Piastrella di selezione Wall Maze Playground.
  • Denominare il progetto Unit5Lesson2.
    La barra degli strumenti VEXcode VR e la finestra di dialogo del nome del progetto al centro leggono l'Unità 5 Lezione 2.
  • Trascina, digita o copia un ciclo while e rimuovi il comando Drivetrain che viene compilato come parte del nuovo modello di progetto Testo, in modo che il progetto abbia questo aspetto. Si noti che il comando popolerà un ciclo while con un comando wait al suo interno. Non rimuovere il comando wait , ciò garantirà che il robot VR esegua correttamente il progetto.

    def main():
        while condizione:
            wait(5, MSEC)
  • Trascina, digita o copia il comando non in attesa drive all'interno del ciclo, in modo che il tuo progetto appaia così.

    def main():
        while condizione:
            drivetrain.drive(AVANTI)
    
            wait(5, MSEC)
    • Controllare che l'indentazione sia corretta e che il comando drive sia allineato con il comando wait .

Aggiungere la funzione get_distance e l'operatore maggiore di

  • Trascina o digita il comando get_distance nella 'condizione' del ciclo while , in modo che il tuo progetto appaia così. Digitare l'operatore maggiore di e il secondo operando come '50. 
  • def main():
        while front_distance.get_distance(MM) > 50:
            drivetrain.drive(FORWARD)
    
            wait(5, MSEC)
  • Aggiungi un comando stop all'esterno del ciclo while, in modo che il tuo progetto appaia così. Dopo il ciclo while è necessario un comando stop perché il robot VR continuerà a muoversi finché non riceverà l'ordine di fermarsi.

    def main():
        while front_distance.get_distance(MM) > 50:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
            
        drivetrain.stop()
  • Aprire la finestra Playground se non è già aperta, che si apra la finestra Wall Maze Playground ed eseguire il progetto.
  • Guardare il robot VR avanzare fino a quando il sensore di distanza segnala che la distanza tra il robot VR e la parete non è superiore a 50 millimetri (mm).Una vista dall'alto verso il basso del Wall Maze Playground con il VR Robot si è fermata di fronte alla prima parete di fronte alla posizione di partenza.
  • Ripristinare il parco giochi per riportare il robot VR alla posizione di partenza.

Continua il progetto fino alla lettera "A"

Utilizzando l'operatore maggiore di (>) con il comando get_distance come condizione del ciclo while, si ordina al robot VR di avanzare finché la distanza tra il robot VR e il muro è maggiore di 50 millimetri (mm). Una volta che il sensore di distanza segnala una distanza dal robot VR alla parete non superiore a 50 millimetri, il robot VR smetterà di guidare. Per passare alla lettera "A", il robot VR deve girare quando si avvicina al muro. 

Per guidare fino alla lettera "A", il robot VR dovrà rilevare due pareti e girare a sinistra quando vengono rilevate queste pareti. Quindi, il robot VR si fermerà quando rileverà la terza parete, situata dietro la lettera "A".
Una vista dall'alto verso il basso del Wall Maze Playground con il VR Robot nella posizione di partenza e tre frecce rosse che mostrano il percorso dall'inizio alla lettera A. La prima freccia si estende in avanti verso la parete opposta, la seconda freccia si estende da lì a sinistra per affrontare la parete successiva e la terza si estende da lì verso il basso fino alla lettera A.

  • Sostituisci il comando stop con il comando turn_for , in modo che il tuo progetto abbia questo aspetto. Il comando turn_for è necessario perché quando il sensore di distanza si trova a meno di 50 millimetri (mm) da un muro, il robot VR girerà a sinistra per proseguire verso la lettera "A".

    • Impostare i parametri della virata su "SINISTRA, 90, GRADI".
    def main():
        while front_distance.get_distance(MM) > 50:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
    
        drivetrain.turn_for(LEFT, 90, DEGREES)
    • Aggiungere un altro comando while loop con un comando drive all'interno sotto il comando turn_for . Imposta la condizione utilizzando il comando get_distance come primo operando, l'operatore maggiore di e la costante '50' come secondo operando.
        mentre front_distance.get_distance(MM) > 50:
            drivetrain.drive(AVANTI)
            attendere(5, MSEC)
    • Infine, aggiungi i seguenti comandi sotto il secondo ciclo while per indicare al robot VR di rilevare l'ultimo muro dietro la lettera "A" e poi di smettere di guidare. Assicurarsi che i comandi turn_for e stop siano al di fuori dei rispettivi cicli while .
        drivetrain.turn_for(SINISTRA, 90, GRADI)
    
        mentre front_distance.get_distance(MM) > 50:
            drivetrain.drive(AVANTI)
            wait(5, MSEC)
    
        drivetrain.stop()
    • Avviare il Wall Maze Playground se non è già aperto ed eseguire il progetto.
    • Guarda il robot VR guidare dall'inizio del labirinto a muro alla lettera "A", quindi fermati.

    Una vista dall'alto verso il basso del Wall Maze Playground con il robot VR nella posizione di partenza nella parte centrale inferiore del parco giochi. La lettera A si trova direttamente a sinistra del robot, separata da una parete corta.

    • Si noti che il robot VR non urta contro alcun muro mentre si dirige verso la lettera "A". Quando il valore del sensore di distanza segnala che il robot VR non si trova a più di 50 millimetri (mm) dalla parete, il robot VR viene incaricato di girare o fermarsi nel progetto.

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