Nella lezione precedente, hai imparato a codificare il braccio a 6 assi per raccogliere e posizionare un cubo sul pallet. In questa lezione, ti baserai su ciò che hai imparato per spostare più cubi sul pallet. Imparerai a:
- Pianifica le posizioni di consegna dei cubi che posizionerai sul pallet.
- Codificare il braccio a 6 assi per spostare con successo due cubi sul pallet.
Entro la fine della lezione, svilupperai il tuo progetto per raccogliere e posizionare quattro cubi sul pallet nell'attività.

Pensare al posizionamento sul pallet
Nella lezione precedente hai spostato un cubo sul pallet e lo hai posizionato al centro. Uno dei vantaggi della spedizione di grandi quantità di articoli utilizzando un pallet è che molti oggetti possono essere trasportati contemporaneamente. Per farlo in modo efficace, questi oggetti devono essere disposti in modo efficiente per consentire alle aziende di imballare di più su ogni pallet che spediscono.
Un pallet sarebbe un modo inefficiente e costoso per spostare uno o due piccoli oggetti, come la
situazione di posizionare un cubo al centro del pallet. Posizionare più cubi sul pallet,
tuttavia, rende la spedizione più efficiente ed economica. 
Per fare ciò, dovremo pensare a dove ciascuno dei cubi verrà posizionato sul pallet. Durante questa lezione imparerai come codificare il braccio a 6 assi per spostare più cubi e posizionarli efficacemente sul pallet insieme.
Posiziona il primo cubo
Il tuo progetto dalla lezione 2 ha spostato un cubo al centro del pallet. Il primo passo per posizionare più cubi è regolare la posizione di consegna per il primo cubo, posizionandolo sull' angolo del pallet.
Apri il tuo progetto dalla lezione 2 in VEXcode EXP.

Rinominare il progetto in Unità 7 Lezione 3 e salvarlo sul dispositivo.

Posizionare il Cubo sull'angolo del pallet.
Spostare manualmente il braccio a 6 assi in modo che il magnete tocchi la parte superiore del cubo.

Assicurarsi che il braccio a 6 assi sia collegato a VEXcode.
Selezionare l'icona Monitor nella barra degli strumenti per aprire il monitor.

Registra le coordinate x e y dalla console del monitor nel tuo quaderno di ingegneria. Queste saranno le coordinate x e y del punto di riconsegna per il cubo.
Ricordare che il braccio a 6 assi si sposterà sopra la posizione di discesa prima di spostare il cubo verso il pallet. Ciò significa che non è necessario registrare il valore z.

Inserisci le coordinate x e y della nuova posizione di consegna nel tuo progetto. La coordinata z deve rimanere la stessa, in modo che il braccio a 6 assi rimanga sopra la posizione di discesa.
Assicurati di utilizzare le tue coordinate, poiché quelle mostrate qui sono un esempio e possono variare dalle tue coordinate registrate.

Assicurarsi che il braccio a 6 assi sia collegato a VEXcode e che il cubo sia posizionato nella zona di carico.
Eseguire il progetto per testarlo. Osservare i comportamenti del braccio a 6 assi. Raccoglie e posiziona il Cubo sull'angolo del pallet come previsto? Perché sì o perché no?

Interrompere il progetto quando il braccio a 6 assi ha smesso di muoversi. Registra le tue osservazioni nel tuo quaderno di ingegneria.

Spostamento di un secondo cubo
Ora che il primo cubo si trova nella nuova posizione di consegna, c'è spazio sul pallet per
posizionare altri cubi. Gli stessi comportamenti utilizzati per spostare il primo Cubo verranno
ripetuti per spostare un secondo. Il braccio a 6 assi dovrà spostarsi nella stessa posizione di
prelievo, innestare il magnete, spostare il cubo sul pallet e rilasciare il cubo.
Esistono diverse strategie di codifica che puoi provare per spostare entrambi i cubi con successo.
Aggiunta di un blocco di ripetizione
Sapendo che una sequenza di comportamenti verrà ripetuta, la prima strategia da provare è utilizzare un blocco di ripetizione. Come appreso nell'Unità precedente, un blocco Repeat è utile per ripetere blocchi o una pila di blocchi in un progetto.
Aggiungi un blocco Repeat al tuo progetto sotto il blocco Set end effector, come mostrato qui.
Trascinare il blocco Move the Cube to the pallet Comment nel blocco Repeat, come mostrato qui. Questo trascinerà anche tutti i blocchi successivi nel blocco Ripeti.
Ora, tutti i blocchi necessari per prelevare e posizionare un cubo dalla posizione di prelievo all'angolo del pallet possono essere ripetuti.
Impostare il parametro nel blocco Repeat su 2.
Poiché si sta tentando di spostare due cubi sul pallet, i comportamenti verranno ripetuti due volte.

