Documentazione Robomind
Documentazione
Programma di esempio
Panoramica
Introduzione
Istruzioni Base
Struttura del programma
Codici di esempio
- Scrivi il tuo nome
- Trova la macchia
- Segui la linea
- Labirinto

Example scripts

Nei prossimi esempi di programmi vedrai come le istruzioni base e la programmazione delle strutture possono modificare il comportamento del robot e vedere degli interessanti risultati. Prova a capire il codice e come funziona. Ancora meglio se provassi a copiare il codice e incollarlo nel pannello dove si scrivono i codici. Per un miglior risultato visivo, assicurati che la mappa sia visualizzata .

Example 1 : Write your name

Il robot puo' disegnare linee, cosi' puoi creare un semplice programma di disegno. Usando DisegnaBiancoe FermaDipingere puoi comandare il robot per decidere quando disegnare a terra delle linee. Se attivi questa opzione,mentre il robot cammina lascera' dietro di se una linea colorata. In questo modo e' possibile scrivere caratteri come la lettera 'A'.

Nella mappa openArea.map hai abbastanza spazio per creare un opera d'arte. Prova ad usare il Controllo Manuale (Esegui > Controllo manuale) per far verniciare al robot.

Vedi inoltre: istruzioni base: Dipingi, Movimenti

write 'A'

#Lettera 'A'
DipingiBianco


Avanti(2)
Destra
Indietro(1)
Destra
Avanti(2)
Indietro(1)
Sinistra
Avanti(1)


FermaDipingere

Example 2 : Trova la macchia

Nella mappa findSpot1.map che puoi trovare nella cartella automatica delle mappe, troverai proseguendo dritto a sinistra una macchia bianca. Supponiamo che non sappiamo dove si trovi la macchia. Come fara' il robot a trovarla iniziando da qualche parte lungo il muro? Puoi contare il numero di passi che fara' il robot muovendosi, ma ci sono metodi migliori.

Lasciate proseguire il robot in avanti e fategli controllare la sua sinistra. Se alla sua sinistra non c'e' la macchia bianca fatelo continuare ad avanzare al prossimo passo, se c'e' la macchia bianca fatelo andare sulla macchia. Ovviamente questo puo' essere ripetuto in ciclo.

Vedi inoltre: istruzioni basi:Movimenti, Osservazioni, Costrutti del programma: Ripeti, struttura-se, fine

find spot

Ripeti{
    Se(SinistraBianco){
        # C'e' una macchia sulla sua sinistra
        Sinistra
        Avanti(1)
        Fine
    }
    Altrimenti{
        #Non c'e' una macchia
        Avanti(1)
    }
}

Un altro codice che mostra lo stesso risultato e' il seguente: puoi far andare il robot avanti fino a quando non ved piu' la parete (quindi ci dev'essere un angolo). Quindi il robot gira e si muove in avanti fino a finire sulla macchia

RipetiFinoAChe(SinistraBloccato){
    Avanti(1)
}


Sinistra
Avanti(1)
            

 

Example 3 :Segui la linea

Nella mappa di default troverai una linea bianca verso Est. Questa linea e' una posta attraverso la mappa. Com puo' il robot seguire la linea tracciata?

La soluzione e' simile a quella dell'esempio precedente. In base a varie condizioni il robot determina cosa fare

Vedi inoltre: istruzioni base:Movimenti, Osservazione, programming structures: Ciclo, Procedure, strutture-se, Fine

line follower
# Va all'inizio della linea bianca
Destra
Avanti(8)


# Decisioni che prende il robot passo dopo passo
Ripeti
{
    Se(DavantiBianco){
        Avanti(1)
    }
    Altrimenti Se(DestraBianco){
        Destra
    }
    Altrimenti Se(SinistraBianco){
        Sinistra
    }
    Altrimenti Se(DavantiBloccato){
        Fine
    }
}
      

Un altro approccio da utilizzare sarebbe la Procedura ricorsiva. Nel codice precedente la procedura e' cosi' definita: .


# Vai dove inizia la linea
Destra
Avanti(8)


# Chiatama della procedura
follow


# Recorsione 
Procedura follow{
    Se(DavantiBianco){
        Avanti(1)
        follow
    }
    Altrimenti Se(DestraBianco){
        Destra
        follow
    }
    Altrimenti Se(SinistraBianco){
        Sinistra
        follow
    }
    Altrimenti Se(DavantiBloccato){
        #Finisce la procedura
	# (perche' non c'e' niente dopo il Return.
	#Quando tutte le chiamate finiscono il programma termina
        Return
    }
}

Esempio 4 : Labirinto

Come fuggire da un generale labirrinto? Questa difficile domanda ha una soluzione. Seguendo il muro a destra o a sinistra troverete la via d'uscita.

Il codice qui proposto fa cercare il faro al robot nella mappa maze1.map.

Vedi inoltre: Istruzioni base:Movimenti, Osservazioni, strutture di programmazione: Ciclo, struttura-se, Fine

Ripeti{
    Se(DestraBloccato){
        Se(DavantiLibero){
            Avanti(1)
        }
        Altrimenti{
            Sinistra
        }
    }
    Altrimenti{
        Destra
        Avanti(1)
    }

    Se(DavantiFaro){
        Raccogli
        Fine
    }
}
      

RoboMind - Copyright � 2005 - 2014 - Research Kitchen