Utilizzare i sensori
Ora useremo i sensori di prossimità per evitare che il robot cada fuori dal tavolo. Ci sono nove sensori di prossimità su ogni Thymio II: 5 nella parte anteriore, 2 sotto e 2 sul retro. Quelli sotto possono essere utilizzati per fermarsi al bordo del tavolo.
Sensore di prossimità
Un sensore di prossimità può misurare la distanza degli oggetti nelle vicinanze. Per fare questo si utilizzano due diverse componenti: un emettitore a infrarossi e un ricevitore. L'emettitore irradia luce infrarossa (invisibile a noi) e il ricevitore misura quanta di questa luce viene riflessa e torna indietro. Se un oggetto è vicino, una gran parte della luce viene riflessa da esso e ritorna al robot. Se l'oggetto è più lontano, solo una piccola parte della luce ritorna. In questo modo è possibile risalire alla distanza dagli oggetti.
Nel nostro caso i sensori inferiori verranno utilizzati per riconoscere il bordo del tavolo. Mettete il robot sul tavolo e osservate i valori della variabile prox.ground.delta in Aseba Sudio nell'area variabili (avendo cliccato aggiorna o selezionato auto).
Ora fatelo di nuovo tenendo il robot in aria. Potete vedere che il valore mostrato cambia molto.
Quando il robot è sul tavolo, i valori misurati sono sono intorno a 600 (molta luce ritorna). Quando è sollevato, i valori sono molto più piccoli (non molto luce ritorna). Quindi dovremo aggiungere al fondo del nostro codice questa condizione:
Se il valore di uno dei due sensori è troppo basso (tavolo non rilevato), fermiamo i motori. Ora si può vedere che il robot si fermerà al bordo del tavolo.
Il debugger
Può essere che durante il test del robot, vogliamo vedere più in dettaglio ciò che sta accadendo. Questo ci può aiutare a correggere gli errori nel nostro codice o per eseguire le istruzioni passo per passo. Nel nostro caso esamineremo cosa succede quando il robot raggiunge il bordo del tavolo.
In ASEBA Studio, se facciamo tasto destro del mouse sulla linea:
call leds.top(32, 0, 0)
possiamo selezionare Inserisci breakpoint per inserire un punto di arresto nel codice
Il punto di arresto è indicato da un quadrato rosso a sinistra.
Ciò significa che quando si arriva a questo punto, il robot attenderà indefinitamente, fino a quando non diciamo di continuare.
Proviamo. Per prima cosa dobbiamo togliere il segno di spunta nella casella auto se vogliamo rilevare i valori al punto di interruzione. Una volta che il punto di interruzione è impostato, possiamo far muovere il robot al bordo del tavolo. Si ferma; possiamo osservare la situazione in questo momento, per esempio noi vediamo qui che i sensori inferiori hanno misurato i valori 151 e 45 (non molta luce, quindi non viene rilevato il tavolo).
Appena clicchiamo dinuovo su Esegui il robot continua (si accende di rosso) fino al successivo punto di arresto. E' possibile rimuovere un punto arresto facendo click con il tasto destro del mouse sulla riga del punto di interruzione, e quindi selezionando la voce di menu Azzera breakpoint.