Controllore: Esplorazione del Tank Drive - Python
Toolbox per l'insegnante
-
Lo scopo di questa sezione
Utilizzando il progetto di esempio Tank Control, gli studenti possono controllare il Clawbot tramite il controller. Gli studenti dovranno regolare i parametri nelle istruzioni left_motor.set_velocity(), right_motor.set_velocity(), left_motor.spin(), right_motor.spin(), left_motor_speed = controller_1.axis3.position() e right_motor_speed = controller_1.axis2.position() per controllare la velocità di ciascuno dei motori del Clawbot e consentire al controller di controllare le funzioni del motore.
Per maggiori informazioni su una qualsiasi delle istruzioni, visita la sezione della guida Python in VEXcode V5.
Di seguito è riportato uno schema di ciò che gli studenti faranno in questa attività:
- Esplora il progetto di esempio Tank Control.
- Comprendere l'uso della struttura while True ciclo infinito .
- Completa la sfida Robo-Slalom!
| Quantità | Materiali necessari |
|---|---|
| 1 |
Kit di avvio per la classe VEX V5 (con firmware aggiornato) |
| 1 |
VEXcode V5 (ultima versione, Windows, macOS) |
| 1 |
Quaderno di ingegneria |
| 1 |
Esempio di progetto di controllo del serbatoio |
| 2 o più |
Oggetti di classe da utilizzare come ostacoli |
Suggerimenti per gli insegnanti
-
Utilizzo del completamento automatico
Il completamento automatico è una funzionalità di VEXcode V5 che prevede il resto del comando che stai digitando. Mentre gli studenti lavorano in VEXcode V5, incoraggiateli a utilizzare la funzionalità di completamento automatico per aiutarli con la sintassi Python. Potresti notare una funzione di completamento automatico quando inizi a digitare l'istruzione. Utilizza i tasti "Su" e "Giù" per selezionare il nome desiderato, quindi premi "Tab" o (Invio/A capo) sulla tastiera per effettuare la selezione. Per maggiori informazioni su questa funzionalità, consulta l'articolo Python.

Questa attività ti fornirà gli strumenti per programmare il tuo Controller.
- Istruzioni Python VEXcode V5 che verranno utilizzate in questa esplorazione:
- imposta_velocità_motore_sinistra()
- imposta_velocità_motore_destra()
- motore_sinistro.spin()
- motore_destro.spin()
- controller_1.asse2.posizione()
- controller_1.asse3.posizione()
- mentre Vero:
- attendi(5, SECONDI)
Per maggiori informazioni su una qualsiasi delle istruzioni, visitare le sezioni Python help in VEXcode V5.

Fase 1: Iniziamo a programmare il Controller.
- Selezionare File e Apri Esempi.

