Category Archives: Robomind

Comandi e scorciatoie

  1. File/Open map
    • Ctrl-O
    • Si sceglie la mappa del mondo con il quale interagirà il robot durante l’esecuzione del programma.
  2. File/Save map as…
    • Ctrl-Shift-M
    • Salva la mappa attuale, si può scegliere il formato 3D Collada model (per Google Sketchup e stampanti 3D)
  3. File/Generate map…
    • Ctrl-Shift-G
    • Genera una mappa a scelta tra
      1. Open Area
      2. Maze
      3. Islands
      4. Cave
      5. Dungeon
      6. Villa
      7. Forest
      8. Text (un messaggio a scelta)
      9. Mandelbrot Fractal (con i faretti)
      10. Simplex Noise Islands
  4. File/Map editor
    • Apre una pagina HTML locale con la quale è possibile progettare nuove mappe in modo interattivo!
  5. File/Settings
    • General: lingua e cartelle di default per i programmi, le mappe e le immagini
    • View/My robot: le immagini per il robot
    • View/Monitor skin: le immagini per le mappe
    • Editor: il tema per l’editor e altro…
    • Sound: abilita/disabilita i suoni
  6. Edit/Insert…
    • Permette di inserire, direttamente nella finestra del programma, una qualsiasi delle istruzioni del linguaggio ROBO
  7. View/Show grid
    • Ctrl-G
    • Appare una sottile griglia.
    • Permette di controllare meglio le geometrie quando si progetta una mappa…
  8. View/Show radar
    • Ctrl-W
    • Nell’angolo in alto a destra appare una versione rimpicciolita e trasparente del mondo.
    • Permette di avere un colpo d’occhio su tutto il mondo.
  9. View/Show stats
    • Ctrl-J
    • Rende visibile un pannello in alto a destra con le statistiche dell’esecuzione
    • Numero di passi, caselle colorate di bianco, …
  10. View/Track robot
    • Ctrl-T
    • Il robot rimane fermo al centro della finestra mentre tutto il resto del mondo si muove…
    • Permette di non perdere d’occhio il robot.
  11. View/Sound
    • Abilita/disabilita i suoni
  12. F8
    • Abilita/disabilita le nuvole in movimento durante l’esecuzione
  13. F9
    • Abilita/disabilita la visibilità delle coordinate.
    • Funziona se la griglia è visibile.
  14. Ctrl+SPAZIO
    • Completa la parola riservata che stai scrivendo.
    • Se non è unica propone un elenco delle possibili scelte.
  15. Ctrl-Alt-F
    • Indenta correttamente il codice, con le parentesi graffe aperte a capo
  16. Ctrl-Shift-F
    • Indenta correttamente il codice, con le parentesi graffe aperte alla fine della riga
  17. Ctrl-Scroll (mouse)
    1. Aumenta/diminuisce la dimensione del codice
  18. Clic centrale del mouse
    • Sposta il robot alla cella selezionata
    • Se il telecomando è attivo.

IDE

L’ambiente di sviluppo integrato di RoboMind è dotato delle comuni operazioni apri, salva, …, copia, incolla, … e di funzionalità specifiche per la stesura e l’esecuzione dei programmi.


Barra degli strumenti

Riporta le icone dei comandi più frequenti


Pannelli

La finestra dell’IDE è divisa in 3 pannelli ridimensionabili: programma, mondo, esecuzione.


Programma

Un editor, a sinistra, con il quale scrivere il programma.
Sono presenti i numeri di rigale barre di scorrimentouna lente d’ingrandimento.
Durante l’esecuzione del programma evidenzia la singola riga in esecuzione.


Mondo

La finestra più grande, a destra, dove è possibile seguire le vicissitudini del robot durante l’esecuzione.
La visualizzazione del mondo può essere modificata intervenendo con il mouse:

  • la rotellina del mouse permette di zoomare
  • trascinando su un punto si sposta il punto di vista.

Esecuzione

La finestra di esecuzione, in basso, contiene

  • una barra degli strumenti con i pulsanti play, next, pause, stop e uno slider per cambiare la velocità di esecuzione
  • un’area di testo dove il robot comunica all’utente eventuali messaggi di errore
  • una linea dove visualizza le singole istruzioni durante l’esecuzione.

RIEPILOGO

