home - progetti - L'inseguitore di linea (step 1)
L'inseguitore di linea (step 1)

Vi proponiamo un progetto di robotica educativa per la scuola secondaria di secondo grado (adattabile alla secondaria di primo grado). L’attività è stata lungamente sperimentata in ambito scolastico durante l’anno accademico 2016/2017.

Inseguire una linea è uno dei tipici problemi della teoria del controllo:...

  by Lorenzo Cesaretti
CATEGORIA
Robotica
Lego Mindstorms EV3

Introduzione

Vi proponiamo un progetto di robotica educativa per la scuola secondaria di secondo grado (adattabile alla secondaria di primo grado). L’attività è stata lungamente sperimentata in ambito scolastico durante l’anno accademico 2016/2017.

Inseguire una linea è uno dei tipici problemi della teoria del controllo: significa ottenere un comportamento desiderato da un sistema (il robot) che segue un certo riferimento (una linea).

Ma perché un robot dovrebbe seguire una linea? Sicuramente perché in questo modo lo si potrebbe far muovere con una certa sicurezza all’interno di uno spazio, senza dover ricorrere ad altri concetti ingegneristici come l’odometria [1].

Alcuni esempi dal mondo reale di robot che funzionano sfruttando questa soluzione:
- Ristoranti [2] [3] 
- Mondo industriale [4] 
- Mondo health care[5]

L’attività di seguito proposta è stata sperimentata con le classi terze o quarte dei seguenti Istituti:
- Liceo Scientifico e Scienze Applicate Leopardi di Recanati
- Liceo Scientifico e Scienze Applicate Galilei di Ancona
- Liceo Scientifico e Scienze Applicate Volta di Riccione
- Liceo Artistico Mannucci di Ancona

In particolare il gruppo di ricerca del prof. Scaradozzi (Laboratorio di Modellistica, Analisi e Controllo di Sistemi Dinamici, Università Politecnica delle Marche) ha impostato un lavoro di ricerca sul progetto di Alternanza Scuola-Lavoro svolto al Volta-Fellini di Riccione (in collaborazione con la startup TALENT). Ricerca poi pubblicata nell’articolo “An innovative approach to School-Work turnover programme with Educational Robotics”. [6] 

L’articolo è stato premiato come Best Paper alla conferenza Didamatica 2017, organizzata da AICA. Cosa che ci riempie di orgoglio.

Obiettivi e Competenze

- Costruire un semplice modello matematico rispetto ad un problema posto (inseguire una linea).
- Utilizzare elementi base di programmazione (esecuzione sequenziale, ciclica e condizionata di istruzioni).
- Scoprire e utilizzare gli elementi base della teoria del controllo (feedback o retroazione).
- Comprendere gli algoritmi utilizzati in gran parte dei sistemi automatici (industriali e non).
- Accrescere l’interesse verso le discipline STEM (Science Technology Engineering Maths).
- Migliorare la capacità degli studenti di lavorare in gruppo.
- Accrescere la consapevolezza degli alunni verso i propri processi cognitivi attraverso la valutazione dell’Alternanza.

Strumenti

- Computer
- Kit LEGO® Mindstorms EV3 Education
- Software LEGO® Mindstorms EV3 Home Edition 
- Un telo bianco su cui viene predisposto un percorso utilizzando, ad esempio, il nastro isolante nero da 1cm. Ricordatevi che più le curve saranno strette, più sarà complesso programmare il robot e trovare algoritmi adeguati per l’inseguimento della linea!

Metodologia didattica

L’approccio pedagogico alla base del progetto è il Costruzionismo, una teoria proposta da Seymour Papert partendo dal lavoro di Jean Piaget. L’apprendimento viene visto come una costruzione e ricostruzione di rappresentazioni mentali, più che come una trasmissione di conoscenza. Un apprendimento significativo si verifica con l’utilizzo di materiali manipolativi adeguati, che permettano la realizzazione di attività di costruzione di prodotti significativi (artefatti cognitivi) per lo studente. In questa senso, durante il progetto si è ipotizzato che la tecnologia e gli ambienti innovativi per l’apprendimento, adeguatamente introdotti nel setting didattico, potessero potenziare l’azione di apprendimento.  Gli artefatti cognitivi sono stati sia i robot, costruiti e personalizzati dagli studenti, che i programmi preparati all’interno dell’ambiente Lego® Mindstorms EV3 per la risoluzione dei problemi posti.

