Skip to content

Commit 2c38737

Browse files
committed
add doc on programs, blocks reference
1 parent 792b805 commit 2c38737

File tree

3 files changed

+278
-1
lines changed

3 files changed

+278
-1
lines changed

docs/.vitepress/config.js

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default {
2727
{ text: 'Programmazione', link: '/usermanual/#programmazione' },
2828
{ text: 'Attività', link: '/usermanual/#attivita' },
2929
{ text: 'Blocchi', link: '/usermanual/blocks/' },
30+
{ text: 'Programmi', link: '/usermanual/programs/' },
3031
]
3132
},
3233
{

docs/usermanual/blocks/index.md

+124-1
Original file line numberDiff line numberDiff line change
@@ -64,70 +64,193 @@ Attende (pausa l'esecuzione del programma) il tempo indicato, espresso in second
6464

6565
### Scatta foto
6666

67+
Scatta una foto con la telecamera integrata e la salva nella Galleria.
68+
6769
### Registra video
6870

71+
Avvia la registrazione di un video, che sarà poi salvato nella Galleria.
72+
73+
La registrazione può essere interrotta tramite il blocco [Stop video](#stop-video) ed è comunque interrotta al termine dell'esecuzione del programma.
74+
6975
### Stop video
7076

77+
Termina la registrazione di un video, che sarà poi salvato nella Galleria.
78+
7179
## Visione
7280

7381
### Valore medio immagine
7482

83+
Calcola il valore medio di una caratteristica dell'immagine:
84+
- Luminosità
85+
- Tinta (quale colore)
86+
- Saturazione (colore-bianco e nero)
87+
- HSV (Hue Saturation Lightness)
88+
89+
Può essere usato per valutare la presenza di luce o di uno specifico colore nell'immagine.
90+
7591
### Spazio libero
7692

93+
Determina la presenza di spazio "libero" davanti al robot.
94+
95+
Ritorna un valore numerico, che rappresenta lo spazio libero davanti al robot, espresso in cm.
96+
97+
Utilizza la visione artificiale per determinare l'assenza di ostacoli nella parte di piano davanti al robot stesso, entro 30 cm dal robot stesso.
98+
99+
La funzione è basata sul contrasto, quindi è sensibile a cambi di colore o intensità della superficie.
100+
77101
### Trova linea
78102

103+
Determina la presenza di una linea davanti al robot.
104+
105+
Ritorna una lista di tre elementi, ognuno dei quali nmerico e corrispondente alla posizione della linea rispetto al campo visivo del robot, dove:
106+
- 0 è il lato sinistro
107+
- 100 è il lato destro
108+
- 50 è il centro del campo visivo
109+
110+
Il blocco utilizza la visione artificiale per determinare la presenza di una linea nella parte inferiore del campo visivo del robot, che è a sua volta diviso in tre settori orizzontali, corrispondenti a tre aree rettangolari ordinate dal basso verso l'alto.
111+
79112
### Trova faccia
80113

114+
Determina la presenza di un volto nel campo visivo del robot.
115+
116+
Ritorna una delle misure specificate oppure una lista con tutte, in ordine:
117+
- ascissa (posizione orizzontale rispetto al centro)
118+
- ordinata (posizione verticale rispetto al centro)
119+
- dimensione (grandezza del volto, quindi inversamente proporzionale alla distanza del volto dal robot)
120+
121+
Utilizza la visione artificiale per determinare la presenza di uno o più volti nel campo visivo.
122+
81123
### Trova distanza da colore
82124

125+
Determina la presenza di un oggetto del colore definito nel campo visivo del robot.
126+
127+
Ritorna una delle misure specificate oppure una lista con tutte:
128+
- distanza (posizione dell'oggetto rispetto al robot)
129+
- angolo (angolo rispetto alla verticale, espresso in gradi, 0° = centro)
130+
131+
Utilizza la visione artificiale per determinare la presenza di un oggetto del colore specificato.
132+
133+
Per ottenere un buon risultato si consiglia di scattare una foto all'oggetto, direttamente con CoderBot, e di rilevare il colore dell'oggetto direttamente dall'immagine, tramite la funzione disponibile nella Galleria delle immagini.
134+
83135
### Trova testo
84136

137+
Riconosce il testo nel campo visivo del robot.
138+
139+
Ritorna una stringa di caratteri corrispondente al testo riconosciuto nell'immagine, se presente.
140+
85141
### Leggi Bar / QRCode
86142

143+
Legge un codice a barre o un QR code nel campo visivo del robot.
144+
145+
Ritorna una stringa di caratteri corrispondente al codice a barre, oppure al codice codificato nel QR code, se presente.
146+
87147
### Leggi AR Code
88148

149+
Legge un codice di tipo AR code nel campo visivo del robot.
150+
151+
Ritorna il codice numerico corrispondente al codice AR code, se presente.
152+
89153
### Trova classe
90154

155+
Determina la classe dell'oggetto presente nel campo visivo del robot.
156+
157+
Ritorna una stringa di testo corrispondente alla classe dell'oggetto rilevato dalla rete neurale.
158+
159+
[A questo link l'elenco completo delle classi riconosciute](https://github.com/CoderBotOrg/net-models/blob/master/cnn_models/generic_fast_low.txt).
160+
91161
### Trova oggetti
92162

163+
Riconosce gli oggetti presenti nel campo visivo del robot.
164+
165+
Ritorna lista con i primi 3 oggetti riconosciuti, ordinata per confidenza del riconoscimento.
166+
167+
Ogni elemento della lista contiene:
168+
- classe: stringa di caratteri corrispondenti al nome della classe dell'oggetto riconosciuto;
169+
- accuratezza del riconoscimento: 0 minima, 100 massima;
170+
- lista di quattro elementi corrispondenti alle coordinate X1, Y1, X2, Y2 del rettangolo che contiene l'oggetto;
171+
172+
[A questo link l'elenco completo delle classi riconosciute](https://github.com/CoderBotOrg/net-models/blob/master/cnn_models/generic_object_detect.txt).
173+
93174
## Sensori
94175

95176
### Leggi distanza con sonar
96177

178+
Determina la distanza da oggetti davanti (o ai lati, a seconda del sensore utilizzato) di CoderBot.
179+
180+
Ritorna un valore numerico corrispondente alla distanza, espressa in cm, tra il robot e il primo oggetto davanti al sensore sonar a ultrasuoni.
181+
182+
La lettura va da 0 a 340 centimetri, ha una precisione intorno al 2-3% ma può essere instabile (valori che oscillano anche di 50-100cm) se l'oggetto misurato presenta una superficie non piatta e non perpendicolare rispetto al terreno.
183+
97184
### Giroscopio
98185

186+
Ritorna la lettura del giroscopio (se presente) sui tre assi.
187+
99188
### Accelerometro
100189

190+
Ritorna la lettura dell'accelerometro (se presente) sui tre assi.
191+
101192
### Bussola
102193

194+
Ritorna la lettura della bussola (se presente).
195+
103196
### Temperatura
104197

198+
Ritorna la lettura del termometro (se presente).
199+
105200
## Suono
106201

107202
### Pronuncia
108203

204+
Emette un suono di sintesi vocale del testo specificato, nella lingua specificata.
205+
109206
### Registra audio
110207

208+
Registra il suono percepito dal microfono, per il tempo indicato, nel file indicato.
209+
111210
### Riproduci file audio
112211

212+
Riproduce il suono indicato (precedentemente registrato, o presente tra i suoni predefiniti).
213+
113214
### Ascolta suono
114215

216+
Determina la presenza di suoni oltre la soglia indicata, per il tempo indicato.
217+
218+
Ritorana un booleano, "true" se il suono è sopra la soglia e oltre la durata stabilita, altrimenti "false";
219+
115220
### Riconosci parlato
116221

222+
Interpreta il suono come parlato.
223+
224+
Ritorna una stringa di caratteri corrispondente al testo riconosciuto.
225+
117226
## Estensioni I/O
118227

119228
### Leggi input
120229

230+
Ritorna un valore numerico corrispondete al valore letto dall'ingresso analogico (se presente).
231+
121232
### Scrivi Digital Output
122233

234+
Attiva l'uscita digitale specificata (se presente).
235+
123236
### Controlla led
124237

238+
Controlla una striscia di led pilotata da un chip di tipo WS2812B (se presente).
239+
125240
## Musica
126241

127242
### Suona nota
128243

244+
Emette il suono corrispondente alla nota specificata, con lo strumento specificato.
245+
129246
### Strumento (strumento)
130247

248+
Selezione lo strumento specificato.
249+
131250
### Strumento (animale)
132251

133-
### Pausa
252+
Selezione il suono dell'animale specificato come strumento.
253+
254+
### Pausa
255+
256+
Attende per il tempo specificato.

docs/usermanual/programs/index.md

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
# Programmi predefiniti
2+
3+
CoderBot è predisposto con alcuni programmi pronti all'uso.
4+
5+
I programmi si dividono in due categorie, in base all'obiettivo che si propongono di risolvere:
6+
7+
- Programmi di test: utili per dimostrare o verificare il corretto funzionamento di una particolare funzione del robot;
8+
- Programmi dimostrativi: sono pensati per svolgere un compito significativo (ad esempio: muoversi evitando gli ostacoli), possono essere usati sia per dimostrare le caratteristiche del robot che come base di partenza per attività didattiche;
9+
10+
I programmi di esempio non possono essere alterati, ma è possibile crearne una copia, salvarla con nome diverso e a piacere, e apportarvi liberamente modifiche.
11+
12+
## Descrizione dei programmi
13+
14+
### test_cnn_classifier
15+
16+
Programma di test del blocco [Trova classe](../blocks/#trova-classe).
17+
18+
### img_average_test
19+
20+
Programma di test del blocco [Valore medio immagine](../blocks/#valore-medio-immagine).
21+
22+
### test_output
23+
24+
Programma di test del blocco [Scrivi Digital Output](../blocks/#scrivi-digital-output).
25+
26+
### test_led
27+
28+
Programma di test del blocco [Controlla led](../blocks/#controlla-led).
29+
30+
### test_sonars
31+
32+
Programma di test del blocco [Leggi distanza con sonar](../blocks/#leggi-distanza-con-sonar).
33+
34+
### ar_bot
35+
36+
Programma completo che ha lo scopo di fare in modo che CoderBot "obbedisca" ai segnali che è in grado di vedere con la telecamera.
37+
38+
Il programma utilizza il blocco [Leggi AR Code](../blocks/leggi-ar-code) per riconoscere dei particolari segnali (detti anche "tag"), ai quali è associato un codice numerico.
39+
40+
In base al codice riconosciuto, CoderBot esegue delle azioni predefinite:
41+
42+
- "1" rotazione verso sinistra
43+
- "2" movimento in avanti
44+
- "3" rotazione verso destra
45+
- "4" rotazione breve a destra e a sinistra, restando sul posto, poi pronuncia la frase "sono arrivato!"
46+
- "5" pronuncia la frase "attenzione!"
47+
48+
Il programma può essere facilmente esteso in modo da interpretare altri codici che possono essere associati ad altre azioni: movimenti o emissione di suoni.
49+
50+
### find_code_test
51+
52+
Programma di test del blocco [Leggi Bar / QRCode](../blocks/#leggi-bar-qrcode).
53+
54+
### test_cnn_object_detect
55+
56+
Programma di test del blocco [Trova oggetti](../blocks/#trova-oggetti).
57+
58+
### demo_obstacle_avoidance
59+
60+
Programma completo per far muovere CoderBot su una superficie in modo continuo in modo da evitare gli ostacoli che gli si presentano davanti.
61+
62+
Il programma utilizza il blocco [Leggi distanza con sonar](../blocks/#leggi-distanza-con-sonar) per determinare presenza e la distanza di ostacoli davanti a sé, ed evitarli girando sulla destra.
63+
64+
Il programma può essere modificato variandone i parametri, come la distanza entro la quale è riconosciuto l'ostacolo (15 cm) e la durata dei movimenti (espressa in secondi).
65+
66+
### test_music
67+
68+
Programma di test del blocco [Suona nota](../blocks/#suona-nota).
69+
70+
### test_input
71+
72+
Programma di test del blocco [Trova oggettie](../blocks/#trova-oggetti).
73+
74+
### cat_follower
75+
76+
Programma completo per far muovere CoderBot su una superficie in modo continuo alla ricerca di un gatto (va bene sia un gatto vero che una sua immagine).
77+
78+
Il programma utilizza il blocco [Trova oggetti](../blocks/#trova-oggetti) per determinare la presenza e la distanza di un gatto e cercare di inseguirlo.
79+
80+
Il programma può essere modificato variandone i parametri, cambiando la classe dell'animale riconosciuto (cane) o anche oggetti riconosciuti dal blocco "Trova oggetti".
81+
82+
### colour_seeker
83+
84+
Programma completo per far muovere CoderBot su una superficie in modo continuo alla ricerca di un oggetto di un certo colore.
85+
86+
Il programma utilizza il blocco [Trova distanza da colore](../blocks/#trova-distanza-da-colore) per determinare la presenza e la distanza di un oggetto del colore specificato e cercare di raggiungerlo.
87+
88+
Il programma può essere modificato variandone i parametri, cambiando il colore riconosciuto e il movimento per raggiungere il bersaglio.
89+
90+
Un aspetto critico per il corretto funzionamento del programma è la definizione del colore dell'oggetto che si desidera identificare.
91+
92+
Per ottenere un buon risultato si consiglia di scattare una foto all'oggetto, direttamente con CoderBot, e di rilevare il colore dell'oggetto direttamente dall'immagine, tramite la funzione disponibile nella Galleria delle immagini.
93+
94+
### test_io_ext
95+
96+
Programma di test dei blocchi [Scrivi Digital Output](../blocks/#scrivi-digital-output) e [Leggi input](../blocks/#leggi-input).
97+
98+
### sound_rec_test
99+
100+
Programma di test del blocco [Registra audio](../blocks/#registra-audio).
101+
102+
### find_color
103+
104+
Programma di test del blocco [Trova distanza da colore](../blocks/#trova-distanza-da-colore).
105+
106+
### path_ahead
107+
108+
Programma completo per far muovere CoderBot su una superficie in modo continuo evitando ostacoli.
109+
110+
Il programma utilizza il blocco [Spazio libero](../blocks/#spazio-libero) per determinare se lo spazio davanti al robot è praticabile, e ne caso muoversi al suo interno.
111+
112+
Rispetto ad altri programmi di evitamento ostacoli basati sui sensori sonar a ultrasuoni, questo è basato sulla visione artificiale ed è sensibile anche a cambio di colore dello sfondo, piuttosto che alla presenza di ostacoli solidi.
113+
114+
### face_find
115+
116+
Programma completo per far muovere CoderBot, ruotando sul posto, in modo continuo alla ricerca di un volto.
117+
118+
Il programma utilizza il blocco [Trova faccia](../blocks/#trova-faccia) per determinare la presenza e posizione di un volto davanti a sé, e cercare di portare al centro del suo campo visico il volto tramite rotazioni sul posto.
119+
120+
Se il blocco rileva più di un volto contemporaneamente presente nel campo visivo, viene preso in considerazione il volto più vicino al robot (quello con le dimensioni maggiori).
121+
122+
### hear_test
123+
124+
Programma di test del blocco [Trova oggetti](../blocks/#trova-oggetti).
125+
126+
### line_follower
127+
128+
Programma completo per far muovere CoderBot su una superficia, seguendo un percorso definito da una linea tracciata sulla superficie stessa.
129+
130+
Il programma utilizza il blocco [Trova linea](../blocks/#trova-linea) per determinare la presenza e posizione di una linea e seguirne il percorso.
131+
132+
Il blocco Trova linea utilizza la visione artificiale per determinare la presenza di una linea nella parte inferiore del campo visivo del robot, che è a sua volta diviso in tre settori orizzontali, corrispondenti a tre aree rettangolari ordinate dal basso verso l'alto.
133+
134+
Il programma in oggetto utilizza solo il primo settore, ovvero il più basso corrispondente all'area più vicina al robot, ma è possibile estendere il programma utilizzando anche le altre letture, in modo da migliorare la reattività del robot in caso di curve strette.
135+
136+
### clap_control
137+
138+
Programma dimostrativo del blocco [Ascolta suono](../blocks/#ascolta-suono).
139+
140+
Il programma fa in modo che il robot si muova in rettilinea e giri a destra se "sente" un suono forte e breve (come ad esempio un battito di mani).
141+
142+
### demo_scientist
143+
144+
Programma completo per il "gioco dello scienziato", che ha lo scopo di far muovere CoderBot in base a un algoritmo non banalmente deducibile (idealmente: come fosse un animale che esplora l'ambiente che lo circonda) in modo da poter stimolare l'osservazione del comportamento del robot, e la formulazione di ipotesi circa la natura del robot e del programma stesso.
145+
146+
Il programma fa uso essenzialmente del blocco [Leggi distanza con sonar](../blocks/#leggi-distanza-con-sonar) e i blocchi standard per generare nuomeri casuali in modo da eseguire movimenti in parte ripetititivi e in parte casuali.
147+
148+
### roboetologia
149+
150+
Programma completo per il "gioco dello scienziato" (versione rivista e più articolata rispetto a "demo_scientist"), che ha lo scopo di far muovere CoderBot in base a un algoritmo non banalmente deducibile (idealmente: come fosse un animale che esplora l'ambiente che lo circonda) in modo da poter stimolare l'osservazione del comportamento del robot, e la formulazione di ipotesi circa la natura del robot e del programma stesso.
151+
152+
Il programma fa uso essenzialmente del blocco [Leggi distanza con sonar](../blocks/#leggi-distanza-con-sonar) e i blocchi standard per generare nuomeri casuali in modo da eseguire movimenti in parte ripetititivi e in parte casuali.
153+

0 commit comments

Comments
 (0)