Skip to main content

Controllore: Esplorazione del Tank Drive - Python

Icona della cassetta degli attrezzi dell'insegnante 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à:

  1. Esplora il progetto di esempio Tank Control.
  2. Comprendere l'uso della struttura while True ciclo infinito .
  3. Completa la sfida Robo-Slalom!

Icona Suggerimenti per gli insegnanti Suggerimenti per gli insegnanti

Se è la prima volta che uno studente utilizza VEXcode V5, potrà accedere a numerosi articoli utili  nella VEX Library.

Materiali richiesti:
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

Icona Suggerimenti per gli insegnanti 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

VEXcode V5 con l'inizio di un comando Drivetrain digitato a sinistra e, a destra, viene visualizzato un elenco scorrevole di opzioni di completamento automatico per tale comando.

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. 

VEXcode V5 è mostrato con la casella degli strumenti aperta all'estrema sinistra e la guida per il comando Drive aperta all'estrema destra. La Guida mostra la definizione del comando e informazioni su come utilizzarlo.

Fase 1: Iniziamo a programmare il Controller.

  • Selezionare File e Apri Esempi.
  • Barra degli strumenti VEXcode V5 con il menu File aperto e la voce Apri esempi evidenziata in un riquadro rosso. Apri esempi è la quarta voce di menu sotto Nuovo progetto blocchi, Nuovo progetto testo e Apri.
  • Scorri i diversi progetti Esempio. Selezionare il progetto di esempio Tank Control.

Progetti di esempio in VEXcode V5 con un riquadro rosso attorno al filtro Sensing in alto e l'icona del progetto di esempio Tank Control in basso a destra.

  • 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:

  1. Prevedi cosa farà il Clawbot nel progetto. Non limitarti a spiegare semplicemente che il progetto utilizza il Controller.
  2. In che modo i joystick muovono il robot? Cosa sta facendo Clawbot?

Icona della cassetta degli attrezzi dell'insegnante Risposte alla cassetta degli attrezzi dell'insegnante -

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

Nella finestra di dialogo del nome del progetto in VEXcode V5 viene visualizzato Tank Control e viene mostrato che è selezionato lo slot 1.

  • Per ulteriori informazioni, guarda il video tutorial in VEXcode V5 che spiega come scaricare ed eseguire un progetto.

Barra degli strumenti in VEXcode V5 con un riquadro rosso attorno all'icona Tutorial. La barra degli strumenti mostra, da sinistra a destra, il logo V5, un'icona a forma di globo, File, quindi Tutorial.

  • Controlla le spiegazioni del progetto nel tuo quaderno di progettazione e aggiungi note per correggerle, se necessario.

Fase 2: Controller:  Controllo serbatoio

Icona della cassetta degli attrezzi dell'insegnante 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.

Icona della cassetta degli attrezzi dell'insegnante 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!

Icona della cassetta degli attrezzi dell'insegnante 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.

Uno snowboarder sta scendendo a valle su un pendio innevato, passando attraverso una serie di porte rosse e blu posizionate a zigzag

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.

Illustrazione di un percorso di slalom sulla neve, con l'etichetta "Partenza" in alto e la linea del traguardo in basso. Nel mezzo, un percorso a zigzag punteggiato si snoda tra bandiere blu e rosse alternate.

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?
     

Icona di discussione motivata 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.