In questo lavoro vogliamo ricordare la definizione di robotica educativa:  
"Con il termine robotica educativa (in inglese Educational Robotics) si individuano strumenti, processi e metodologie basate sulle teorie costruttiviste, in cui l’apprendimento nasce dal poter costruire un vero e proprio oggetto. L’ideazione, la progettazione, la costruzione, l’assemblaggio e la programmazione di un robot consentono a studenti di tutte le età di poter “imparare a imparare." [7]

Altra metodologia adottata per la realizzazione del progetto è stata quella dell’apprendimento basato sulla risoluzione dei problemi e apprendimento: “challenge-based” [8]. All’inizio di ogni lezione è stato proposto un problema o una sfida che gli studenti hanno risolto lavorando in team; cosa che inserisce per merito anche l’apprendimento collaborativo tra le strategie scelte in fase di progettazione dell’attività.

Linee guida delle attività

Pre-requisiti:
- Conoscenza di base del kit LEGO® Mindstorms EV3 Education ed in particolare del sensore di luce e colore [9]
- Conoscenza di base del Software LEGO® Mindstorms EV3 Home Edition

La progressione didattica progettata per un percorso di 6 incontri (12 ore) è la seguente:
Incontro 1- Introduzione alla robotica, costruzione del robot
Incontro 2- Primi test di programmazione (accensione motori, test di utilizzo del sensore ad ultrasuoni per evitare ostacoli)
Incontro 3 - Trovare una linea nera e fermarsi (Leggere i valori rilevati dal sensore su nero e bianco)
Incontro 4 - Algoritmo ON-OFF
Incontro 5 - Algoritmo proporzionale (P controller)
Incontro 6 – Sfida Finale!

I primi due incontri
Nel primo incontro è importante:
- Formare i gruppi di lavoro;
- Definire e condividere con gli studenti gli obiettivi progettuali;
- Contestualizzare l’inseguitore di linea. A cosa serve questa tecnica? Quando viene usata? Si vedano ad esempio gli spunti nell’introduzione. [2] [3] [4] [5]

La contestualizzazione serve a far capire agli studenti che dovranno provare ad implementare un algoritmo reale, veramente utilizzato in campo ingegneristico, e non un qualcosa di esclusivamente didattico.
Dopo aver costruito il robot e aver fatto i primi test di programmazione (vedi incontro 1 e 2 “Robotcar e il moto rettilineo” [10]) si prosegue con la progressione didattica.

Incontro tre
Si può iniziare subito con un problema. Abbiamo un telo bianco, e su di esso una linea di scotch nero che forma un percorso.  Se il robot parte da un punto casuale dal telo, riusciamo a farlo andare avanti finché non trova la linea nera?
Una sfida di questo tipo permette di comprendere il funzionamento del sensore di luce presente all’interno del kit. Il sensore infatti, posizionato a pochi mm dal pavimento, rileva il livello di luce riflessa all’interno di un range che va da 0 a 100:
0 – Assenza di riflessione --> sensore puntato sul nero
100 – Massima riflessione --> sensore puntato sul bianco

Esempio 1. Se sappiamo che il robot parte posizionato su una zona di bianco, e deve arrivare sul nero e fermarsi l’algoritmo potrebbe essere di questo tipo:
Accendo i motori
Misuro con il sensore e aspetto di rilevare un valore < 20 (i valori iniziali saranno elevati --> il robot si trova sul bianco)
Spengo i motori

Perché non si usa un valore più vicino allo zero per individuare il nero?
Perché se si vuole che il robot si fermi abbastanza precisamente sopra il nero, non deve essere rilevata la linea “piena”, ma già quando il sensore si trova in parte sopra il nero si può dare il comando OFF ai motori.
Figura 4.1.1 riporta una possibile sequenza di istruzioni.

Esempio 2. Un altro possibile algoritmo potrebbe essere costruito sfruttando altri concetti, come l’esecuzione ciclica e condizionale di istruzioni:
         Accendi i motori
         Ripeti all’infinito
         Se il valore letto dal sensore < 20
            Spegni motore
            Interrompi il ciclo
         Altrimenti
            Non fare nulla            
 
