mercoledì 1 maggio 2013

Per poter migliorare il nostro robottino dobbiamo imparare un nuovo elemento di programmazione. Fino ad ora abbiamo incontrato gli elementi di inizio e fine, il blocco che contiene "le cose da fare" e quello che invece contiene una domanda.
Con questi elementi siamo riusciti a far percorrere al nostro robottino un percorso "quadrato", ma per farlo abbiamo dovuto ripetere più volte gli stessi gruppi di istruzioni:



Sarebbe carino se potessimo dire al nostro robottino di ripetere una o più istruzioni una o più volte. Ebbene questo è possibile mediante il concetto di "ciclo" (in inglese "loop"). Con questo nuovo elemento il nostro programma si semplifica come segue:

Nel caso del percorso quadrato basta ripetere le stesse istruzioni 3 volte. In altre situazioni il "loop" potrebbe essere ripetuto all'infinito.

@@@@@@@

Il nostro robottino può fare già un po' di cose, ma non ha alcuna possibilità di "interagire" con quanto lo circonda: per fare questo occorre aggiungere i sensori e complicare i nostri programmi per utilizzarli.

Il primo sensore che aggiungiamo è quello di contatto, che equivale al nostro senso del "tatto". Da un punto di vista costruttivo è molto semplice: si tratta infatti di un interruttore.



La prima prova che facciamo è quella di collegare un sensore di contatto al "robottino" e di fargli emettere un suono quando il sensore viene toccato:


Ora che abbiamo capito come funziona, facciamo qualcosa di più complesso: una sorta di telecomando che ci permetta di controllare i movimenti del nostro "robottino". Montiamo 2 sensori di contatto su di un telaio e li colleghiamo al "robottino" e scriviamo un programma che si comporti come segue:
- se nessun sensore è premuto il "robottino" sta fermo;
- se si premono entrambi i sensori, allora il "robottino" va avanti;
- se si preme il sensore di destra, il "robottino" gira a destra;
- se si preme il sensore di sinistra, il "robottino" gira a sinistra;

dopo aver costruito il diagramma di flusso, il programma risultante è:



Bene, la lezione è finita. La prossima volta incontreremo nuovi sensori e daremo maggiore "intelligenza" al nostro amico digitale.

venerdì 15 marzo 2013

Quarta lezione del corso. Finalmente oggi abbiamo costruito il nostro primo robottino. Le istruzioni le abbiamo trovate su internet e precisamente qui: Castor bot.

Abbiamo impiegato circa un'ora e un quarto per costruire i nostri esemplari. Le difficoltà maggiori sono state quelle in cui si dovevano costruire pezzi con una simmetria non immediatamente chiara: tanto per intenderci quei pezzi che ad una prima occhiata non avevano una particolare differenza se guardati da una parte o dall'altra. Comunque con l'aiuto degli insegnanti le piccole "imprecisioni" sono state superate.

La fase di costruzione ha messo alla prova, più che in altre occasioni, la capacità di lavorare in gruppo: anche qui qualche aggiustatina da parte degli insegnanti si è dimostrata necessaria.

Alla fine il nostro robot era pronto, si trattava solo di programmarlo.

Abbiamo poi deciso di programmare il robot in modo che percorresse un quadrato. Abbiamo capito che  le istruzioni da inserire erano sempre le stesse ripetute più volte (quante?). A questo punto però è sorto sono sorti 3 problemi.

1. da che parte si muoverà il robot se gli dico di andare avanti? Per farlo la cosa più semplice è stata quella di utilizzare un programma banalissimo, costituito da una sola istruzione:


2. da che parte gira il robot se gli dico di andare a sinistra? Anche qui possiamo provare con un programma di una sola istruzione:


3. Noi dobbiamo far girare il robot di 90° a sinistra: come si traduce questo in termini di rotazioni? Questa volta abbiamo applicato la tecnica delle approssimazioni successive: abbiamo prima fatto girare il robot facendolo muovere di 1 rotazione e abbiamo visto che era troppo; abbiamo poi provato facendolo muovere di 0.5 rotazioni e abbiamo visto che era troppo poco; abbiamo provato con uno 0.75 e abbiamo visto che andava bene.

Nota: per risolvere questo problema si poteva utilizzare, ad esempio, la funzione di Feed-back offerta dal mattoncino dei motori ma questo lo vedremo la prossima volta.

Alla fine abbiamo programmato il robot con il seguente programma



e lo abbiamo provato sul pavimento: eureka! Che soddisfazione vedere il nostro robottino fare proprio quello che gli abbiamo chiesto. Il tempo della lezione è scaduto, ma altre sfide ci attendono e nuovi elementi verranno aggiunti per rendere il nostro "amico" più interattivo. Alla prossima!