Leggi il codice che hai creato e prevedi cosa farà il braccio a 6 assi quando il progetto verrà eseguito.
Registra la tua previsione nel tuo quaderno di ingegneria. È possibile disegnare il percorso del braccio a 6 assi o disegnare dove verranno posizionati i cubi sul pallet.

Assicurarsi che il braccio a 6 assi sia collegato a VEXcode.
Eseguire il progetto per testarlo. Osservare i comportamenti del braccio a 6 assi quando il progetto viene eseguito.

Interrompere il progetto quando il braccio a 6 assi termina di muoversi. Registra le tue osservazioni nel tuo quaderno di ingegneria.
Il braccio a 6 assi ha spostato entrambi i cubi sul pallet con successo? Perché sì o perché no?

Questo non ha spostato il secondo cubo come previsto e ha causato un errore. Poiché il primo Cubo è stato posizionato in quella posizione, anche il secondo Cubo non può essere posizionato nella stessa posizione. Il braccio a 6 assi non è riuscito a raggiungere la posizione, quindi si è verificato un errore.
Per posizionare il secondo Cubo sul pallet, dovremo spostare questo Cubo in una posizione aperta sul pallet.
Sposta il secondo cubo rispetto al primo
Conoscere la posizione del primo Cubo sul pallet, significa che il Cubo successivo può essere posizionato rispetto al primo. Hai appreso il movimento relativo nell'Unità precedente e ora puoi applicare quei concetti per aiutare a posizionare il secondo Cubo.
Per raggiungere l'angolo successivo del pallet, il braccio a 6 assi si muoverà in direzione
positiva lungo l'asse y. 
Utilizzando ciò che è noto sulla dimensione del Cubo, è possibile determinare l'offset necessario per posizionare il secondo Cubo. L'offset è la differenza tra la posizione corrente e la posizione desiderata di un oggetto. Sul pallet, l'offset per il secondo cubo è la distanza tra il centro del primo cubo e il centro del secondo cubo nella posizione desiderata.
Dato che un cubo è largo 25 mm, possiamo approssimare che l'offset è di 50 mm.
Ora che conosci la distanza e la direzione del movimento relativo necessario, queste informazioni possono essere aggiunte al progetto.
Aggiungere un blocco di posizione Incrementa al progetto come mostrato qui.
Impostare il parametro y a 50. Indica un movimento relativo di 50mm lungo l'asse y.

Leggere il codice e prevedere il comportamento del braccio a 6 assi.
Registra la tua previsione nel tuo quaderno di ingegneria. Pensi che questo progetto posizionerà con successo entrambi i cubi nelle posizioni desiderate? Perché sì o perché no?

Assicurarsi che il braccio a 6 assi sia collegato a VEXcode. Eseguire il progetto per testarlo.
Osservare il comportamento del braccio a 6 assi.

Interrompere il progetto quando il braccio a 6 assi ha finito di muoversi. Registra le tue osservazioni nel tuo quaderno di ingegneria.
La tua osservazione corrispondeva alla tua previsione? I due cubi vengono spostati nelle posizioni previste sul pallet? Perché sì o perché no?

Come potresti aver previsto, questo progetto non sposta entrambi i cubi nelle posizioni previste. Il blocco di posizione Incremento ha spostato correttamente il Braccio a 6 Assi nella posizione desiderata per il secondo Cubo. Tuttavia, poiché tutti i comportamenti sono stati ripetuti, entrambi i cubi sono stati spostati in questa posizione. Questo ha creato lo stesso errore del progetto precedente, solo in una posizione diversa sul pallet.
L'obiettivo è posizionare il primo cubo nella prima posizione e il secondo cubo nella seconda posizione sul pallet. Per farlo con successo, il progetto deve tenere traccia di quale cubo viene spostato. Se il primo Cubo viene spostato, dovrebbe andare nella prima posizione. Se il secondo Cubo viene spostato, può essere posizionato nella seconda posizione.
Spostamento di due cubi utilizzando variabili e un blocco If then
Per tenere traccia di quale Cubo viene spostato, è possibile creare una variabile e utilizzarla nel progetto per "contare" essenzialmente i Cubi man mano che vengono manipolati. Una variabile può essere utilizzata per memorizzare informazioni su quale cubo viene spostato. Queste informazioni possono quindi essere utilizzate per prendere una decisione all'interno del progetto: se il braccio a 6 assi sta spostando il secondo cubo, dovrebbe spostarlo nella seconda posizione sul pallet.
Crea una variabile e chiamala CubeCount. Seleziona Invia per creare la variabile.
Puoi rivedere l' Unità 6 Lezione 2 per i promemoria su come creare una variabile in VEXcode.

