Robotica educativa

Robotica divertente: primi passi nella programmazione ideando giochi

Robotica divertente: primi passi nella programmazione ideando giochi

Negli Istituti Tecnici, al secondo anno, è previsto lo studio di una disciplina denominata Scienze e Tecnologie Applicate (S.T.A.). Lo scopo di questa materia, essenzialmente, è quello di fornire i rudimenti delle discipline di carattere tecnico, aiutando così i ragazzi ad orientarsi nelle scelta definitiva dell’indirizzo di studio nel successivo triennio. Nell’Istituto in cui insegno, ad esempio, esistono, tra gli altri, due indirizzi affini: Informatica ed Elettronica. Nelle seconde classi, quindi, mi trovo a formare alunni su argomenti riguardanti le basi di elettrotecnica ed elettronica ed i fondamenti di logica e programmazione.

Da un anno a questa parte ho deciso di introdurre la robotica anche nel programma di S.T.A. in quanto, a mio avviso, ideale per l’apprendimento di tali nozioni basilari, in maniera divertente e creativa. Trattandosi di seconde classi ho deciso di utilizzare il kit Lego Mindstorms EV3 il cui ambiente di sviluppo software visuale, ovvero una versione ridotta del LabView (National Instruments), è particolarmente intuitivo e versatile.

Supponiamo, ad esempio, di voler fare in modo che il robot avanzi fino al raggiungimento di una distanza prestabilita da un ostacolo ipotizzando che l’ostacolo venga rilevato grazie ad un sensore ad ultrasuoni. Una struttura delle istruzioni possibile potrebbe essere quella mostrata nella figura in alto. Come si nota, lo schema che ne risulta non appare particolarmente complesso.

Il rettangolo arancione centrale (con la freccia che torna indietro) rappresenta una istruzione iterativa: il contenuto del rettangolo si ripete finché non diventa vera la condizione di fine ciclo. Nel nostro caso, come mostrato, il ciclo termina quando il sensore ad ultrasuoni rileva una distanza minore di 5cm.

Il blocco verde posto internamente al costrutto iterativo rappresenta l’istruzione da ripetere: azionamento dei motori contrassegnati con B,C nel prototipo, con corrispondente spostamento in avanti.

L’ultimo blocco a destra istruisce il robot in modo che, al termine dell’iterazione, i motori si arrestino. Una volta ultimato il programma, questo viene inviato al prototipo (tramite Bluetooth o cavo USB) cliccando sul pulsante a forma di triangolo sulla sinistra e verrà immediatamente eseguito.

Per introdurre i primi rudimenti di informatica ed elettronica mi sono servito del prototipo visibile in foto, realizzato e perfezionato assieme ad allievi di classi superiori durante gli anni precedenti. Per prima cosa ho illustrato i vari componenti che lo costituiscono elencando le possibili interazioni che, grazie ad essi, il robot è in grado di avere con il mondo esterno. In tal modo ho avuto l’occasione di passare in rassegna alcune importanti tecnologie utilizzate nella realizzazione di sistemi automatici programmabili.

Come si può notare si tratta di un piccolo rover dotato di: un sensore anteriore ad ultrasuoni per rilevare ostacoli, due sensori di luminosità a riflessione orientati verso il basso per discriminare colori e livelli di luminosità, un giroscopio per rilevare spostamenti angolari in modo da compiere rotazioni perfette, due servomotori per lo spostamento, un servomotore per afferrare oggetti. Questo dispositivo, compatto e dall’aspetto simpatico, consente, in effetti, di affrontare agevolmente moltissime questioni basilari inerenti l’informatica e l’elettronica.

Pensiamo, ad esempio, al concetto di “iterazione” illustrato precedentemente e proviamo ad immaginare diverse modalità di spiegazione, tutte, vi assicuro, perfettamente realistiche.

Modalità A o del logico puro: spiego cosa è un diagramma di flusso, illustro a gesti come funziona un iterazione, faccio l’avvicente esempio del conto alla rovescia: parto da dieci e sottraggo uno fino a che non si ottiene zero. Risultato: il docente ha scritto alcuni numeri sulla lavagna, gli alunni li avranno copiati sul quaderno. Tempo necessario: una lezione.