Che in linguaggio Mindstorms EV3…

Il quarto incontro
E' il momento in cui gli studenti iniziato a “sbattere la testa” contro il problema principale. Provare a inseguire la linea!
Qui è sempre molto interessante lasciare ai ragazzi il tempo per costruire ipotesi di algoritmo in totale libertà, senza influenzare le loro scelte e sperimentazioni. Chiederanno sicuramente spunti e consigli.
Il supporto da parte del docente potrebbe arrivare sotto forma di ulteriori stimoli e quesiti: se partiamo dall’ipotesi che il robot si trova sopra la linea nera, qual è il valore desiderato, quello che il robot vorrebbe misurare di continuo (con il sensore di luce) durante il suo funzionamento?

La risposta più scontata è il valore del nero, perché questo significherebbe che il robot durante tutto il suo funzionamento si troverebbe sempre perfettamente sopra la linea nera.
Da cui possono nascere altri spunti. Ma se il robot si trova precisamente con il sensore sopra la linea, e ad un certo punto il valore di luce riflessa rilevato dal sensore aumenta, da che parte faccio curvare il robot per correggere la posizione e tornare sul nero? Destra o sinistra?
Come si vede dalla schematizzazione in figura 4.3.1, il valore aumenterebbe allo stesso modo in entrambe le direzioni, quindi non sarebbe possibile impostare un algoritmo risolutivo partendo da questa idea. Non potremmo mai sapere che curva imporre al robot per correggere la posizione e tornare al centro della linea nera!


Serve una soluzione alternativa! A questo punto gli studenti possono lavorare alla ricerca di un diverso valore da seguire, il nero “puro” non ci piace più.
In questa fase è fondamentale concedere loro del tempo per sperimentare alla ricerca di una soluzione alternativa ed efficace.

La soluzione su piatto d’argento che vi proponiamo è quella di scegliere come valore desiderato il 50% di bianco e il 50% di nero (tipica situazione ideale con bianco = 100 e nero = 0 tra cui si media ottenendo il valore 50), attuando poi la strategia in figura 4.4.1 con il sensore posizionato sull’estremità destra del nastro:

Ripeti all’infinito
   Acquisisco un valore dal sensore
    Se il valore letto > 50 (valore medio) à il robot si sta spostando verso il bianco (che sta alla sua destra)
       Il robot gira a sinistra
    Se il valore letto < 50 (valore medio) à il robot si sta spostando verso il nero (che sta alla sua sinistra)
       Il robot gira a destra

Che in Ambiente Mindstorms si potrebbe tradurre così

Questa soluzione si chiama ON-OFF perché il robot o gira a destra o a sinistra, sempre con gli stessi parametri di curvatura. Non ci sono altre possibilità!
Nello schema come valore medio si trova 38.5 perché in condizioni reali (in cui ci sono variabili da tenere in considerazione come la luce ambientale, il telo di un colore bianco non perfetto), non avremo mai come valori:
- Luce riflessa sul nero = 0
- Luce riflessa sul bianco = 100
E quindi il valore medio non potrà essere 50.

Gli studenti quindi dovranno misurare questi due valori e poi calcolare il valore medio reale tra i due, prima di costruire l’algoritmo.

Approfondimenti
A questo punto si potrebbe ragionare con gli studenti intono al concetto di feedback e alla differenza tra un robot che si muove in un ambiente conosciuto, sfruttando relazioni matematiche note, e il loro robot che si muove sfruttando le informazioni del sensore.
Se conoscessi la circonferenza della ruota del robot, e volessi farlo andare avanti di 2 metri, potrei calcolare quanti giri di ruota occorrono per coprire questa distanza. Stessa cosa se avessi a disposizione l’esatta velocità e accelerazione del robot: potrei sfruttare delle relazioni fisiche per ottenere il comportamento desiderato.
Queste tecniche di controllo del sistema vengono definite ad anello “aperto”.

Dopo aver osservato e studiato il sistema robot, definisco delle equazioni (circonferenza delle ruote, velocità, accelerazione) che mi permettano di controllare i motori senza l’utilizzo dei sensori.
Nota. Questa strategia si può scegliere solo in certi casi, ad esempio se conosco la stanza dove si dovrà muovere il robot e come sono posizionati eventuali ostacoli.
 