and Operatore logico
backward(…)
break Interruzione della ripetizione
coinFlip()
east(…) EST
eatUp() Mangia il faro
end Interruzione del programma
false Costante logica
forward(…)
frontIsBeacon() ?
frontIsBlack() ?
frontIsClear() ?
frontIsObstacle() ?
frontIsWhite() ?
goto(…,…) Porta il robot alla posizione specificata
if(…) {…} Selezione singola
if(…) {…} else {…} Selezione doppia
left()
leftIsBeacon() ?
leftIsBlack() ?
leftIsClear() ?
leftIsObstacle() ?
leftIsWhite() ?
north(…) NORD
not Operatore logico
paintBlack()
paintWhite()
pickUp()
procedure … (…) {…}
putDown()
repeat(…) {…} Ripetizione
repeatWhile(…) {…} Ripetizione condizionata
return Interruzione della procedura
right()
rightIsBlack() ?
rightIsClear() ?
rightIsObstacle() ?
rightIsBeacon() ?
rightIsWhite() ?
stopPainting()
south(…) SUD
west(…) OVEST

Installazione e personalizzazione

Questa pagina fa riferimento alle versioni precedenti alla 4.0
Sconsiglio la localizzazione in italiano…


Segui i passi

  1. Scarica il file di installazione RoboMindSetup….exe dalla sezione Download del sito ufficiale
  2. Esegui il file
  3. Alla richiesta della lingua, di default appare arabo, scegli inglese!
  4. Posizionati nella cartella dove hai installato RoboMind, probabilmente è C:Programmi (x86)RoboMind e scegli su cosa vuoi intervenire…
    • le etichette dell’ambiente di sviluppo
    • le parole chiave del linguaggio di programmazione
    • i temi
    • i file di HELP

IDE

Per cambiare le etichette dell’ambiente di sviluppo, segui i passi

  1. Copia il file …miscLabelsBundle_en.properties con nome LabelsBundle_it.properties
  2. Traduci le etichette dei menu, i messaggi di errore, …
  3. Apri con un editor il file …miscPreferences.properties
  4. Modifica la voce Language=en in Language=it

Oppure…

  1. Scarica il file rm.zip
  2. Estrai i file presenti LabelsBundle_it.propertiesPreferences.properties
  3. Salvali in …misc

ROBO

Il linguaggio di programmazione utilizza parole chiave in inglese.
Se vuoi puoi tradurle in italiano.

  1. Copia il file …miscRLD_default_en.properties e dagli il nome RLD_default_it.properties
  2. Traduci le parole chiave del linguaggio
  3. Apri con un editor il file …miscPreferences.properties
  4. Modifica la voce RoboLanguageDefinition=RLD_default_en in RoboLanguageDefinition=RLD_default_it
  5. Modifica la voce DefaultScriptDir=scripts/en in DefaultScriptDir=scripts/it
  6. Crea la cartella …scriptsit
  7. Da adesso salva i programmi in …scriptsit piuttosto che in …scriptsen

Temi

Si tratta di creare delle immagini di qualità e utilizzarle al posto delle originali…

  1. Copia la cartella …gfxskinsdefaultSkin come nuovoTema
  2. Modifica le immagini contenute (mantenendo dimensioni, formato e struttura)
  3. Apri con un editor il file …miscPreferences.properties
  4. Modifica la voce Skin=defaultSkin in Skin=nuovoTema

 Guida in linea

La guida in linea, richiamabile con F1, contiene 5 pagine .htm in inglese

  1. Copia la cartella …mischelp_en come help_it
  2. Traduci il testo contenuto nelle pagine…

Sottoprogrammi

I sottoprogrammi si utilizzano quando

  1. una certa sequenza di istruzioni appare più volte nello stesso programma: la scrivo una sola volta e la chiamo per nome più volte
  2. appare in programmi diversi: la progetto una volta e poi la utilizzo con copia e incolla in altri programmi
  3. per semplificare il codice: suddivido il codice in blocchi logici e li progetto uno alla volta

Il codice del sottoprogramma non viene eseguito automaticamente ma ogni volta che comparirà la sua chiamata.


procedure nome { … }

Definisce un sottoprogramma con un nome a piacere.
La chiamata avviene scrivendo semplicemente il nome dove serve.

Esempio: Come disegnare un rettangolo 3×2


procedure nome(p1, p2, …) { … }

Definisce un sottoprogramma con un nome a piacere.
Il sottoprogramma può avere un certo numero di parametri. Saranno utilizzati come variabili nel blocco successivo di istruzioni.
Si consiglia di utilizzare nomi significativi per i parametri.

Esempio: Come disegnare un rettangolo, date le dimensioni orizzontale e verticale


nome(a1, a2, …)

La chiamata di un sottoprogramma avviene scrivendo il nome seguito dall’elenco degli argomenti, cioè con i particolari valori che saranno utilizzati dal sottoprogramma.

Il numero di argomenti deve corrispondere al numero di parametri dichiarati nella definizione del sottoprogramma.

Esempio


return

Se il sottoprogramma ha raggiunto il suo scopo allora si può decidere di ritornare al punto dove è stata fatta la chiamata e continuare con l’esecuzione delle istruzioni successive.

Si tratta di una scorciatoia che permette di progettare più facilmente una procedura complessa.

