Esercitazione di robotica con LEGO EV3
Misure di distanze
A cura del prof. Giuseppe SPALIERNO
Maggio 2020
Scopo di questa esercitazione è la misura della distanza tra il robot, in movimento rettilineo in avanti a bassa velocità costante, e un ostacolo fisso rilevabile.
Vengono eseguite 20 misure, una al secondo, a mano a mano che il robot avanza verso l’ostacolo.
Di particolare interesse è mostrare come sia possibile visualizzare i venti valori sul display del robot organizzati in colonne parallele ciascuna costituita da 5 valori. Inoltre vedremo come è possibile inserire questi 20 valori, interi o con una sola cifra decimale, in un file di testo, denominato “dist”, memorizzato nel robot in formato RTF, quindi leggibile da qualsiasi programma di elaborazione di testi.
In figura si mostrano i blocchi che risolvono le specifiche su indicate.
Il primo blocco dopo l’avvio è quello di accesso al file in modalità cancellazione che si evince dal simbolo del bidone della spazzatura.
È possibile effettuare l’accesso al file in lettura o in scrittura.
È, inoltre, possibile chiudere un file oppure cancellarlo definitivamente.
È necessario cancellare un file se si intende crearne un altro con lo stesso nome, altrimenti gli eventuali dati scritti nel file si aggiungono a quelli eventualmente già presenti. Il nome del file di testo è in alto al blocco e lo si inserisce facendo clic col mouse e scrivendo poi il nome prescelto, nel nostro caso “dist”.
Il secondo blocco pone il robot in movimento rettilineo con potenza 5%, quindi a bassa velocità.
Segue il blocco iterazione in modalità conteggio (#) che esegue i 3 blocchi ivi contenuti per 20 volte.
Il primo è il sensore di distanza ad ultrasuoni il cui cavo dati di uscita è collegato all’ingresso di testo del blocco di accesso al file “dist” in modalità scrittura.
Prima della ripetizione c’è una attesa di 1s attraverso il blocco timer col simbolo della clessidra.
Dopo l’acquisizione dei 20 valori si esce dal blocco di iterazione e si prosegue in un altro blocco di accesso al file “dist” in modalità chiudi contrassegnato da una x .
Segue il blocco display in modalità cancellazione in quanto, in corrispondenza della gomma, è presente il segno di spunta V anziché il segno X di falso.
Segue un doppio ciclo, uno nell’altro. Quello più esterno è ripetuto 4 volte e quello più interno è ripetuto 5 volte.
Il dato del file di testo “dist” collegato al display del robot viene posto nella posizione di coordinate x,y ove x=n*5 e y=m*2+3 ove n è il contatore del ciclo esterno ed m è quello del ciclo interno. I contatori dei cicli iniziano col valore 0 e si incrementano alla fine del ciclo. Il blocco “dist” è in modalità lettura sequenziale.
Quindi i primi 5 valori acquisiti vengono mostrati sul display in posizione (0, 3), (0,5), (0,7), (0,9) e (0,11) cioè nella colonna 0 posta a sinistra del display.
Il ciclo esterno viene ripetuto col nuovo valore di n che diventa 1. Dalla formula precedente x=n*5, se n=1 si ottiene x=5 cioè nella colonna 5.
Quindi i successivi 5 valori prelevati dal file “dist” saranno immessi in posizione (5, 3), (5,5), (5,7), (5,9) e (5,11) cioè nella colonna a destra della precedente di coordinata x=5.
Gli altri 10 valori sono posti nelle due colonne più a destra, in quella di coordinata X=10 ed in quella di coordinata x=15.
In figura si vedono i valori delle distanze acquisite. I primi cinque sono quelli della colonna a sinistra: 61.8, 59.5, 56.3, 53.7, 51. Si nota che i valori successivi sono via via più piccoli, segno che la distanza tra l’ostacolo e il robot in avvicinamento diminuisce.
Dopo l’esecuzione dei due cicli vengono eseguiti gli ultimi due blocchi: arresto del robot e attesa di 30s per consentire di poter leggere il display.
In seguito è possibile prelevare il file dist.rtf presente all’interno del robot. I dati numerici acquisiti presentano il punto come separatore decimale.
Importando il file in EXCEL si trasformano in dati numerici col punto decimale in dati numerici con la virgola selezionando tutti i valori e con la funzione trova e sostituisci è possibile trasformate tutti i punti in virgole.
In figura si mostrano i valori (con una virgola come separatore decimale) ed il relativo grafico di una delle tante prove effettuate disposte in una tabella.
Si è calcolato anche il percorso effettuato tra un’acquisizione e la successiva eseguendo la differenza tra due acquisizioni consecutive.
Inoltre si osserva che si sono eseguite 20 misure su un percorso di 50cm. circa, quindi in media una ogni 2.5cm.
n. |
distanza (cm.) |
delta |
|
1 |
66,60 |
(cm.) |
|
2 |
64,50 |
2,10 |
|
3 |
61,80 |
2,70 |
|
4 |
59,00 |
2,80 |
|
5 |
56,30 |
2,70 |
|
6 |
54,40 |
1,90 |
|
7 |
51,70 |
2,70 |
|
8 |
49,00 |
2,70 |
|
9 |
46,40 |
2,60 |
|
10 |
43,70 |
2,70 |
|
11 |
41,00 |
2,70 |
|
12 |
38,50 |
2,50 |
|
13 |
36,10 |
2,40 |
|
14 |
34,00 |
2,10 |
|
15 |
32,10 |
1,90 |
|
16 |
28,10 |
4,00 |
|
17 |
24,70 |
3,40 |
|
18 |
21,70 |
3,00 |
|
19 |
19,50 |
2,20 |
|
20 |
16,20 |
3,30 |
|
Condizioni della prova:
· Rilievo distanza da un ostacolo
· Robot EV3 in movimento rettilineo con potenza 5
· Percorso in avvicinamento
· Intervallo tra una misura e l'altra: 1s
· Durata esperimento: 20s
· Misure eseguite: 20