Una ulteriore tecnica di controllo è quella “ad anello chiuso” o retroazione (feedback) precedentemente utilizzata per impostare la strategia ON-OFF.
Se non si può conoscere nulla dell’ambiente in cui il robot si muoverà, c’è bisogno dei sensori per acquisire informazioni sullo stato del sistema (su come si sta attualmente comportando) così da poter decidere le correzioni future.

Chiariti questi concetti con gli studenti, si passa all’incontro successivo.

Il quinto incontro
Si potrebbe partire con questa sfida: migliorare l’algoritmo di controllo! Il robot oscilla molto sopra la linea con l’algoritmo ON-OFF, come possiamo vedere a questo video: https://www.youtube.com/watch?v=GvPImL3ISfA

Si può evitare (o diminuire) questa oscillazione?
Si può chiedere agli studenti a che cosa è dovuta, e come mai il robot si comporta in questo modo (lasciando sempre il tempo di riflettere, ipotizzare e sperimentare).

Il solito piatto d’argento… Il robot oscilla perché l’algoritmo ON-OFF prevede solo 2 stati, indipendenti dal valore rilevato dal sensore: gira a destra o gira a sinistra, sempre della stessa quantità! Ma i valori rilevati potrebbero essere infiniti, come si può intuire dalla figura 4.8.1, e quindi le correzioni da applicare al robot possono divenire di ordine “infinito”. La correzione cioè, dovrebbe essere proporzionale all’errore che il robot sta commettendo!

Che cosa significa errore commesso dal robot?
L’errore (indicato con e) non è altro che la differenza tra il valore acquisito dal sensore, e il valore desiderato (la media tra bianco e nero):

                                                           e = Valore_desiderato – Valore_acquisito
 
La correzione del robot (cioè quanto sterza) dovrebbe essere proporzionale a questo errore:

                                               Sterzata = Kp*( Valore_desiderato – Valore_acquisito)

Dove Kp rappresenta il coefficiente di proporzionalità a cui va assegnato un valore da trovare sperimentalmente.
In ambiente EV3 Mindstorms si potrebbe tradurre tutto con uno schema di questo tipo:

Nella figura 4.9.1 la costante Kp è stata impostata a 2.2, ma questo valore non è univoco!
Va trovata dagli studenti; dipende dalla velocità a cui si muovere il robot, da quanto è spessa la linea del percorso, dal tono di bianco del telo, dalla luce presente nella stanza. Insomma, gli studenti dovranno “smanettare” un po’ per trovare il giusto valore per questa costante, che dovrebbe essere compreso tra 0.5 e 3 (nel caso di un progetto di questo tipo).

Consiglio. Sarebbe interessante documentare il comportamento del robot in base ai diversi Kp assegnati.
Per trovare il valore migliore vale la pena consigliare agli studenti di impostare inizialmente 1, e poi procedere modificano di circa 0.2 la costante, fino ad arrivare al valore che li convince di più.

L’effetto che si ottiene si può osservare in questo video: https://www.youtube.com/watch?v=_TEmGwyW-rg

L’ultimo incontro
Per il sesto e ultimo incontro, è stata proposta una sfida che gli studenti hanno risolto ricombinando gli elementi visti fino a questo punto. E' stato chiesto loro di spostare un oggetto all’interno di un’area di sicurezza o di un magazzino (come se si dovesse programmare un robot industriale) nel minor tempo possibile, presentando loro un “ambiente” di questo tipo:

Il risultato della sfida è documentato in questo video: https://www.youtube.com/watch?v=7A-p5_sEXls

Come si può osservare, per risolvere il problema è stato necessario combinare quanto progettato in precedenza per inseguire la linea (scegliendo l’algoritmo migliore) e il lavoro fatto durante il secondo incontro con il sensore ad ultrasuoni.
Il progetto di Alternanza Scuola-Lavoro è terminato con questa lezione, ma molti elementi potrebbero essere ulteriormente sviluppati.

Ulteriori Sviluppi
Con studenti del quinto superiore, si potrebbero affrontare altri due argomenti:
Incontro 7 - Algoritmo proporzionale derivativo (PD controller)
Incontro 8 - Algoritmo proporzionale derivativo integrativo (PID controller)