lunedì 11 marzo 2013

Dopo una settimana di pausa, la terza lezione ci ha finalmente introdotti alla programmazione del kit Lego Mindstorms.

Ad ogni gruppo è stato assegnato un computer portatile, sul quale era stato pre-installato il SW Lego Mindsotrms disponibile con il kit che stiamo utilizzando. Il SW è in inglese ma questo non è un problema per gli alunni che rapidamente imparano i pochi termini che non conoscono o conoscono poco e che sono necessari all'utilizzo del SW stesso. A proposito, abbiamo subito insegnato loro ad utilizzare l'abbreviazione SW al posto della parola SoftWare.

Prima però di entrare nell'operatività della programmazione è stato spiegato loro uno schema che è stato poi seguito durante la lezione e verrà applicato di continuo anche nelle lezioni successive. E' stato spiegato loro che la programmazione del "robottino" è frutto del seguente "processo":

1. Pensare cosa vogliamo far fare al robottino
2. Tradurre questo pensiero in un diagramma di flusso
3. Scrivere il diagramma di flusso all'interno del SW di programmazione del robottino
4. "Scaricare" il programma appena scritto nel robottino
5. Far eseguire il programma al robottino

Ogni gruppo è stato invitato ad osservare il "mattonino intelligente", scoprendo che ha un "display", una porta USB e delle altre porte; è stato detto loro che ha anche un altoparlante.



E' stato spiegato loro come collegare il "robottino" al PC mediante il cavo USB e come lanciare il SW di programmazione. Una volta che la schermata del SW si è aperta davanti ai loro occhi abbiamo cominciato subito ad illustrare le "corrispondenze" tra i simboli che loro conoscono di un diagramma di flusso e i "blocchi" presenti nel SW.


A questo punto abbiamo proposto loro il primo programma: fare dire "Ciao!" (o meglio "Hallo!") al robottino. Secondo lo schema proposto abbiamo tradotto il nostro "pensiero" in un diagramma di flusso:


Il diagramma di flusso tradotto nel SW di programmazione è:


Ora che il programma è pronto non resta che "scaricarlo" nel robottino; questo si fa utilizzando il telecomando del SW di programmazione:


Mediante questo tool è possibile scaricare il programma nel robottino ed eseguirlo.

Il programma è poi stato complicato in più passaggi, aggiungendo nuovi blocchi fino ad arrivare al seguente:



Dopo esserci divertiti con il solo mattoncino intelligente, abbiamo collegato due motori alle porte B e C e abbiamo scoperto alcune delle funzioni del blocco di controllo motori:



facendo girare i motori per un po' di secondi, per un certo numero di rotazioni o di un certo angolo; abbiamo infatti scoperto che ogni blocco ha molti "parametri" che ne governano il comportamento:



Anche questa lezione è finita: la prossima volta costruiremo il primo robot e cominceremo a farlo muovere.

venerdì 22 febbraio 2013

Anche la seconda intensa lezione è andata!

