RoboMind Dokumentacija
Dokumentacija
Primeri skript
Pregled
Uvod
Osnovni ukazi
Programske strukture
Primeri skript
- Napiši svoje ime
- Najdi belo točko
- Sledilec črte
- Tekač po labirintu

Primeri skript

V sledečih primerih skript boš spoznal kako lahko osnovni ukazi ter programske strukture privedejo do zanimivega obnšanja robota. Poizkusi razumeti kako program deluje. Še bolje je če skopiraš skripto ter jo prilepiš v komandno ploščo RoboMind-a. Pred zagonom preveri ali uporabljaš pravilni zemljevid.

Primer 1 : Napiši svoje ime

Ker lahko robot barva tla, lahko napišeš preproste Barvaj-skripte. Uporabi ukaze barvajBelo(), barvajČrno() ter nehajBarvat(), da ukažeš robotu naj uporabi čopič ali ga naj pospravi. Če boš zagnal robota bo na tla narisal belo črto. Na ta način lahko narišeš črke kot npr 'A'. Na zemljevidu 'openArea.map' boš imel dovolj prostora tudi za manjšo umentnino. Poizkusi barvati tudi z daljinskim vodenjem (Zaženi / Daljinsko vodenje) den Roboter malen zu lassen. 

Več podrobnosti: Osnovni ukazi: Barva, Pelji

write 'A'

#Črka 'A'
barvajBelo()


naprej(2)
desno()
naprej(1)
desno()
naprej(2)
nazaj(1)
desno()
naprej(1)


nehajBarvat()

Primer 2 : Najdi belo točko

Na napi findSpot1.map, boš našel nekje na levi strani eno odprtino z belo piko. Predpostavimo da pred tem ne veš na kaki razdalji se luknja z piko nahaja. Kako jo lahko najde robot če začne iskati nekje ob steni? Seveda lahko prešteješ korake ki jih robot potrebuje. A obstajo boljše metode.

Pusti robota vedno peljato po en korak naprej ter nato naj preveri ali se nahaja levo bela pika. Ko zagleda piko, naj zapelje tja, se tam ustavi in je končal. Sicer se pa naj zapelje spet naprej in ponovno pogleda če je ob njem pika. To lahko ponavljaš v zanki.

Več podrobnosti: Osnovni ukazi: Pelji, Poglej, Programske strukture: Zanke, Pogojni stavki, Konec

find spot
Ponovi(){
    Če(JeLevoBelo()){
        # na levi strani se nahaja bela pika
        levo()
        naprej(1)
        Konec
    }
    Sicer{
        # še ne obstaja nobena bela pika
        naprej(1)
    }
}

Eine andere Möglichkeit mit dem selben Ergebnis zeigt sledides Programm:

PonoviDokler(JeLevoOvira()){
    naprej(1)
}


levo()
naprej(1)
            

 

Bespiel 3 : Linien-Folger

Na mapi default.map boš našel belo črto, ki pelje po prostoru. Kako lahko pelješ robota po tej črti?

Rešitev je podobna prejšnji rešitvi. Ko je robot pripeljan do začetka črte odloča sproti kaj mora storiti. 

Več podrobnosti: Osnovni ukazi: Pelji, Poglej, Programske strukture: Zanke, Procedure, Pogojni stavki, Konec

line follower
# Pelji do začetka črte
desno()
naprej(8)


# Ostani vedno na poti
Ponovi()
{
    Če(JeSpredajBelo()){	
        naprej(1)
    }
    Sicer Če(JeDesnoBelo()){
        desno()
    }
    Sicer Če(JeLevoBelo()){
        levo()
    }
    Sicer Če(JeSpredajOvira()){
        Konec
    }
}
      

Drugi pristop uporablja tako imeneovane rekurzivne procedure. Procedure so majhni programi ki lahko samega sebe znova(rekurzivno) izvršijo. V sledečem primeru najdeš proceduro sledi(). Ko je izveden pravilni korak boš opazil, da se v proceduri sledi() znova kliče lastena procedura sledi() . Z tem dobiš zaporedje klicov  sledi(...sledi(...sledi(...)...)...), ki vedno znova izvede pravilno potezo. To ponavljanje klicev procedure se imenuje rekurzija, na začektu ti se bo verjetno zdelo malo čudno, a brez skrbi poizkusi jo, poigfraj se z kodo in hitro boš razumel delovanje.

# Pelji do začetka črte
desno()
naprej(8)


# Začni sledenje
sledi()


# Procedura, ki se rekurzivno kliče
Procedura sledi(){
    Če(JeSpredajBelo()){	
        naprej(1)
        sledi()
    }
    Sicer Če(JeDesnoBelo()){
        desno()
        sledi()
    }
    Sicer Če(JeLevoBelo()){
        levo()
        sledi()
    }
    Sicer Če(JeSpredajOvira()){
        # Končaj trnutni klic
        # (ker ni več ukazov po tem prekini
        # se bodo vsi klici končali
        # ter skripta se bo zaključila.)
        izskoči
    }
}

Primer 4 : Tekač po labirintu

Kako ponavadi najdeš izhod iz labirinta? Ta navidez težka naloga ima zelo preprosto rešitev. Če se stalno držiš desnega (ali levega) zidu boš izhod zagotovo našel.

Sledeči program, pošlje robota iskat sondo (Zemljevid: maze1.map)  

Več podrobnosti: Osnovni ukazi:Pelji, Poglej, Programske strukture: Zanke, Pogojni stavki, Konec

Ponovi(){	
    Če(JeDesnoOvira()){
        Če(JeSpredajProsto()){
            naprej(1)
        }
        Sicer{
            levo()
        }
    }
    Sicer{
        desno()
        naprej(1)
    }

    Če(JeSpredajSonda()){	
        poberi()
        Konec
    }
}
      

RoboMind - Copyright © 2005 - 2016 - Research Kitchen - Prevod: Miha Kočar