Cioè un ulteriore sviluppo software implementando anche l’azione derivativa e integrativa, così da ottenere una delle strategie di controllo più famosa: il PID [11] 
Un’altra interessante sfida potrebbe essere quella di programmare il robot utilizzando altri linguaggi, come Java o Python (entrambi sono compatibili con il Lego Mindstorms EV3).
Insieme a 3 classi del Liceo Volta di Riccione si è anche utilizzato un robot costruito con la tecnologia Arduino (BYOR, sviluppato da Scuola di Robotica e Campustore) sempre con l’obiettivo di inseguire la linea!
Troppi possibili sviluppi per una sola scheda, non siate ingordi!

Risultati attesi

In questo caso possiamo parlare di risultati raggiunti.
I risultati sono strettamente connessi agli obiettivi precedentemente presentati:
- Costruire un semplice modello matematico rispetto ad un problema posto (inseguire una linea).
- Utilizzare elementi base di programmazione (esecuzione sequenziale, ciclica e condizionata di istruzioni).
- Scoprire e utilizzare gli elementi base della teoria del controllo (feedback o retroazione).
- Comprendere gli algoritmi utilizzati in gran parte dei sistemi automatici (industriali e non).

Per quanto riguarda questi primi 4 obiettivi, possiamo dire che:
- Il 100% degli studenti coinvolti (circa 60) è riuscito a risolvere il problema “base”, ossia inseguire la linea, arrivando a costruire l’algoritmo di controllo proporzionale.
- Il 25% degli studenti coinvolti (circa 15) è riuscito a risolvere la sfida finale, combinando creativamente quanto appreso durante il corso.

Per quanto riguarda gli altri 3 obiettivi:
- Accrescere l’interesse verso le discipline STEM (Science Technology Engineering Maths).
- Migliorare la capacità degli studenti di lavorare in gruppo.
- Accrescere la consapevolezza degli alunni verso i propri processi cognitivi attraverso la valutazione dell’Alternanza.

Si è deciso di creare un questionario di autovalutazione, caratterizzato dalle seguenti domande: 

DOMANDE CHIUSE
Q1- Ho capito le spiegazioni e le istruzioni che mi ha dato l'istruttore
Q2- L'istruttore è stato disponibile e attento alle mie domande e bisogni
Q3- Il metodo usato dall'istruttore è stato coinvolgente
Q4- È stato facile costruire i robot in gruppo
Q5- È stato facile utilizzare i software al computer
Q6- Ho frequentato volentieri le attività del laboratorio
Q7- Il clima in classe è stato sereno
Q8- Il lavoro nel mio gruppo è stato di collaborazione e sostegno
Q9- La mia relazione con uno o più compagni è migliorata
Q10- Ho trovato divertente e appassionante partecipare a questo tipo di alternanza Scuola-Lavoro
Q11- Mi piacerebbe prendere parte ad altri laboratori di Robotica più avanzati

DOMANDE APERTE
Che cosa hai imparato in questo laboratorio?
Qual è la cosa che ti è piaciuta di più di questo laboratorio?
Secondo te c'è stato qualcosa che non è andato bene?
C'è qualcos'altro che avresti voluto fare nel laboratorio?

Abbiamo proposto una scala Likert a 5 punti, attraverso la quale gli studenti hanno potuto manifestare il livello di accordo rispetto alle domande proposte:
1 = per niente
2 = poco
3 = abbastanza
4 = molto
5 = moltissimo

Le domande chiuse sono organizzate attorno ai 3 obiettivi a cui sono legate in questo modo:
- Accrescere l’interesse verso le discipline STEM (Science Technology Engineering Maths). Q1, Q2, Q3, Q6, Q10.
- Migliorare la capacità degli studenti di lavorare in gruppo. Q7, Q8, Q9.
- Accrescere la consapevolezza degli alunni verso i propri processi cognitivi attraverso la valutazione dell’Alternanza. Q4, Q5, Q11.

Le domande aperte sono state inserite per far esprimere gli studenti liberamente, scrivendo impressioni, osservazioni e critiche relativamente all’esperienza vissuta (ma la loro analisi si potrà trovare all’interno dell’articolo in uscita sulla rivista Mondo Digitale, come accennato nell’Introduzione).

Il grafico seguente contiene i punteggi (in valore medio) scelti dagli studenti nel compilare il questionario.

Possiamo concludere che i 3 obiettivi sono stati raggiunti in modo soddisfacente: infatti la media di ogni risposta è > di 3, la soglia minima che ci si era prefissati di raggiungere.
Da migliorare sicuramente il potenziamento del lavoro di squadra, obiettivo che ha ottenuto il punteggio più basso (barre in rosso all’interno del grafico).

Riferimenti e links

Norbert Wiener e la definizione di retroazione 
Vediamo come Norbert Wiener, grandissimo matematico statunitense, nella sua opera "Introduzione alla cibernetica - L'uso umano degli esser umani" ci spiega il concetto di retroazione: 

Con retroazione si intende “la proprietà di essere in grado di modificare il futuro comportamento tramite le performance passate”. 
“feedback, the property of being able to adjust future conduct by past performance” 

In un altro passaggio, troviamo anche questo esempio di funzionamento di un ascensore come applicazione pratica del feedback: 

“Se stiamo facendo funzionare un ascensore [Se siamo i progettisti dell’ascensore, NdR], non è sufficiente far aprire le porte esterne [in un qualsiasi momento, NdR] perché gli ordini che abbiamo dato dovrebbero far trovare l’ascensore davanti a quella porta [la porta dell’edificio, NdR] nel momento in cui le facciamo aprire. È importante che l’apertura delle porte sia dipendente dal fatto che l’ascensore sia realmente alla porta dell’edificio; diversamente se qualcosa può averlo trattenuto, il passeggero potrebbe cadere nella tromba. Questo controllo di una macchina sulla base dello stato attuale piuttosto che di quello previsto è conosciuto come retroazione […]”

La proposta di Seymour Papert
Una possibile attività di questo tipo venne proposta anche da Seymour Papert, in “Teaching Children Thinking”.
Nell’immagine 6.0.1, si vede come il “robot veicolo” utilizzato da Papert e caratterizzato da un sensore di luce riflessa (emettitore e ricevitore) posizionato nei pressi di una linea nera, rilevi un valore maggiore (light = 10) se interamente puntato sul bianco, un valore intermedio se puntato a metà tra bianco e nero (light = 3), un valore basso se puntato interamente sul nero (light = 0). 
Papert nel suo articolo utilizza queste immagini per spiegare il problema:

Per far sì che il robot insegua la linea Papert propone che lo studente implementi l’idea del feed-back (o controllo in retroazione), seguendo un modello di questo tipo:

E arrivando ad una procedura semplice come la seguente:

TO WALK
IF LIGHT < 4 ROTATELEFT
IF LIGHT > 6 ROTATERIGHT
FORWARD 1
WALK
END.

(Se la luce rilevata è < 4, gira a sinistra
Se la luce rilevata è > 6, gira a destra
Vai avanti di 1
….)

Si parla di robot che seguono una linea anche in “La fabbrica dei robot” di Augusto Chioccariello, Stefania Manca, Luigi Sarti, ed in questo caso l’attività è proposta addirittura per bambini della scuola dell’infanzia, come primo approccio alla robotica.

[1] http://www.diag.uniroma1.it/~deluca/rob1/17_PianifContrRobMob.pdf
[2] https://www.youtube.com/watch?v=sJ-FXGD5iJo
[3] https://www.youtube.com/watch?v=_Tdu2H1HHIA
[4] https://www.youtube.com/watch?v=FHDMN0gnGtA
[5] https://goo.gl/D2MG2r
[6] https://goo.gl/htXLUK
Una versione estesa dell’articolo (con un’analisi maggiormente approfondita dei dati) sarà pubblicata nei prossimi mesi sulla rivista Mondo Digitale.
[7] Definizione proposta da Emanuele Micheli di Scuola di Robotica in Human Centered Robotic Design.
[8] http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7971875
[9] https://shop.lego.com/en-US/EV3-Color-Sensor-45506
[10] https://www.weturtle.org/project-detail.php?id=15
[11] http://www.ni.com/white-paper/3782/en/



Hai letto la lezione? Che cosa ne pensi? Lascia un commento qui sotto!