In robotica
l’obstacle avoidance, ovvero l'evitamento degli ostacoli, ha il compito di soddisfare alcuni obiettivi di controllo soggetti a vincoli di non intersezione o di non collisione. Il sensore ad ultrasuoni può essere programmato per soddisfare questi vincoli e per far sì che il robot, ad esempio, si fermi appena incontra un oggetto davanti a sé. L’algoritmo risolutivo di questo problema è presentato tramite diagramma di flusso (Flowchart) nella Figura 4.
Per implementarlo in mBlock, inizia inserendo l’istruzione di avanzamento continuo, “
vai avanti alla potenza…”, togliendo dal movimento la dipendenza dal tempo perché non puoi sapere per quanto il robot dovrà muoversi prima di incontrare un oggetto. A questo punto devi effettuare l’azione di controllo sulla distanza dall’ostacolo: utilizza l’istruzione condizionale “
se… allora” e l’operatore (verde) “
minore di…” inserendo come primo parametro l’istruzione sensore (celeste) “
sensore ultrasuoni distanza (cm)” e come secondo parametro il
valore di soglia, cioè la distanza a cui vuoi che mBot si fermi. Se la condizione si verifica mBlock eseguirà le istruzioni inserite appena dopo la voce “allora”, altrimenti salterà il blocco e procederà con le successive: inserisci quindi l’istruzione “
fermare il movimento” e “
stop tutti” dopo “
allora” e, per verifica, inserisci invece la riproduzione di un suono dopo il blocco condizionale (si sentirà il suono fintantoché non verrà rilevato un ostacolo). Ricorda che il controllo va effettuato per tutta l’esecuzione dello script, quindi inserisci anche l’istruzione ciclica “
per sempre” racchiudendo il blocco condizionale (Figura 5). Se il robot non riesce a schivare in tempo l’ostacolo puoi cambiare i valori della distanza.