- Scorri i diversi progetti Esempio. Selezionare il progetto di esempio Tank Control.
- Aprire il progetto di esempio Tank Control. Il progetto di esempio configura la trasmissione e il controller. Il codice apparirà come il seguente frammento:
# Library imports
from vex import *
# Begin project code
# Main Controller loop to set motors to controller axis postiions
while True:
left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
left_motor.spin(FORWARD)
right_motor.spin(FORWARD)
wait(5, MSEC)
Nel tuo quaderno di ingegneria esegui le seguenti operazioni:
- Prevedi cosa farà il Clawbot nel progetto. Non limitarti a spiegare semplicemente che il progetto utilizza il Controller.
- In che modo i joystick muovono il robot? Cosa sta facendo Clawbot?
Risposte alla cassetta degli attrezzi dell'insegnante
-
- Questo progetto utilizzerà la struttura a ciclo infinito while True per controllare continuamente la posizione del joystick sinistro e destro. Quando si spinge verso l'alto il joystick sinistro (o destro), la velocità viene impostata in base alla distanza in avanti a cui si spinge il joystick.
- Quindi, più si spinge in avanti il joystick, più velocemente verrà impostata la velocità e più velocemente si muoveranno i motori. Lo stesso concetto funziona anche spingendo indietro il Joystick. Quanto più indietro si spinge il joystick, tanto più velocemente i motori si muoveranno in retromarcia.
- Assegnare al progetto il nome TankControl. Salvare, scaricare ed eseguire il progetto Python TankControl.
- Per ulteriori informazioni, guarda il video tutorial in VEXcode V5 che spiega come scaricare ed eseguire un progetto.
- Controlla le spiegazioni del progetto nel tuo quaderno di progettazione e aggiungi note per correggerle, se necessario.
Fase 2: Controller: Controllo serbatoio
Toolbox per l'insegnante
-
Le strutture del ciclo infinito mentre sono vere
In questo passaggio viene analizzata l'importanza della struttura del ciclo infinito while True . Dovreste rivedere le informazioni come classe. Puoi modellare il comportamento con il tuo Clawbot e il tuo Controller oppure, se il tempo lo consente, chiedere agli studenti di eseguire il programma senza la struttura del ciclo infinito while True .
Se gli studenti hanno bisogno di ulteriore assistenza per comprendere il ciclo infinito while True , clicca qui.
Quali sono i vantaggi dell'utilizzo della struttura a ciclo infinito while True?
Ecco il nostro progetto senza la struttura del ciclo infinito while True:
# Library imports
from vex import *
# Begin project code
# Main Controller loop to set motors to controller axis postiions
left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
left_motor.spin(FORWARD)
right_motor.spin(FORWARD)
Cosa pensi che accadrebbe se questo programma venisse eseguito? Discutine in gruppo. Annota la tua previsione sul quaderno di ingegneria.
Toolbox per l'insegnante
-
Comprensione della struttura
Senza il ciclo infinito while True , il valore della velocità per ciascun motore viene impostato non appena il progetto viene eseguito e tale valore rimane costante finché il progetto non viene arrestato. In altre parole, se si esegue il progetto senza muovere nessuno dei due joystick, poiché la posizione predefinita del joystick sul suo asse è 0, la velocità di entrambi i motori rimarrà a 0, anche se si muove il joystick.
Allo stesso modo, supponiamo di spostare il joystick sinistro verso l'alto il più possibile lungo l'asse 3 e di tenerlo premuto in questa posizione. Se esegui il progetto sopra, il motore sinistro si muoverà alla massima velocità e manterrà tale velocità anche se sposti il joystick verso il basso lungo l'asse 3. Questo perché Clawbot riceve la sua istruzione iniziale dal Controller non appena il progetto viene eseguito; tuttavia, senza un Loop, quel valore iniziale non può essere aggiornato.
Il ciclo infinito while True indica al Clawbot di aggiornare costantemente la velocità e di continuare a funzionare per tutta la durata del progetto. In altre parole, il ciclo infinito while True , in questo progetto, consente di modificare la velocità di ciascun motore spostando il joystick lungo l'asse 2 o 3 e il Clawbot risponderà di conseguenza finché non si interrompe il progetto o non si spegne il Clawbot.
# Library imports
from vex import *
# Begin project code
# Main Controller loop to set motors to controller axis postiions
while True:
left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
left_motor.spin(FORWARD)
right_motor.spin(FORWARD)
wait(5, MSEC)
Percorri un percorso di slalom!
Toolbox per l'insegnante
-
Imposta l'attività
Organizzare gli studenti in piccoli gruppi da 2 o 4 studenti. Uno studente deve essere designato come conducente, ovvero la persona che utilizzerà il controller per manovrare il Clawbot.
Chiedi agli studenti di completare questo slalom utilizzando il controller per muovere il Clawbot lungo la parte esterna di ogni "bandiera". Il percorso del Clawbot deve impedirgli di toccare nessuna bandiera e consentirgli di tagliare il traguardo. Le bandierine possono essere costituite da qualsiasi materiale/oggetto scolastico che si ha a portata di mano (una gomma, un rotolo di nastro adesivo, una scatola di fazzoletti) e possono essere posizionate prima di azionare il Clawbot.
Se il tempo lo consente, fate invertire i ruoli tra gli studenti per dare ad altri l'opportunità di guidare il Clawbot. Si potrebbe anche trasformare il tutto in una competizione all'interno dei gruppi o tra gruppi, osservando la velocità con cui ogni pilota riesce a completare lo slalom.
Gli slalom sono percorsi nei quali il partecipante deve aggirare delle bandierine o dei segnali stabiliti. Lo slalom di sci è uno sport invernale molto popolare e fa parte delle Olimpiadi invernali.
Ora che il Controller è associato e il progetto Python è stato scaricato, sei pronto a muovere il tuo Clawbot utilizzando il Controller!
- Raccogli dall'insegnante i quattro oggetti che userai come bandiere nello slalom.
- Collaborare per posizionare le bandiere in modo che il conducente possa guidare il Clawbot, secondo lo schema dello slalom.
- Scarica il progetto di esempio Tank Control. In caso di domande su come scaricare un progetto, consultare il tutorial Scaricare ed eseguire un progetto.
Utilizza il controller per muovere il tuo Clawbot lungo la parte esterna di ogni "bandiera". Il percorso del robot deve impedirgli di toccare nessuna bandierina e consentirgli di tagliare il traguardo.
- Esegui il progetto e guida il Clawbot in avanti e indietro, e gira a sinistra e a destra usando entrambi i joystick.
- Calcola il tempo impiegato dal Clawbot per completare il percorso. Documentare i tempi nel quaderno di progettazione.
- Quanto velocemente riesci a far attraversare a Clawbot il percorso Slalom?
Motivare la discussione
-
Riflettere sull'attività
D: Il Clawbot ha risposto al Controller come ti aspettavi?
A: Le risposte possono variare; tuttavia, l'obiettivo di questa domanda è promuovere il pensiero cognitivo. Gli studenti hanno iniziato prevedendo i comportamenti prima di testarli, documentando i risultati e riflettendo.
D: Qual è la sfida più grande nello spostare il Clawbot in avanti o indietro in linea retta?
A: Sebbene le risposte possano variare, una risposta comune dovrebbe essere che entrambi i joystick devono muoversi in sincronia tra loro per garantire che i motori del Clawbot si muovano nella stessa direzione e alla stessa velocità.
D: In che modo l'utilizzo del loop infinito while True consente di utilizzare continuamente il controller per muovere il Clawbot?
A: Senza il ciclo infinito while True , il Clawbot eseguirebbe i comportamenti determinati dalle istruzioni nel progetto solo una volta. Il ciclo infinito while True indica al Clawbot di aggiornare costantemente la velocità e di continuare a funzionare per tutta la durata del progetto. In altre parole, il ciclo infinito while True ti consente di usare il controller per muovere il Clawbot indefinitamente, o finché la batteria non si esaurisce.