ROBOCUP COSPACE

Uvod

CoSpace sliči na igrice… ima 2 autića-robota koji u svemiru na nekom planetu skuplja objekte ( to mogu biti unesrećeni)

crveni objekti vrijede 10 bodova

zeleni                                                   15 bodova

crni                                                      20 bodova

Vrijednost svakog pokupljenog objekta se duplo uvećava ako ga pokupite u plavom području (plavo područje predstavlja područje koje je posebno opasno- zračenje ili neka druga opasnost pa treba najprije od tamo pokupiti unesrećene)

Znači mjesto gdje robotsko vozilo ide zove se mapa i ima različitih mapa (svake godine izlaze nove na kojima možete vježbati)

Mapa ili svijet iz kojeg trebate spasiti unesrećene ima zidove, zamke i kao prije spomenuto opasno područje (blue area)

Zamka (trap) je označena kao plavi kvadratić okružen žutim većim kvadratom. Taj  žuti kvadratić služi kao upozorenje vozilu da je blizu zamka, ako upadneš u zamku izgubiš sve „unesrećene“ tj. objekte koje imaš skupljene trenutno u vozilu.

U vozilu maksimalno možeš imati 6 objekta(unesrećenih)- najbolje je imati po 2 svake vrste – tako dobivaš najviše bodova

Narančasti područje je područje depozita tj sigurno područje gdje iskrcavaš objekte tj unesrećene. Kad ih iz vozila iskrcaš (napraviš depozit )dobiješ bodove. Možeš iskrcavati i polupraznog robota

Utakmica traje 8 minuta, s tim da u tom vremenu možeš se teleportirati i u drugi svijet. Kad isprogramiraš da ode na „ svijet2“ (World2) dobijaš određene bodove (100bodova). Drugi svijet je teži, teže nalaziš objekte, ali dobivaš i više bodova za svaki objekt

Znači razlika od igrica je da vi ne vozite vozilo u ovom trenutko i ne navigirate ga, nego s gotovim programom gdje ste napisali kako se mora snalaziti u određenim situacijama vozilo ide

Morate isprogramirati:

  1. Da vozilo ide naprijed
  2. Da skrene ako dođe do zida, prepreke ili drugog robota
  3. Kako izbjegavati zamku
  4. Kako pokupiti objekte
  5. Kako napraviti depozit(ostavljanje unesrećenih na sigurnom području)
  6. Kako se teleportira tj. prelazi u svijet2

Na prvom dijelu imate tipku AI (Artificial intelligence-umjetna inteligencija)kad ju kliknete otvara se prozor u kojem se programira