Esempio

L’istruzione di ritorno può contenere un valore che verrà restituito al chiamante, la procedura si comporta come una funzione


Ricorsione

Le procedure possono essere definite in funzione di se stesse…

Espressioni logiche

Le condizioni nelle istruzioni if() e repeatWhile() sono dette espressioni logiche.

Queste espressioni possono essere vere o false e permettono all’esecutore di decidere qual è la prossima istruzione da eseguire.

Esempio

Anche i confronti tra numeri restituiscono un valore vero o falso

  • <, minore di
  • <=, minore di oppure uguale a
  • >, maggiore di
  • >=, maggiore di oppure uguale a
  • ==, uguale a
  • ~=, non uguale a, diverso da

Esempio

Un’espressione logica può essere una singola funzione di osservazione, un singolo confronto oppure può essere costituita da più funzioni/confronti combinati con gli operatori notandor.
In questo modo si rende più ponderata la decisione di eseguire o meno un blocco di istruzioni.


not, ~

Nega il valore dell’argomento.

Esempio: Davanti non è libero


and, &

Vero se entrambi gli argomenti sono veri.

Esempio: Davanti è libero e a destra è bianco


or, |

Vero se almeno uno degli argomenti è vero.

Esempio: Davanti è libero oppure a destra è bianco


true, false

I valori true e false possono essere usati direttamente nelle espressioni.


Ordine di valutazione

not => and => or
Le parentesi possono alterare l’ordine di valutazione.

Esempio: Ripeti mentre davanti non è libero e inoltre è bianco a sinistra oppure a destra, vai avanti di un passo

Selezioni

Una sequenza di istruzioni, delimitata da parentesi graffe, può essere eseguita o meno tramite le seguenti strutture di controllo


if(…) { … }

Esegui le istruzioni delimitate dalle parentesi graffe se la condizione nelle parentesi tonde è vera.

Esempio


if(…) { … } else { … }

Esegui le istruzioni delimitate dalle parentesi graffe dopo l’if() se la condizione è vera altrimenti esegui le istruzioni delimitate dalle parentesi graffe dopo l’else.

Esempio

Cicli

Una sequenza di istruzioni, delimitata da parentesi graffe, può essere eseguita più volte tramite le seguenti strutture di controllo


repeat(n) { … }

Ripeti n volte le istruzioni delimitate dalle parentesi graffe.

Esempio

Disegna un quadrato…


repeat { … }

Ripeti per sempre le istruzioni delimitate dalle parentesi graffe.

Esempio

Vai avanti per sempre

Ma se incontra un ostacolo si ferma…


repeatWhile(…) { … }

Ripeti le istruzioni delimitate dalle parentesi graffe finchè la condizione è vera.
La condizione sarà, per esempio, la chiamata di una delle funzioni che osservano.

Esempio


break

All’interno di un’istruzione repeat(), permette di interrompere l’esecuzione della sequenza.
L’esecuzione riprende con la prima istruzione dopo la parentesi graffa di chiusura del ciclo.

Esempio


end

Provoca l’interruzione dell’esecuzione del programma.

Esempio

Funzioni

Il robot prende delle decisioni… dopo aver valutato i valori restituiti da certe funzioni che lo informano sul mondo che lo circonda.

Per esempio: frontIsClear, di fronte la strada è libera?

A sinistra Di fronte A destra CONTROLLO?
leftIsClear frontIsClear rightIsClear Strada libera?
Quante celle?
leftIsBeacon frontIsBeacon rightIsBeacon Un faro?
leftIsBlack frontIsBlack rightIsBlack Colore nero (scuro)?
Quante celle?
leftIsWhite frontIsWhite rightIsWhite Colore bianco (chiaro)?
Quante celle?
leftIsObstacle frontIsObstacle rightIsObstacle Ostacolo?

Casualità

Lancia una moneta, flipCoin, e restituisce il risultato.

Il risultato di flipCoin sarà true/false con la stessa probabilità.
Si utilizza per prendere una decisione casuale.

Comandi

Il robot esegue degli ordini con nomi prefissati.
Alcuni ordini prevedono un parametro n, numero di passi

Movimento left Gira a sinistra/destra di 90 gradi
(rispetto alla direzione attuale)
  right
forward(n) Fai n passi avanti/indietro
backward(n)
north(n) Gira verso nord/sud/est/ovest e fai n passi in avanti
(qualunque sia la direzione attuale)
south(n)
east(n)
west(n)
goto(col, riga) Porta il robot alla posizione specificata, senza sbattere…
Disegno paintWhite Appoggia il pennello bianco/nero sul pavimento e comincia a scrivere
paintBlack
stopPainting Alza il pennello e smetti di scrivere
Azioni pickUp Raccogli
Rilascia
Mangia il faro
putDown
eatUp