Skip to main content

Controller: Esplorazione del Tank Drive - C++

Icona della cassetta degli attrezzi dell'insegnante Toolbox per l'insegnante - Lo scopo di questa attività

Utilizzando il progetto di esempio Tank Control, gli studenti possono controllare il Clawbot tramite il controller. Gli studenti dovranno regolare i parametri nelle istruzioni LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed = Controller1.Axis3.position(), e rightMotorSpeed = Controller1.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, visitare la guida nella sezione  C++  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 del ciclo infinito while True  .

  • Completa la sfida Robo-Slalom!

Icona Suggerimenti per gli insegnanti Suggerimenti per gli insegnanti

Se è la prima volta che uno studente utilizza VEXcode V5, può accedere a molti utili articoli nella VEX Knowledge Base.

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 da usare come ostacoli in classe

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 usare la funzione di completamento automatico per aiutarli con la sintassi . L'articolo Completamento automatico spiega come usare la funzione di completamento automatico.

VEXcode V5 con la parte Drivetrain di un comando digitata a sinistra e, a destra, viene visualizzato un elenco scorrevole di opzioni di completamento automatico per quel comando.

 

Questa attività ti fornirà gli strumenti per programmare il tuo Controller.

Fase 1: Iniziamo a programmare il Controller.

  • Aprire il progetto di esempio Tank Control .
  • Esempio di icona di progetto raffigurante un carro armato posizionato sopra un controller di gioco, con l'etichetta "Controllo carro armato" sotto.

    Esegui le seguenti operazioni sul tuo quaderno di progettazione:

    Prevedi cosa farà il Clawbot in questo progetto. Spiega meglio di semplice fatto che il progetto utilizza il Controller.
    In che modo i joystick muovono il robot? Cosa sta facendo il Clawbot?

    
    	int main() {
    		// Initializing Robot Configuration. DO NOT REMOVE!
    		vexcodeInit();
    		// Begin project code.
    		
    		// Main Controller loop to set motors to controller axis positions
    		while (true) {
    		  LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
    		  RightMotor.setVelocity(Controller1.Axis2.position(), percent);
    		  LeftMotor.spin(forward);
    		  RightMotor.spin(forward);
    	  
    		  wait(5, msec);
    		}
    	  
    		return 0;
    	}
    

 

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.
  • Salva, scarica ed (C++) il progetto di esempio Tank Control .
  • Per , consulta le sezioni della libreria VEX su C++ oppure consulta il tutorial in VEXcode V5 che spiega come scaricare ed eseguire un progetto.

    Barra degli strumenti in VEXcode V5 con tutorial, sulla destra, evidenziata con un riquadro rosso. Da sinistra, la barra degli strumenti mostra il logo V5, un'icona a forma di globo, quindi File, Modifica e Tutorial.

     

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

Fase 2: Controller: Controllo del 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 .

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:


	int main() {
		// Initializing Robot Configuration. DO NOT REMOVE!
		vexcodeInit();
		// Begin project code.
		// Main Controller loop to set motors to controller axis postiions
		
		LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
		RightMotor.setVelocity(Controller1.Axis2.position(), percent);
		LeftMotor.spin(forward);
		RightMotor.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.

Fase 3: affronta 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 hai 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 scende a tutta velocità lungo un pendio innevato, passando attraverso una serie di porte rosse e blu disposte a zigzag.

Gli slalom sono percorsi nei quali il partecipante deve aggirare delle bandierine o dei segnali stabiliti. Lo slalom tra gli sci è uno sport invernale molto popolare e fa parte delle Olimpiadi invernali.

Ora che il controller è associato e il progetto C++   è 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.

Fase 4: Robo-Slalom

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