Prvo, dobro je dati ime svom timu – to se radi tako u drugom redu imate 4 tipku (čovječuljci) i ona označava Team name upišite ime i stisnite OK. Vidjet ćete ispod natpisa World 1 i 2  vaše ime i World1statment

  1. Da vozilo ide naprijed (da se vozi ) isprogramira se tako da

    Kliknete desnim klikom na to ime i odaberete ADD – new sub statement. Otvoriti će vam se prozor Action name i vi možete da vam bude lakše u snalaženju dati i hrvatsko ime. Znači prva „akcija“ nam je ići naprijed .u srednjem dijelu prozora imate područje gdje se upisuju podaci za ultrazvučne senzore(za izbjegavanje zidova) i kolor senzore …imate kompas i sl. u desnom području imate actions – to nam treba.

    Tu imate za odabrati:
    duration (trajanje- za pokupit objekt i depozit treba 3000ms, a 120ms za izbjegavanje, za ići naprijed i za  teleport 60ms )

    ……Key action nam sad ne treba

    -Wheel left i wheel right – to su lijevi i desni motor(kotači). Znači morate namjestiti brzinu kojom ćete se kretati. Želite li ići brzo ili sporije. Manju brzog kretanja bolje je odabrati tako da možete uočiti i pokupiti objekte i tako ćete dobivati bodove. Najbolje je namjestiti jednaku brzinu i na lijevom motoru kao i na desnom i brzinu- između 2 i 3 (minus vrijednosti je za ići unazad)

    Znači za ići naprijed odabere se : brzina motora i trajanje i to je to J

    Kad se to napravi- u lijevom djelu kliknete na tipku BUILD- (druga u drugom djelu sa strelicama) i onda mora se napisati ime ( običaj je staviti ime tima)i kliknuti ok(dobije se obavijest o uspješnom obavljenom zadatku)
    Provjeravate tako da zatvorite prozor i odete u mapu i pokrenete mapu(vaše vozilo ići će smo naprijed i neće ništa drugo neće za sada  znati
    Pritisnite Load jednog od autića (plavog ili crvenog)-pritisneš na mapu odabereš i klikneš PLAY gumb (trokutić)
    Ako ste se  nagledali vožnje svog autića, pritisnite  STOP da zaustavite program.

  2. Skretanje ako dođe do zida, prepreke ili drugog robota

    Ponovo kliknete na AI, desni klik Add new – odaberete ime „skretanje“ ili sl
    I onda..što nam treba da skrenemo kad „vidimo“ prepreku. Moramo prvo „vidjeti“ prepreku to znači da trebamo ultrazvučni senzor kojim ćemo detektirati prepreku (imamo prednji, lijevi i desni senzor= i oni očitavaju prepreku od 0-255cm. Znači možemo staviti da  kad uoči prepreku na  0 i 10 cm počne je izbjegavati. (lijevi i desni ostaviti 0-10)

    Duration namjestiti

    Motore ćemo namjestiti- kako bi trebali ići kod skretanja. Taktika- jedan motor treba ići jače drugi malo slabije ili unatrag jer treba se zaokrenuti od početnog položaja. Znači radite kombinacije od -4 do +1 za raz. motore kako i u kojem smjeru želite da okrene.
  3. Izbjegavanje zamke ( desni klik add new napišite izbjegavanje zamke lijevo)

    Trebaju nam kolor senzori ( u srednjem dijelu vidite da ima lijeve i desne i za prepoznavanje crvene zelene i plave boje)

    Postavimo ih ovako:

    Postavke

    Na kraju bi program trebao izgledati ovako:

    Program

    Sad, želimo izbjegavati zamku i desnim senzorom. Pritisnimo desni klik na statement lijevo, i onda copy(da kopiramo):

    Copy

    Sad napravite istu stvar, samo pritisnite Paste umjesto Copy. Promijenite ime tako da pritisnete desni klik i Change Name:

    Name

    Onda pritisnite OK i promijenite vrijednosti za lijeve senzore u desne:

    Colour sensors

    Build-Load-Play. Ali to nam još nije korisno jer ništa ne skupljamo. Vrijeme je da to promijenimo.

    Sad želimo skupljati neke objekte. Počnimo s crvenima. Otvorite ponovno AI prozor i dodajte novi statement između izbjegavanja zamke i izbjegavanja prepreke. Za uvjet stavite da je na lijevom senzoru boja crvena (RGB vrijednosti možete eksperimentalno provjeriti). Budući da želimo da robot pokupi objekt kada ga nađe, stavimo brzine oba motora na 0, i budući da po pravilima mora stajati 3 sekunde, pod duration postavimo na 3000ms. Zadnji korak je reći programu da zapravo skupljamo objekt. To napravimo tako što postavimo KeyAction na FindObject i LED lampicu na 1. Isto to treba napraviti i za desni senzor, a kasnije i za ostale boje objekata, zelenu i crnu.

    Postavke senzora

    Sljedeći korak je depositati te objekte u narančasto područje na mapi. Za to ćemo napraviti novi statement i nazvati ga „deposit“. Uvjet će biti da su oba senzora na narančastom, motori će biti na nuli, trajanje će biti 3 sekunde, a Key Action će biti „Deposit“. Također, ne želimo da robot pokuša depositati kad ne nosi niti jedan objekt, pa ćemo dodati Advanced Condition „Loaded Objects > 0“. Na taj način će se statement izvršiti samo ako varijabla LoadedObjects ima vrijednost veću od 0, što znači da nosimo jedan ili više objekata.

    Deposit

    Zatim treba implementirati teleportaciju. Teleportiranjem robot biva prebačen u drugi svijet i tamo nastavlja raditi. Dodat ćemo novi statement na vrh i nazvati ga „teleport“. Uvjet će biti da je prošlo više od 295 sekundi, a Key Action će biti Teleport. To je sve što je potrebno. Sad još treba samo drugi svijet izprogramirati na isti način i vaš će program imati sve najosnovnije funkcije za CoSpace natjecanje.

    Teleport


Unaprjeđenje programa

Jedna stvar kojom možemo dalje poboljšati program je ignoriranje zamki dok ne nosimo niti jedan objekt. To je vrlo lako implementirati: samo u statement za izbjegavanje zamki dodamo Advanced Condition „LoadedObjects > 0“.

Slijedeće poboljšanje je obrnuto: ignorirat ćemo objekte kada smo puni. Implementacija je vrlo slična: u svim statementima za skupljanje objekata dodamo Advanced Condition „LoadedObjects < 6“.

Advanced conditions

Treće vrlo korisno poboljšanje je skretanje prema području za deposit. Veliki problem u početničkim programima je to što je vrlo teško pogoditi deposit područje. Zato je vrlo korisno dodati 2 nova statementa, „Skreni u deposit lijevo“ i „Skreni u deposit desno“, koja provjeravaju kad je samo jedan od senzora u deposit području i skreću u tom smjeru. Na taj način će robot u potpunosti ući u deposit područje čak i ako nije bio usmjeren ravno prema njemu.

Deposit desno

Četvrto poboljšanje je blago skretanje. Napravit ćemo 2 nova statementa u kojima ćemo koristiti lijevi i desni ultrazvučni senzor kako bismo detektirali prepreke sa strane. Za lijevi senzor napravimo statement „Prepreka lijevo“ s uvjetom da je lijevi ultrazvučni senzor na udaljenosti manjoj od 15. U tom statementu ćemo postaviti lijevi motor na 4 a desni na 2 ili 1. Na taj način će robot blago zakrenuti u suprotnu stranu od prepreke. Analogno i za desnu stranu.

Prepreka desno

Peto poboljšanje je ubrzavanje pronalaženja deposita povećavanjem brzine u slučaju kad je robot pun i ne može više skupljati objekte. U ovome ćemo prvi put korisiti Advanced Action opciju. U statementu za „naprijed“, dodajte pod „Advanced Action“ slijedeći kod:

if (LoadedObjects == 6) {
    WheelLeft = 5;
    WheelRight = 5;
}

To će povećati brzinu oba motora na 5 kad robot treba žuriti do deposita.

Šesto i zadnje poboljšanje je ujedno i daleko najkompliciranije. U plavom području mape objekti daju dvostruki broj bodova, tako da bi bilo korisno pokušati skupiti što više objekata unutra. Za to treba dodati varijablu, možemo ju nazvati „plavo“, koja će u početku biti 0. Možemo dodati novi statement iznad onog za normalno kretanje unaprijed koji će biti aktivan dok je robot unutar plavog područja i odlučivati treba li robot ostati unutra ili ne. Uvjet će biti da je boja na oba senzora plava, a motori će biti isti kao za normalno kretanje naprijed. U Advanced Actionu ćemo postaviti varijablu plavo na 1 ako je LoadedObjects < 6, inače na 0. Sad napravimo 2 nova statementa iznad njega, “izvan plavog lijevo“, i „izvan plavog desno“. Njihov uvjet će biti da je jedan senzor na normalnoj podlozi a drugi na plavome, uz Advanced Condition da je varijabla „plavo“ na jedan, i ono što će raditi je skrenuti unazad prema plavom području kad izađe iz njega.

Code editor

To će povećati brzinu oba motora na 5 kad robot treba žuriti do deposita.

Autor: Vlado Lendvaj (Robotičko informatički klub Popovača)

Podijeli:
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •