Macchine a guida autonoma – Gli ostacoli
Obbiettivo: Capire il come funzionano il sensore di linea e il sensore ad ultrasuoni. Utilizzarli nei progetti attraverso i relativi blocchetti di mBlock.
Problema
Negli ultimi anni tutte le case produttrici di automobili si sono concentrate nel rendere le vetture intelligenti, ovvero in grado assistere il conducente durante la guida segnalandogli ostacoli o persone nelle vicinanze.
Prova anche tu a rendere intelligente mBot per fargli rilevare in autonomia un ostacolo e farlo muovere senza dargli istruzioni specifiche. mBot dovrà arrestarsi se dovesse rilevare un ostacolo di fronte al sensore e in alternativa se il percorso fosse libero procedere.
A cura di Davide Emanuele Betto.
Materiali
Materiali necessari
- Pc
- mBot
Materiali aggiuntivi non obbligatori:
- Percorso fornito da mBot
- Scotch nero o nastro isolante
- Foglio di carta grande
- Pennarello
Progettazione & implementazione
Per progettare un software così complesso devi sapere come funzionano il sensore di linea, il sensore ultrasuoni (per rilevare gli ostacoli) e dove sono posizionati sul robot.
Il sensore di linea
figura 1
Il sensore di linea permette al robot di percepire i colori bianco e nero. mBot è equipaggiato di due sensori e si trovano sotto al suo musetto. Sono stati montati due sensori e non uno per facilitare la programmazione del robot.
figura 2
Essendo presenti 2 sensori possono verificarsi quattro condizioni.
- Entrambi i sensori si trovano sulla linea nera
- Il sensore di sinistra si trova sulla linea nera, mentre quello di destra no
- Il sensore di destra si trova sulla linea nera, mentre quello di sinistra no
- Entrambi i sensori non si trovano sulla linea nera
Come vedi dal disegno ogni volta che un sensore rileva un colore diverso dal nero avverte l’utente illuminando un led presente sul sensore.
Il sensore ad ultrasuoni
figura 3
Anche il sensore ad ultrasuoni è posto nella parte anteriore del robot e permette di rilevare ostacoli se posti di fonte. Il funzionamento è abbastanza semplice. Con un occhietto il sensore emette un’onda e con l’altro la riceve. Puoi capire qual è il trasmettitore e il ricevitore leggendo sotto gli occhietti i valori:
T: trasmettitore e R: ricevitore.
Immagina di tirare una pallina. Se davanti a te si trovasse un muro la pallina rimbalzerà indietro, altrimenti la pallina non tornerà più.
Il sensore funziona allo stesso modo. Se presente un ostacolo R riceverà indietro l’onda di T. Altrimenti non riceverà nulla.
Inoltre, se l’onda tornasse indietro velocemente l’ostacolo sarebbe vicino. Al contrario se tornasse molto lenta si troverebbe lontano.
gif 1 - Sensore ad ultrasuoni
Adesso, hai tutti gli elementi per progettare il sistema.
Prima di tutto pensa all’ostacolo.
mBot dovrà muoversi soltanto se di fronte a lui non sono presenti ostacoli, ovviamente l’ostacolo dovrà essere più alto dei suoi occhietti altrimenti l’onda emessa da T ci passerà sopra!
Quindi controlla che non ci sia nulla davanti e se la condizione risultasse vera prosegui con lo sviluppo. Se la condizione fosse falsa, ovvero se trovassi un ostacolo davanti allora arresta mBot.
gif 2 - Implementazione sensore ultrasuoni (scarica il file ad alta risoluzione)
Se non ci fossero ostacoli davanti allora dovrai controllare il sensore di linea. Crea due variabili: velocità e sensore.
Definisci velocità uguale a 100 mentre, quando non ci sono ostacoli poni sensore uguale al valore restituito dal sensore di linea, ricordando che può assumere valori 0,1,2,3 a seconda della situazione riportata nell’immagine precedente.
Tralasciando il caso 3, ovvero che il robot sia completamente fuori dal percorso, devi definire le situazioni 0,1,2. Hai bisogno di 3 costrutti “SE-ALTRIMENTI”.
Nel primo caso se il sensore fosse uguale a zero, il robot si troverebbe sulla linea e quindi procederebbe in direzione frontale. Altrimenti se il sensore fosse uguale a 1 il sensore di destra si troverebbe fuori dal percorso e quindi dovrai ruotare il robot verso sinistra per farlo rientrare.
Stessa cosa per il caso uguale a 2, ma verso destra.
Altrimenti se nessuna delle precedenti condizioni risultasse verificata, il robot dovrà marciare in retromarcia.
gif 3 - Implementazione sensore ultrasuoni (scarica il file ad alta risoluzione)
Infine, carica il programma sulla scheda mCore per eliminare i ritardi di comunicazione. Appoggia mBot sul percorso e testa il tuo programma.
Download
Qui invece, puoi scaricare i file contenenti la soluzione.
A cura di Filippo Lapide