1. Oggi abbiamo capito che in fin dei conti i robot sono fatti come noi: hanno un cervello (l'unità di controllo o computer), i sensi (che nel caso dei robot si chiamano sensori), le ossa (nel caso del kit Lego Mindstorms, i mattoncini e tutti i pezzi che permettono di costruire il robot) , i muscoli (i motori) e i nervi (i cavi elettrici) che collegano il tutto.



2. Ci siamo chiesti se i robot sono intelligenti oppure no: analizzando qualche video e facendo qualche esempio abbiamo capito che un robot fa solo e soltanto quello che gli è stato insegnato. Allora la domanda sorge spontanea: come facciamo ad insegnare qualcosa ad un robot?

3. Ho allora introdotto il concetto di "programma" come sequenza ordinata di istruzioni. Abbiamo capito che i programmi si possono scrivere in tanti modi e noi ne impariamo due: come elenco di istruzioni scritte o come un "diagramma di flusso", uno schema di cui abbiamo conosciuto i simboli di base. Eccoli:


4. Ho proposto un esercizio da svolgere in gruppo. Gli alunni dovevano scrivere un programma per far fare ad un robot un ben determinato percorso delimitato da alcuni "ostacoli" (degli astucci). Il percorso cambiava a seconda del colore di uno degli astucci. Il robot sapeva fare le seguenti cose: sapeva riconoscere gli ordini impartiti, sapeva riconoscere gli ostacoli, sapeva riconoscere il colore giallo e il colore rosso, sapeva camminare diritto e girare a destra o sinistra. Ecco lo schema del percorso:



Ogni gruppo doveva prima scrivere il programma in forma di sequenza di istruzioni e poi in forma di diagramma di flusso. I bambini sono riusciti a scrivere senza difficoltà il programma nella prima forma, mentre sono incappati tutti nello stesso errore nella fase di traduzione delle istruzioni in diagramma. Ecco la versione "sbagliata":


Avete capito l'errore? Per non lasciarvi troppo sulle spine ;) , ecco la versione corretta:


Gli alunni si sono divertiti a costruire i loro diagrammi e a lavorare in gruppo, ma non vedono l'ora di cominciare a costruire "qualcosa" con i mattoncini ... dunque alla prossima!

venerdì 15 febbraio 2013

La prima lezione è stata un successo! Gli alunni hanno partecipato attivamente, ponendo molte domande e svolgendo con impegno e creatività i compiti assegnati. Ecco il programma dettagliato della lezione:

1. Abbiamo preparato l'ambiente di lavoro: abbiamo messo i tavoloni (uno per ogni gruppo di lavoro) a ferro di cavallo, abbiamo collegato il proiettore e posizionato la lavagna (sì la lavagna con i gessetti, è molto utile). Sui tavoli non c'era nulla. Gli alunni si siedono sui tavoli, divisi per gruppi secondo le indicazioni delle insegnanti.

2. Ho messo uno scatolone al centro della stanza senza dire nulla agli alunni. Lo scatolone contiene uno dei modelli di "default" costruibili con il kit Lego Mindstorms - Retail (lo stesso kit che utilizzeremo per il corso): i "robogator", ovvero un coccodrillo robot. Non dico nulla sulla scatola, aspetto che siano i ragazzi a farmi domande.

3. Mi presento e chiedo a loro di presentarsi.

4. Comincio col chiedere se sanno cos'è un robot, se ne hanno visto uno, cosa credono che sia. Qui gli alunni si scatenano con suggerimenti e definizioni che scrivo con diligenza sulla lavagna: è importante far capire loro che il loro contributo è fondamentale.

5. Chiedo a loro di preparare la "copertina" del corso: un foglio A4 su cui scrivono il titolo del corso (Robot @ School), il loro nome e disegnano il loro robot. Alla fine ognuno, alzandosi in piedi, presenta alla classe il risultato dei propri "sforzi": qui la fantasia la fa da padrona e anche questo momento è motivo di domande (ma i robot sono femmina o maschio? sono buoni o cattivi? possono funzionare a benzina? ...)

6. Spiego poi l'origine ed il "significato" della parola Robot e con l'aiuto del proiettore faccio vedere alcune foto e filmati di robot veri. Assieme li analizziamo e cerchiamo di capire in cosa assomigliano a quelli che hanno disegnato, in cosa differiscono.
Presento anche le 3 leggi della robotica di Asimov e proviamo ad applicarle ai robot che hanno disegnato e a quelli che abbiamo visto.

7. A questo punto chiedo: ma voi lo avete mai visto un robot vero? E con un po' di scena estraggo il "robogator" dallo scatolone e lo metto in mezzo alla stanza, chiedendo a qualche alunno di "interagire" con lui. L'entusiasmo è grande! Dopo un po' di "gioco" con il robottino, lo spengo e spiego loro che questo robot è fatto con il Lego che loro stessi utilizzeranno a partire dalle prossime lezioni.



8. Con l'aiuto delle insegnanti consegnamo un kit Lego Mindstorms ad ogni gruppo e, supportati dalle nostre indicazioni, facciamo aprire le scatole e lasciamo che i bambini familiarizzino con i vari pezzi. Dopo una decina di minuti, riponiamo il materiale nei contenitori Ikea che abbiamo appositamente procurato.

9. Alla fine informo gli alunni dell'esistenza di questo blog.

La lezione è finita, ma i bambini chiedono già quando sarà la prossima volta che ci vedremo. Quindi ... alla prossima!

mercoledì 13 febbraio 2013


Domani si comincia! Un'esperienza nuova (almeno per me). Saranno coinvolte due classi della scuola primaria (due quarte) in un viaggio nel mondo della robotica e della programmazione. Utilizzerò il kit Lego Mindostorsm NXT e l'ambiente di sviluppo grafico NXT-G. Gli alunni impareranno a conoscere entrambi e con essi saranno guidati a realizzare (almeno) un paio di modelli robotici. Impareranno a risolvere problemi utilizzando le "scarse" risorse a disposizione. Toccheranno con mano il frutto del loro impegno ... sarà fantastico!

Ho strutturato il "corso" in 6 lezioni di 2 ore ciascuna con cadenza settimanale. Di volta in volta  pubblicherò l'indice delle attività previste. Con l'aiuto delle insegnanti posteremo anche un resoconto delle lezioni stesse.