Aggiungere il blocco Imposta variabile al progetto sopra il blocco Ripeti, come mostrato qui.
Impostare il parametro su 1. Assicurarsi che la variabile CubeCount sia selezionata nel menu a discesa.
All'avvio del progetto verrà prelevato il primo Cubo. Poiché lo scopo di questa variabile è numerare il cubo che viene spostato, per iniziare deve essere impostato su "1".

In precedenza è stato aggiunto un blocco di posizione Incremento per spostare il braccio a 6 assi nella seconda posizione di discesa. Per spostare il primo cubo nella posizione di consegna, è necessario eliminare questo blocco.
Fare clic con il pulsante destro del mouse sul blocco Incrementa posizione ed eliminarlo, come mostrato qui.
Aggiungere un blocco Modifica variabile nella parte inferiore del blocco Ripeti, come mostrato qui.
Quando il progetto viene eseguito, il primo cubo verrà spostato nella posizione di consegna. L'aggiunta del blocco variabile Change qui farà aumentare il CubeCount dopo la consegna del primo Cube. Quando il blocco Repeat torna indietro per raccogliere il secondo Cubo, la variabile aumenta di '2', indicando che il secondo Cubo viene spostato.
Ora che il progetto sta memorizzando informazioni sul numero di cubi, possiamo utilizzare tali
informazioni per prendere una decisione. Un blocco If then ci consente di porre
una domanda all'interno di un progetto e di utilizzare le informazioni (come il valore di
una variabile) per prendere una decisione. 
Il blocco If then è un blocco C che accetta i blocchi reporter booleani come condizione. Un blocco booleano restituisce una condizione come TRUE o FALSE e si inserisce all'interno di qualsiasi blocco con un input esagonale. Se la condizione risulta VERA, verranno eseguiti i blocchi all'interno del blocco C. Se la condizione viene segnalata come FALSA, il blocco If then verrà saltato nel progetto.
In questo caso, la condizione che stiamo cercando è che la variabile CubeCount sia 2. Se la variabile CubeCount è 2 , il braccio a 6 assi deve spostarsi nella seconda posizione sul pallet.
Pensiamo a dove nel progetto deve essere presa quella decisione. Il progetto preleverà il cubo
nella zona di carico, quindi si sposterà sopra la posizione di
consegna. Se CubeCount è 2, il braccio a 6 assi dovrà
eseguire un comportamento extra per spostarsi nella posizione del secondo pallet. 
Aggiungi un blocco If then al progetto come mostrato qui.

Aggiungere un Equal per bloccare nello spazio esagonale nel blocco If then, come mostrato qui.
Aggiungere la variabile CubeCount sul lato sinistro dell' operatore Equal to. Impostare il lato destro dell' operatore Equal su 2, come mostrato in questo video.
Se la variabile CubeCount è uguale a 2, la condizione booleana verrà riportata come VERA. Se CubeCount non è 2, la condizione booleana verrà segnalata come FALSA.
Aggiungere un blocco di posizione Incrementa all'interno del blocco C come mostrato qui.
Impostare il parametro y del blocco di posizione Incremento a 50.
Quando viene soddisfatta la condizione del blocco If then, verrà eseguito il blocco di posizione Incrementa all'interno del blocco If then. Ciò significa che se CubeCount è 2, il braccio a 6 assi effettuerà il movimento relativo alla seconda posizione sul pallet.

Leggere il codice e prevedere cosa farà il braccio a 6 assi quando il progetto viene eseguito.
Registra la tua previsione nel tuo quaderno di ingegneria.

Assicurarsi che il braccio a 6 assi sia collegato a VEXcode. Eseguire il progetto per testarlo.
Osservare il comportamento del braccio a 6 assi durante l'esecuzione del progetto.

Interrompere il progetto quando il braccio a 6 assi ha finito di muoversi. Registra le tue osservazioni nel tuo quaderno di ingegneria.
Il braccio a 6 assi si è mosso come previsto? Entrambi i cubi sono stati spostati sul pallet come previsto? Perché sì o perché no?

Per tua informazione
È possibile eseguire il progetto più volte, in modo da poter prestare attenzione ai
blocchi in esecuzione mentre il braccio a 6 assi si muove. Cerca l'evidenziazione
intorno ai blocchi mentre vengono eseguiti nel progetto, per aiutarti a capire meglio
quando viene eseguito il blocco If then. Puoi anche utilizzare la funzione
Step per eseguire il progetto un blocco alla volta, per aiutarti a vedere più
chiaramente il flusso del progetto con il blocco If then. 
Ricorda che puoi aggiungere una variabile al Monitor, per aiutare a vedere il valore CubeCount mentre il progetto è in esecuzione. Per aggiungere una variabile al monitor, trascinare la variabile nell'icona Monitor nell'area di lavoro, come mostrato in questo video. Mentre esegui il progetto, assicurati di guardare la variabile nel Monitor, per aiutarti a vedere la connessione tra il valore della variabile e il flusso del progetto.
Revisione del progetto
Rivediamo il processo di risoluzione dei problemi utilizzato per risolvere la sfida di posizionare due cubi sul pallet. Ci sono state diverse iterazioni del progetto per ottenere che il braccio a 6 assi spostasse entrambi i cubi come previsto:
- È stato aggiunto un blocco di ripetizione per ripetere i comportamenti necessari per raccogliere, spostare e consegnare un cubo al pallet.
- È stato aggiunto un blocco di posizione Incremento per spostare il secondo Cubo in una posizione aperta sul pallet.
- È stata aggiunta una variabile per contare i Cubi, in modo da poter prendere una decisione in base a quale Cubo veniva spostato.
- È stato aggiunto un blocco If then per prendere una decisione in base al valore della variabile.
Tutte queste iterazioni insieme hanno creato un progetto che ha raccolto e consegnato
entrambi i cubi con successo. Quando è stato prelevato il secondo cubo, il braccio
a 6 assi ha spostato nuovamente il cubo sopra la posizione di rilascio originale sul pallet.
Poi fu presa una decisione.
Poiché il CubeCount è '2', il blocco
all'interno del blocco If then viene eseguito, spostando il Cubo lungo
l'asse y nella posizione desiderata del pallet.
Il processo iterativo che hai intrapreso durante questa lezione è qualcosa che continuerai a fare ogni volta che risolvi una sfida con il braccio a 6 assi. È importante ricordare che la maggior parte delle sfide di codifica non verrà risolta perfettamente al primo tentativo. Questo processo di pianificazione, costruzione, test e valutazione può portare il tuo gruppo a trovare soluzioni creative. La maggior parte delle sfide può essere risolta in diversi modi, quindi impegnandoti in questo processo in modo collaborativo, puoi trovare la strategia che funziona meglio per il tuo gruppo.
Attività
Ora che hai spostato due cubi dalla zona di carico al pallet, praticherai queste abilità. In questa attività, svilupperai il tuo progetto da questa lezione per codificare il braccio a 6 assi che sposta quattro cubi sul pallet.

Attività: codificare il braccio a 6 assi per posizionare quattro cubi su un pallet.
- Pianifica come costruire il tuo progetto per codificare il braccio a 6 assi per
prelevare il cubo aggiuntivo dalla zona di carico e posizionarlo sul pallet
con il tuo gruppo. Assicurati di essere tutti d'accordo sul tuo approccio prima di
iniziare a modificare il progetto.
- Documenta il tuo piano nel tuo quaderno di ingegneria.
- Rinomina il tuo progetto Unità 7 Lezione 3 Attività e salvalo sul tuo dispositivo prima di iniziare a modificare il progetto.
- Modifica il progetto in VEXcode in modo che corrisponda al piano concordato dal tuo gruppo.
- Eseguire il progetto per testarlo. Posizionare manualmente il secondo, il terzo e il quarto cubo nella zona di carico una volta posizionato ciascun cubo.
- Il braccio a 6 assi sposta con successo i cubi come previsto? Dovrebbero esserci quattro cubi sul pallet. In caso contrario, continua a modificare il progetto fino a quando non hai posizionato correttamente tutti e quattro i cubi.
Verifica la tua comprensione
Prima di passare alla lezione successiva, assicurati di comprendere i concetti di questa lezione rispondendo alle seguenti domande nel tuo quaderno di ingegneria.
Domande sulla comprensione > (Google Doc / .docx / .pdf)
Seleziona Avanti > per passare all'attività Mettere tutto insieme.