Modalità B o dello smanettone. Spiego cosa è un diagramma di flusso, spiego cosa è un compilatore e come si usa, fornisco le nozioni base di un linguaggio di programmazione, illustro una delle possibili istruzioni iterative, faccio l’esempio del conto alla rovescia al computer. Risultato: i ragazzi avranno testato il programma al computer osservando una riga di numeri da 10 a 0. Molto importante: gli alunni avranno avuto modo di imbattersi nel tipico errore di terminazione del ciclo (incubo anche del programmatore più navigato) a causa del quale l’iterazione si ripete all’infinito. Ciò che avranno osservato sarà un incessante susseguirsi di cifre sul monitor, molto stile “The Matrix” e non privo di fascino.

Tempo necessario: almeno quattro lezioni.

 

Modalità C o del malato di laboratorio. Spiego come funziona il prototipo, spiego come si usa l’ambiente visuale di sviluppo, spiego cosa è un diagramma di flusso, mostro come si realizza una iterazione, faccio vedere come il robot avanza verso un muro e si ferma ad una certa distanza da esso. Risultato: i ragazzi avranno visto muovere un sistema automatico nel mondo reale grazie ad una istruzione iterativa (avanza finché la distanza dall’ostacolo non diventa quella impostata), avranno fatto essi stessi delle prove cambiando dei parametri quali velocità, distanza. Molto importante: anche in questo caso gli alunni avranno eventualmente verificato come un errore nel test di uscita del ciclo possa provocare il moto indefinito del robot il quale, nella migliore delle ipotesi, si schianta contro il muro (nella peggiore cerca di autodistruggersi precipitando da qualche banco). Entrambe le eventualità, di grande effetto visivo e quindi ottime per l’apprendimento.

Tempo necessario: almeno quattro lezioni.

 

In sintesi, una volta che i ragazzi avranno appreso (dal fare) un determinato concetto, sarà molto più semplice comprendere il necessario formalismo teorico ed in effetti è esattamente questo il motivo per il quale ho pensato di usare dei piccoli prototipi robotici anche nei corsi base di informatica ed elettronica.

In particolare, lo scorso anno, alcuni alunni della 2aB INF dell’I.T.T. Malafarina di Soverato, hanno ideato e sviluppato un piccolo gioco utilizzando il prototipo che ho illustrato in precedenza. E’ anche stato realizzato un video presentato in occasione della giornata dedicata al trentennale dell’Istituto.

Nel gioco si faceva uso del minirover, di alcune tessere colorate realizzate dai ragazzi e di un oggetto che fungeva da ostacolo. Il prototipo si muoveva su una superficie piana ruotando in una direzione piuttosto che un’altra in base al colore delle tessere che venivano poste sul percorso. Bisognava raggiungere l’ostacolo con la maggior precisione possibile (se il rover non fosse stato perfettamente parallelo all’ostacolo il sensore non lo avrebbe rilevato correttamente e non si sarebbe fermato) e con il minor numero possibile si rotazioni.

Nel programma troviamo l’implementazione di molti importanti concetti di programmazione base: l’iterazione, necessaria sia per l’avanzamento ed il corretto arresto del robot che per l’ottenimento di una rotazione precisa di 90°, l’istruzione condizionale grazie alla quale il prototipo era in grado di decidere la direzione in base al colore, l’uso dei sensori e dei servomotori (sia dal punto hardware che software).

In definitiva gli alunni hanno ideato un gioco e programmato un piccolo prototipo di robot autonomo, già al secondo anno, apprendendo divertendosi le preziose nozioni basilari per lo studio delle discipline di indirizzo.

  

Ing. Franco Babbo

Docente di Elettronica e Telecomunicazioni

 

nota: tutti i marchi registrati appartengono alle rispettive società proprietarie

RIFERIMENTI

logo icted

ICTEDMAGAZINE

Information Communicatio
Technologies Education Magazine

Registrazione al n.157 del Registro Stam­pa presso il Tribunale di Catanzaro del 27/09/2004

Rivista trimestrale  

Direttore responsabile/Editore-responsabile intellettuale

Luigi A. Macrì