Univerzitetno tekmovanje v mobilni robotiki

Robo liga FRI 2014

Misija: Četrti kamen od Sonca

Robo liga FRI 2014 je končana

Zahvaljujemo se vsem tekmovalnim ekipam za ves vložen trud, zagnanost in zdravo tekmovalnost! Hvala vsem gledalcem in obiskovalcem za izvrstno vzdušje!
Hvala Nataši, Vesni in Saši iz Službe za komunikacijo ter Juretu in Roku za pomoč v kontrolni sobi. Hvala našim pokroviteljem in vodstvu Fakultete za računalništvo in informatiko za vso podporo.

Vabljeni tudi k ogledu posnetka tekmovanja.

Organizatorji

Rezultati tekmovanja

Koledar dogodkov

24. 2. 2014:zaključek prijavnega obdobja
28. 2. 2014:uvodno srečanje in razdelitev kompletov Lego
29. 3. 2014:1. uradni trening: preizkušanje komunikacije PC-strežnik-robot
10. 5. 2014:2. uradni trening: preizkus poligona in nalog
30. 9. 2014:3. uradni trening: celotni preizkus; ob 16h v avli FRI.
1. 10. 2014:Robo liga FRI 2014
(9:00 - kvalifikacije, 14:00 - glavno tekmovanje)

Zgodba

Naseljenci planeta NXT so z občudovanjem opazovali velike uspehe Zemljanov pri odpravah na Mars, zato so se odločili, da se bodo tudi sami podali v tekmo za osvojitev Rdečega planeta. Lego Agencija za Sistematično Preučevanje Planetov (LASPP) je zasnovala misijo "Četrti kamen od Sonca" in vas pozvala, da izdelate robotsko vozilo za izpolnjevanje zahtevnih raziskovalnih nalog na Marsu. Kot pionirji na področju robotskega raziskovanja se boste morali spopasti z mnogimi tehničnimi izzivi in pastmi, ki prežijo na neprevidne robote. Nezanemarljivo težavo predstavlja razdalja med Marsom in domačim planetom, ki močno otežuje komunikacijo. Robotovo usodo lahko zakoliči tudi razgibano marsovsko površje, ki ne skopari z ostrimi skalami, strmimi pečinami in pogubnimi peščenimi sipinami. Velikost in teža robota sta zaradi prostorske stiske v pristajalnem modulu omejena, zato lahko robot s seboj nosi le omejen nabor raziskovalne opreme. Vsem neprilikam navkljub pa bodo morali roboti opraviti vrsto nalog, ki si jih je zamislila znanstvena srenja. Podatki s satelitov v Marsovi orbiti nakazujejo na množico območij, kjer obstaja možnost prelomnih odkritij. Ali bo vaš robot prvi, ki bo odkril znake življenja na Marsu?

Komunikacijski satelit satNeXT se ravnokar utirja v areo-stacionarno orbito.
Nosilna raketa NXT-1 je pripravljena.
Predviden pristanek na Marsu: oktober 2014.

Po pristanku na prostrani Marsovi pokrajini Elysium Planitia bodo nadzor nad robotskimi vozili prevzele kontrolne ekipe na domačem planetu. Pri tem jim bo pomagal satelit satNeXT, ki bo skrbel za zvezo in zajemal sliko površja Marsa ter jo pošiljal v kontrolni center. Roboti se bodo morali varno in hitro premikati po površju, opraviti čim več nalog in pri tem svoji ekipi prinesti karseda veliko raziskovalnih točk. Koliko raziskovalnih dosežkov jim bo uspelo opraviti, predenj zaradi marsovske zime izgubijo vso energijo?

Izziv

Potrebna znanja  •  Sestavni deli izziva  •  Naloge odprave  •  Tekmovalna pravila

Tekmovalne ekipe se s svojimi roboti pomerijo na poligonu, ki predstavlja Marsovo površje. Poligon vsebuje različne naloge, ki ponazarjajo raziskovalne cilje znanstvene odprave. Ekipe imajo na razpolago omejen čas, da z roboti opravijo čim večje število nalog. Naloge so točkovane glede na težavnost – zmaga ekipa, ki zbere največ točk. Ključni izziv za tekmovalce predstavlja otežena komunikacija z roboti zaradi posnemanja časovne zakasnitve pri potovanju signala do Marsa in nazaj. Hkrati tekmujeta po dve ekipi, pri čemer izvedeta več časovno omejenih ponovitev za vsako tekmo. Najboljše tri ekipe bodo nagrajene.

Člani dveh tekmovalnih ekip se nahajajo v kontrolni sobi, ki je ločena od poligona. Od tam upravljajo robote preko svojih prenosnih računalnikov. Dogajanje na poligonu lahko spremljajo samo preko videokamere, ki je postavljena navpično nad poligonom. Z robotom lahko komunicirajo izključno preko strežnika, ki ga postavijo organizatorji in na katerega se povežejo preko lokalnega omrežja. Strežnik namerno povzroča nekaj sekundno zakasnitev, tako pri prenosu slike s kamere kot tudi pri komunikaciji z robotom, in omejuje hitrost pošiljanja in prejemanja komunikacijskih paketov. S tem je neposredno vodenje robota neučinkovito, zato morajo tekmovalci zagotoviti, da so roboti sposobni samostojno izvajati tudi bolj kompleksne manevre.

Simbolični prikaz tekmovalne postavitve.

Simbolični prikaz tekmovalne postavitve.

Potrebna znanja in veščine

Ekipe potrebujejo osnovno znanje programiranja in veselje do sestavljanja lego kock. Zelo pomemben je občutek za delo v skupini in zagnanost k reševanju novih izzivov.

Program na robotu Lego Mindstorms

Tekmovalci morajo izdelati program, ki se bo izvajal na robotu Lego Mindstorms. Izbirajo lahko med množico programskih jezikov, med katerimi so najbolj priljubljeni RobotC, NXC in leJOS. Program mora poskrbeti za naslednje naloge:

  1. Vzpostaviti mora povezavo Bluetooth z osebnim računalnikom. Na razpolago sta že izdelani knjižnici v jezikih RobotC in NXC, po želji pa jih lahko tekmovalci napišejo sami na podlagi dane specifikacije.
  2. Robot mora (vsaj delno) avtonomno voziti po poligonu, na podlagi ukazov poslanih z osebnega računalnika.

Program na osebnem računalniku tekmovalcev

Za upravljanje robota z osebnega računalnika morajo tekmovalne ekipe najprej vzpostaviti komunikacijo s strežnikom, ki ga postavijo organizatorji. To je mogoče na dva načina:

  1. Običajen spletni brskalnik omogoča osnovno upravljanje robota in prikaz posnetka poligona.
  2. Zelo priporočljivo pa je, da tekmovalci izdelajo lastno aplikacijo za oddaljeno upravljanje robota in spremljanje stanja na poligonu. Pri tem si bodo lahko pomagali s primeri programov, ki bodo objavljeni na spletni strani. Komunikacija s strežnikom poteka preko pošiljanja zahtevkov HTTP.

Sestavni deli izziva

Celoten izziv lahko razdelimo na štiri pomembne dele: roboti, poligon, kontrolna soba in strežnik. V tem poglavju je podan podroben opis posameznih delov, opis nalog pa je podan v naslednjem poglavju.

Roboti

Tekmovalne ekipe sestavijo robote iz Lego kock in napišejo program, ki se bo izvajal na robotu. Pri oblikovanju morajo biti iznajdljivi, da konstrukcijo robota čim bolj prilagodijo nalogam na poligonu. Ob tem morajo upoštevati naslednje omejitve:

  • Robot je lahko izdelan iz kompletov Lego Mindstorms NXT v1.0 ali NXT v2.0, druge različice niso dovoljene. Študentskim ekipam komplete priskrbijo organizatorji, dijaki pa si jih priskrbijo sami.
  • Izdelan robot lahko vsebuje eno programirljivo kocko, največ tri motorje in največ štiri senzorje. Dovoljeni senzorji so: črno-beli svetlobni, ultrazvočni, in za dotik.
  • Največja dovoljena velikost gum je 56 mm x 26 mm, gosenice niso dovoljene.
  • Robot lahko na začetku tekme meri največ 30 cm x 30 cm x 30 cm, pozneje pa ni omejitve.
  • Programirate lahko v poljubnem programskem jeziku. Organizatorji nudijo podporo za RobotC in NXC.

Poligon

Poligon je območje, na katerem se gibljejo roboti in nabirajo točke z reševanjem različnih nalog. Glavne lastnosti poligona:

  • Okvirna velikost je 4 m x 4 m.
  • Površina je sestavljena iz barvanih penastih plošč dimenzije 50 cm x 50 cm (glej sliko spodaj).
  • Večina površine je bele barve.
  • Dve črni plošči ponazarjata pristajalna modula vsake ekipe – to je območje, kjer sta na začetku tekme postavljena robota. Na notranjih stranicah je plošča obrobljena z belo črto debeline 2 cm, na zunanjih stranicah pa omejena s steno višine 25 cm.
  • Rdeče, zelene in modre plošče označujejo območja z nalogami.
  • Poligon je nekoliko razgiban tudi po višini (hribi, ravnine, doline).
  • Na poligonu se lahko nahajajo ovire, npr. kamen.
  • Navpično nad poligonom je postavljena kamera (primer posnetka s kamere).
  • Tekmovalcem bo na voljo »marsovid« (marsovski ekvivalent zemljevida) v elektronski obliki.
  • Na poligonu se nahajajo različne ovire in predmeti, ki predstavljajo sestavni del nalog.

Penaste plošče.

Primer tlorisa poligona.

Testni poligon s strežnikom bo na voljo tekmovalnim ekipam za preizkušanje. Lokacija bo določena pozneje.

Kontrolna soba

V kontrolni sobi se nahajajo člani dveh ekip, ki trenutno tekmujeta na poligonu. Iz nje ekipi upravljata svoja robota tako, da skušata izvesti čim večje število nalog v čim krajšem času. Podrobnosti:

  • Kontrolna soba se nahaja v bližini poligona z roboti, vendar je od njega ločena, tako da člani ekip nimajo neposrednega pogleda na dogajanje.
  • Ekipi uporabljata svoje računalnike, ki so žično povezani na strežnik HTTP, ki ga postavijo organizatorji.
  • Strežnik ekipama nudi zakasnjeno sliko stanja na poligonu.
  • Neposredna komunikacija z robotom ni dovoljena; poteka lahko izključno preko strežnika in je tudi časovno zakasnjena.
  • Ekipi lahko med seboj sodelujeta in se usklajujeta. Oviranje drugih tekmovalcev v kontrolni sobi ni dovoljeno.

Strežnik

Strežnik HTTP postavimo organizatorji. Strežnik skrbi za zajem slike s kamere nad poligonom in za dvosmerno komunikacijo med računalniki v kontrolni sobi ter roboti na poligonu. Organizatorji določimo interval in zakasnitev posredovanja paketov v obe smeri.

  • Strežnik komunicira s kontrolno sobo preko protokola TCP/IP, z robotom pa preko protokola Bluetooth.
  • Pošiljanje podatkov od tekmovalcev do robota:
    • Ekipa lahko z računalnika pošlje paket dolžine do 50 bajtov, vsebina je poljubna.
    • Količina paketov, ki jih ekipa lahko pošlje robotu, je omejena na časovno enoto. Na primer, en paket na 3 sekunde.
    • Strežnik simulira zakasnitev tako, da paket posreduje robotu šele po določenem času.
  • Pošiljanje podatkov od robota do tekmovalcev:
    • Robot lahko strežniku pošlje paket dolžine do 50 bajtov, vsebina je poljubna. Podatki iz paketa so po določeni zakasnitvi shranijo na strežnik in so na voljo ekipi.
    • Ekipa lahko dostopa do zadnjih shranjenih podatkov tako, da pošlje zahtevek na strežnik.
    • Količina zahtevkov na časovno enoto je omejena. Ob prejemu podatkov dobite tudi čas, ko je strežnik prejel paket od robota (časovni žig) in zaporedno številko paketa.
  • Prevzemanje drugih podatkov s strežnika:
    • Nad poligonom je spletna kamera, ki zajema slike. Zadnja shranjena slika je na razpolago ekipam na strežniku v obliki JPG datoteke. Ob prevzemu dobite tudi časovni žig s časom posnetka.
    • Na strežniku je shranjen zemljevid poligona v obliki tekstovne datoteke v posebnem formatu. Zemljevid je tekmovalcem na voljo že pred posamezno tekmo.
  • Ekipe pred začetkom tekmovanja registrirate svoje robote preko obrazca na strežniku in določite avtentikacijsko geslo. Zahtevki, poslani na strežnik, bodo morali biti opremljeni z imenom robota in izbranim geslom.
  • S strežnikom lahko komunicirate preko brskalnika ali preko lastne aplikacije, ki jo lahko napišete v poljubnem programskem jeziku.
  • Podatke za dostop do strežnika (statični naslov IP in vrata) bomo podali naknadno. Za preizkušanje doma bo na voljo tudi virtualni računalnik.

Raziskovalne naloge odprave

Robotsko odpravo na poligonu čaka pester nabor nalog. Robot jih opravlja v poljubnem vrstnem redu. Naloge so ovrednotene z različnim številom "raziskovalnih točk" glede na njihov doprinos k znanju o Marsu. Robot lahko osvoji največ 100 točk.

Panoramski posnetek

Površje Marsa je dobro poznano s satelitskih slik, toda bližnjih posnetkov pokrajine je bore malo. Robotska vozila imajo težave že pri vožnji po zaprašenih ravninah, kaj šele pri zaznavanju in izogibanju pečinam in skalam. Panoramski posnetek z nezastrtim pogledom na bližnjo pokrajino bo vsekakor povečal varnost robotov, jim izboljšal orientacijo in omogočil lažje načrtovanje prihodnjih odprav.

Robot mora priti na vnaprej izbran položaj in tam narediti obrat za vsaj 360° – obrat za manjši kot, na primer zaradi nenatančnosti pri izvajanju premikov, ne šteje. Položaj za panoramski posnetek je en sam in ni barvno označen, je pa prepoznaven iz geografskih značilnosti poligona, na primer, vrh vzpetine. Med obratom se morajo vsi deli robota, ki se dotikajo tal, nahajati na plošči, ki predstavlja vrh vzpetine. Naloga je vredna 20 raziskovalnih točk.

Primer vzpetine, na kateri je potrebno narediti obrat.

Vremenska postaja

Veliko nevarnost na Marsu predstavljajo peščeni viharji, ki so v preteklosti ogrozili že kar nekaj odprav. Da bi se izognili tovrstnim nevšečnostim, je potrebno na vetrovno območje postaviti postajo, ki bo pravočasno opozorila raziskovalne robote na bližajoče ujme. Prevoz postaje je pravi izziv, saj je z njo potrebno ravnati skrajno previdno, da pride do cilja nepoškodovana.

Robot mora iz pristajalnega modula (plošča črne barve) prenesti predmet, ki predstavlja vremensko postajo, na ploščo modre barve. Na poligonu sta dve modri plošči, ena za vsako postajo. Naloga je uspešno opravljena, če se ob izteku časa vremenska postaja vsaj malo dotika modre plošče, pri tem pa se druga postaja ne sme nahajati na isti plošči. Premikanje postaje druge ekipe je dovoljeno, razen če se ta nahaja v njihovem pristajalnem modulu. Postaja se na začetku nahaja v notranjem vogalu črne plošče. Naloga je vredna 15 raziskovalnih točk.

Vremenska postaja.

Artefakt

Nedavni satelitski posnetki so med raziskovalci povzročili veliko vznemirjenje. Slike namreč nakazujejo, da se na območju Elysium Planitia nahaja predmet nadvse zanimivih oblik. Pojavila so se ugibanja, da ta predmet ni naravnega izvora in gre morda celo za ostanek davne marsovske civilizacije. Katera odprava bo prva razvozlala skrivnost artefakta?

Na poligonu je samo ena plošča rdeče barve, na kateri se nahaja predmet, ki predstavlja morebitni artefakt. Raziskovalne točke dobi ekipa, ki ga pripelje do svojega pristajalnega modula. Naloga je opravljena, če se ob izteku časa predmet vsaj delno dotika črne plošče ekipe, ki ga je pripeljala. Če se predmet vsaj deloma dotika črne plošče, ga druga ekipa ne sme premikati, sicer pa je med prenosom po poligonu kraja dovoljena. Naloga je vredna 20 raziskovalnih točk.

Artefakt.

Iskanje življenja

Ali na Marsu obstaja življenje? To vprašanje bega že več generacij znanstvenikov in morda je sedaj napočil trenutek, ko bo nanj mogoče odgovoriti. Roboti so opremljeni s senzorji, ki omogočajo analizo bioloških aktivnosti v zajetem vzorcu snovi. Satelit v krožnici okoli Marsa je na določenih območjih na površju zaznal področja s povečano koncentracijo metana, ki predstavljajo izvrstno izhodišče za iskanje življenja na tem planetu.

Robot mora priti na ploščo zelene barve in na njej mirovati vsaj 5 sekund. Pri tem mora biti na plošči vsaj polovica robota. Plošči zelene barve sta dve, robot prejme 10 raziskovalnih točk za obisk vsake plošče (skupno največ 20 točk).

Reševalna akcija

Kmalu po pristanku na Marsu, odprava na svojih radijskih frekvencah zazna nenavadna sporočila, ki se pojavljajo v vedno istih vzorcih. Izkaže se, da signal pošilja robot z imenom Curiosity, ki je bil izdelan na Zemlji. Vozilce se je namreč znašlo v evidentni zadregi, saj je obtičalo v globoki sipini in potrebuje pomoč, da se izkoplje iz peščenega objema ter nadaljuje s potjo. Uspešna reševalna akcija robotske odprave planeta NXT bo zagotovo prispevala k izboljšanju medplanetarnih odnosov z Zemljo.

Na poligonu je postavljeno pokvarjeno robotsko vozilo, ki ima dva senzorja za dotik. Oba tekmovalna robota se mu morata približati in pritisniti vsak na en senzor. Ko sta oba senzorja v pritisnjenem položaju, se pokvarjeno vozilo premakne in naloga je opravljena. Posamezni tekmovalni robot ne sme pritisniti obeh senzorjev. Območje ni posebej označeno – je bele barve. Naloga prinese 20 raziskovalnih točk vsaki ekipi.

Zimovanje

Razvojne ekipe so veliko svojega časa in denarja porabile za načrtovanje in izdelavo robotskih vozil, ki opravljajo naloge na Marsu. Približuje se ledena marsovska zima, ki lahko resno poškoduje elektronske komponente in baterije. Po opravljenih raziskovalnih nalogah je za robote najbolje, da se zatečejo v varno zavetje pristajalnega modula. Tam se bodo lahko po dolgem zimskem spanju spet prebudili v naslednjo marsovsko pomlad.

Ekipa dobi 5 raziskovalnih točk, če se ob preteku razpoložljivega časa njihov robot v celoti nahaja v območju lastnega pristajalnega modula, kjer je tudi začel tekmo.

Pristajalni modul z ograjo in belimi trakovi na notranjih robovih. Vidna je tudi začetna postavitev vremenske postaje.

Tekmovalna pravila

V nadaljevanju so podane podrobnosti tekmovalnih pravil.

Obnašanje robotov na poligonu

Robotom je dovoljena poljubna interakcija z vsem, kar se nahaja na poligonu, tudi z robotom druge ekipe. Izjema je območje pristajalnega modula – črna plošča – nasprotne ekipe: robot tja sicer lahko zaide, ampak tam ne sme premikati predmetov in ne sme ovirati drugega robota, sicer ekipa po sodnikovi presoji prejeme 10 odbitnih točk.

Način točkovanja

Tekmujeta po dve ekipi sočasno. Dvoboji niso izločilni; ekipe neodvisno nabirajo točke skozi več ponovitev, pri čemer izmenjujejo začetne lokacije. Ko vse ekipe opravijo vnaprej določeno število ponovitev, so razvrščene po številu točk. Za prva tri mesta se pomerijo prve štiri ekipe. Postavitev poligona bo za vse ekipe enaka.

Posamezen tek

Na začetku teka sodnik odnese robota obeh tekmovalnih ekip na poligon. Postavi ju približno na sredino črnih plošč, vsakega na svojo ploščo. Oba robota obrne približno proti notranjemu vogalu črne plošče, torej proti sredini poligona za kot 45 stopinj. Začetek teka oznani sodnik. Takrat sproži odštevanje časa in na strežniku omogoči komunikacijo med osebnimi računalniki in roboti. Posamezen tek traja od dve do tri minute. Ta čas sodnik sprotno naznanja in potrjuje uspešno opravljene naloge ter dodeljuje točke ekipam. Pri končnem točkovanju se upošteva stanje na poligonu v trenutku, ko je čas potekel. V naslednjem teku robota izmenjata začetne položaje.

Sodelovanje med ekipami

Nekatere naloge in sam način točkovanja spodbujajo sodelovanje med ekipami. Ekipe se lahko medsebojno uskladijo, da z roboti rešijo skupne naloge in da se ne (preveč) ovirajo pri vožnji po poligonu in pri reševanju drugih nalog.

Vesoljski žerjav

V Marsovi orbiti se nahaja žerjav, ki lahko robotom pomaga v primeru, če se jim pripeti kaj neljubega. Njegova uporaba pa je časovno zelo potratna in poleg tega zmanjšuje zaupanje vesoljske agencije v uspešnost odprave. Zato morajo kontrolne ekipe ta pripomoček uporabljati nadvse premišljeno in čim bolj poredko.

Člani tekmovalne ekipe lahko kadarkoli zaprosijo sodnika, da med tekom s poligona pobere njihovega robota v zameno za 10 odbitnih točk. Sodnik postavi robota na mizo ob poligonu, kjer je na razpolago ekipi. Potem ga na željo ekipe spet postavi v poligon na začetno lokacijo na črno ploščo. Predmeti, ki jih je robot prevažal, ostanejo na mestu, kjer je bil robot odstranjen.

V času trajanja teka lahko samo en član ekipe zapusti kontrolno sobo in le z namenom, da pride zaprosit sodnike za odstranitev robota s poligona. Ekipi se odštejejo točke takoj, ko član zapusti kontrolno sobo.

Če obe ekipi sočasno zahtevata odstranitev robotov, pri čemer se robota dotikata (ali sta v »smrtnem objemu«), potem se vsaki ekipi odbije le 5 točk. V primeru, da se robota dotikata več kot 15 sekund nepretrgoma in se ekipi ne dogovorita za odstranitev, sodniki postavijo oba robota na začetno točko in vsaki ekipi odbijejo 5 točk.

Upoštevanje dosežkov na treningih in določanje tekmovalnih parov

Na vsakem treningu in na končnem tekmovanju bodo upoštevani dosežki ekip iz predhodnih treningov. V splošnem bodo boljše ekipe nastopile pozneje in bodo tako imele več časa za preučitev poligona in pripravo. Poleg tega bo ekipa, ki je uvrščena v boljšo polovico, lahko izbrala ekipo iz slabše polovice, s katero želi biti v paru. Pri izboru bodo imele prednost boljše ekipe: prvo-uvrščena ekipa bo imela na razpolago vse ekipe v spodnji polovici, drugo-uvrščena eno manj, tretje-uvrščena dve manj, itd. Ne glede na to sta lahko v paru tudi dve ekipi iz boljše polovice, ampak le v primeru, da se člani obeh ekip strinjajo.

Tekmovalcem v nobenem primeru ni dovoljeno lastnoročno prestavljati robota ali drugih predmetov na poligonu.

Organizatorji si pridržujemo pravico do spremembe in dopolnitve nalog ter tekmovalnih pravil.

Tehnična dokumentacija

Robot-strežnik  •  Strežnik HTTP  •  Virtualni računalnik

Komunikacija robot-strežnik preko protokola Bluetooth

Povzetek sporočilnega sistema, ki ga uporablja kocka NXT za komuniciranje po protokolu Bluetooth lahko najdete na tej spletni strani. Prenesete si lahko tudi podrobno specifikacijo, ki jo je izdal Lego.

Strežnik samodejno poišče vse robote tekmovalcev, ki so registrirani v tekmovalni sistem in jih doda na seznam nameščenih naprav. Povezava Bluetooth mora biti zaščitena s privzetim geslom '1234'. Namestitev robotov izvede skripta pair.py (na virtualnem računalniku se nahaja v C:\roboliga_pack\dsn\). Po opravljeni namestitvi vseh robotov lahko na strežniku poženemo skripto dsn.py, ki vzpostavi povezavo s trenutno aktivnimi roboti in čaka na prihajajoča sporočila s strani robota ali osebnega računalnika ekipe. Sporočila, ki jih pošilja robot, se postavijo v čakalnico in so na voljo ekipam šele po izteku vnaprej definirane zakasnitve (na primer 3 sekunde). Vsa sporočila, ki jih bo robot poslal strežniku pred iztekom zakasnitve, se zavržejo. V praksi to pomeni, da lahko robot pošlje samo eno sporočilo na vsake 3 sekunde.

Specifikacija podatkovnega paketa

Vsak podatkovni paket je sestavljen iz treh delov:

  • Zaglavje (5 bajtov):
    • dolžina paketa (1 bajt): vsebuje dolžino celotnega paketa. Dolžino paketa običajno zapišejo v operacijski sistem robota vgrajene funkcije in ga ni potrebno programsko določiti.
    • vrednost 0x80 (1 bajt): označuje, da na sporočilo ni potrebno odgovoriti s potrditvijo o prejemu.
    • vrednost 0x09 (1 bajt): označuje da gre za sporočilo in ne npr. ukaz motorjem
    • MAILBOX (1 bajt): pove v kateri poštni nabiralnik se bo sporočilo poslalo. Strežnik pakete vedno pošilja v MAILBOX 0. Pri prejemanju robotovih sporočil se parameter ignorira.
    • Dolžina sporočila (1 bajt): vsebuje dolžino sporočila, ki se pošilja, povečano za 1.
  • Sporočilo (največ 50 bajtov): vsebuje poljubno vsebino, ki se prenaša med računalnikom ekipe in robotom.
  • Vrednost 0x00 (1 bajt): označuje konec podatkovnega paketa.

Primeri programske kode

Na spodnjih povezavah lahko najdete primere knjižnic za komunikacijo in preproste programe, ki te knjižnice uporabljajo za izmenjavo podatkov s strežnikom:

Opis delovanja strežnika HTTP

Organizatorji smo zagotovili strežnik HTTP, ki mu pravimo satNeXT. Gre za sistem, ki skrbi za pošiljanje in prejemanje podatkov na in z robota ter zagotavlja druge pomembne informacije o sami tekmi. V tem dokumentu si bomo ogledali, katere zahteve podpira strežnik in kakšen je format sporočil, ki si jih izmenjujeta osebni računalnik tekmovalcev in strežnik.

Strežnik satNeXT teče na računalniku z lokalnim naslovom 192.168.8.117 (najbrž bomo naslov še kaj spreminjali, bodite na to pozorni). Na tem naslovu so v mapi satNeXT/ skripte in datoteke, ki jih boste potrebovali med tekmovanjem. Celotnemu spletnemu vmesniku na tej stopnji pravimo Nadzorni center misije. Najpomembnejša orodja so:

  • index.php: glavna spletna stran – nadzorni center misije. Večina povezav na ostale podsisteme je zbrana tu.
  • register.php: spletna stran, kjer prijavite svojega robota v sistem za komunikacijo,
  • send.php: skripta za pošiljanje podatkov robotu,
  • recv.php: skripta za prejemanje podatkov z robota,
  • satscan.php: spletna stran z najnovejšim posnetkom poligona in časovnim žigom slike,
  • satscan.jpg: najnovejši posnetek poligona (slika),
  • mapView.php: spletna stran, ki prikaže shemo poligona (marsovid),
  • maps/map.txt: datoteka z marsovidom, ki je aktualen v trenutni tekmi,
  • matchInfo.php: spletna stran s trenutnimi informacijami o tekmi.

Primer: Pogled posnetka poligona
V brskalnik vpišemo zahtevo: http://192.168.8.117/satNeXT/satscan.php.

Poleg tega lahko preko posebnega spletnega vmesnika tudi nadziramo sam potek tekme in skrbimo za administracijo podatkov tekmovalcev. Temu delu strežnika bomo rekli LASPP nadzorna plošča. Dostop je omogočen samo s poznanim geslom. Med treningi in glavnim tekmovanjem bo za tekmovalce ta del zaprt.

Nadzorni center misije

Prijava robota (register.php)

Vaš prvi korak je prijava robota v sistem. V prijavni obrazec vpišite ime, ki ste ga določili pri programiranju kocke NXT in ki se prikaže na vrhu zaslona na kocki, ko vklopite povezavo Bluetooth. Ime robota naj bo kratko, brez presledkov in brez šumnikov.

Izberite varnostno geslo, ki ga boste uporabili vedno, ko boste robotu poslali podatke ali ko jih boste želeli od njega prejeti.

Geslo lahko kadarkoli spremenite s klikom na gumb »Spremeni geslo« na glavni strani Nadzornega centra.

Pošiljanje podatkov robotu (send.php)

Skripta send.php poskrbi, da vašemu robotu dostavi želeno sporočilo. Za to potrebuje tri podatke:

  • ime robota (robot),
  • geslo (password) in
  • podatke za pošiljanje (data); največja velikost je 50 bajtov, vsebina je poljubna.

Vaša zahteva za pošiljanje bo uspela samo tedaj, ko bo vaš robot prijavljen v tekmo in bo tekma tekla. Poleg tega mora miniti določen časovni interval od vaše prejšnje zahteve za pošiljanje (npr. 3 sekunde).

Če našteti pogoji niso izpolnjeni ali če pride do kakšne druge napake, boste kot odgovor prejeli '-1'.

V primeru, da pošiljanje uspe, boste kot odgovor prejeli število poslanih sporočil robotu.

Primer: Robotu z imenom 'Robotek' bomo s pomočjo spletnega brskalnika poslali sporočilo 'Zivjo'. Pri prijavi robota smo izbrali geslo '1234'. V naslovno vrstico brskalnika vpišemo:

http://192.168.8.117/satNeXT/send.php?robot=Robotek&password=1234&data=Zivjo

Po določenem časovnem intervalu se bo v oknu brskalnika pojavil odgovor strežnika. Če pred iztekom tega časa zahtevo pošljete še enkrat, se ta ne bo izvedla uspešno in boste prejeli odgovor -1.

Zahtevo lahko na strežnik satNeXT pošljete tudi programsko. V pomoč smo vam pripravili nekaj primerov podrobno komentirane programske kode v Javi in Pythonu (prenesi kodo):

  • OdjemalecSend.java
  • odjemalec_send_v1.py (uporablja knjižnico 'requests')
  • odjemalec_send_v2.py (uporablja vgrajeni knjižnici 'httplib' in 'urllib')

Prejemanje podatkov z robota (recv.php)

Sporočila, ki jih robot pošlje strežniku satNeXT, se shranijo v bazi in jih lahko prevzamete kadarkoli v času trajanja tekme. Po tem se sporočila zavržejo. Vedno prevzemate najstarejše sporočilo. Zahteva za prevzemanje podatkov potrebuje naslednje parametre:

  • ime robota (robot) in
  • geslo (password).

Vaša zahteva za prejemanje sporočila bo uspela samo tedaj, ko bo vaš robot prijavljen v tekmo in bo tekma tekla.

Če našteti pogoji niso izpolnjeni ali če pride do kakšne druge napake, boste kot odgovor prejeli praznino (null).

V primeru, da prejemanje uspe, boste kot odgovor prejeli paket posebne oblike:

  • V prvih 4 bajtih je v binarni obliki zapisano celo število, ki pove, koliko paketov ste že prevzeli od robota. Bajti so urejeni po pravilu debelega konca (big-endian).
  • V naslednjih 4 bajtih je v binarni obliki zapisano celo število, ki predstavlja časovni žig v formatu UNIX. Gre za število sekund, ki je preteklo od 1. januarja 1970, 00:00:00. Bajti so urejeni po pravilu debelega konca (big-endian).
  • Naslednjih nekaj bajtov je namenjenih podatkom, ki jih je poslal robot. Prav tako so zapisani v binarni obliki. Teh podatkov je največ za 50 bajtov.

Primer: Prejeti želimo sporočilo, ki ga je robot z imenom 'Robotek' poslal na strežnik. Pri prijavi robota smo izbrali geslo '1234'. V naslovno vrstico brskalnika vpišemo:

http://192.168.8.117/satNeXT/recv.php?robot=Robotek&password=1234

Zahtevo lahko na strežnik satNeXT pošljete tudi programsko. V pomoč smo vam pripravili nekaj primerov podrobno komentirane programske kode v Javi in Pythonu (prenesi kodo):

  • OdjemalecRecv.java
  • odjemalec_recv.py (uporablja knjižnico 'requests')

Ogled satelitskega posnetka (satscan.php in satscan.jpg)

Nad poligonom je nameščena spletna kamera, ki zajema sliko na določen časovni interval in jo da na voljo po določeni zakasnitvi, s čimer simulira zakasnitev pri prenosu od Marsa do planeta NXT. V spletnem brskalniku lahko naložite stran .../satNeXT/satscan.php, ki prikazuje najnovejšo sliko poligona. Pod sliko je izpisan tudi časovni žig nastanka slike. Prav tako je na voljo neposredna povezava do slike: .../satNeXT/satscan.jpg.

Primer zajete slike na 2. uradnem treningu.

Če želite, lahko sliko poligona programsko prenesete na svoj računalnik za poznejšo obdelavo. To prikazujeta primera programske kode v Javi in Pythonu (prenesi kodo):

  • OdjemalecSatscan.java
  • odjemalec_satscan.py

Ogled marsovida (mapView.php, maps/map.txt)

Poleg zračnega posnetka poligona imate na voljo tudi shematski prikaz razporeditve barvnih plošč, skupaj z navedenimi višinami in morebitnimi posebnimi objekti na poligonu. Na spletni strani .../satNeXT/mapView.php se prikaže trenutno veljaven marsovid, ki je shranjen v datoteki .../satNeXT/maps/map.txt. Pomen oznak na marsovidu dobite s klikom na povezavo Legenda.

Datoteka map.txt (primer) je primerna za programsko branje, zapisana pa je na naslednji način:

  • V prvi vrstici sta dve celi števili, ki predstavljata število plošč v smeri X in Y.
  • V vsaki naslednji vrstici je opisana ena plošča na poligonu. Opis sestavlja pet celih števil:
    • koordinata plošče v smeri X,
    • koordinata plošče v smeri Y,
    • tip plošče (glej legendo za opis),
    • višina plošče,
    • tip objekta na plošči.
  • Posamezna števila so med seboj ločena s tabulatorjem ('\t').
  • Konci vrstic so označeni na način, kot ga določa sistem Windows ('\r\n').

Spremljanje tekme (matchInfo.php)

Potek tekme lahko spremljate preko spletne strani .../satNeXT/matchInfo.php. Na njej je izpisano trenutno stanje tekme, čas do konca tekme, imena robotov na poligonu, slike njihovih ekip in po koncu tekme tudi rezultat.

LASPP nadzorna plošča

Spletni vmesnik za administracijo celotnega sistema je dostopen na naslovu .../satNeXT/adminTools/. Dostop je zaščiten z geslom, ki ga boste za testiranje doma prejeli od organizatorjev.

Spletna stran je razdeljena na sledeče sklope:

  • Roboti
    • Urejanje podatkov: prijavi/izbriši robota, spremeni geslo, aktiviraj robota, počisti poslane/prejete podatke robota.
    • Spremeni geslo: spremeni geslo robota brez vpisovanja starega gesla.
    • Spari robote: odpre se novo okno, v katerem s klikom na gumb zaženemo skripto pair.py, ki poišče dosegljive naprave Bluetooth in se z njimi poveže. Geslo za povezavo mora biti na robotu nastavljeno na 1234.
  • Marsovidi
    • Izpiši seznam: seznam javnih in zasebnih marsovidov s povezavami za urejanje.
    • Uredi marsovide: ustvari nov marsovid, naloži/uredi/izbriši že obstoječega, objavi marsovid v javni mapi kot map.txt. Slednje pomeni, da bo ta marsovid predstavljal poligon v trenutni tekmi.
  • Tekma
    • Začni novo tekmo: odpre se nadzorna plošča za upravljanje tekme. Najprej izberemo robote, ki bodo tekmovali. Na voljo so samo roboti z znanim naslovom Bluetooth. Nato se prepričamo, da je objavljen pravi marsovid. Zatem s klikom na gumb Poveži zaženemo skripto dsn.py, ki se poveže z roboti. S klikom na ikono s sliko zaslona, dobimo pogled na izpis skripte dsn.py. Povezavo lahko kadarkoli prekinemo s klikom na gumb Prekini. Ko je sistem povezan na robote, lahko začnemo tekmo. Tekma se konča ob preteku časa ali ko pritisnemo gumb Stop. V obeh primerih tekme ne moremo nadaljevati, dokler se ne znova ne povežemo z roboti. Na koncu vpišemo dosežen rezultat v ustrezna polja in kliknemo na gumb Objavi rezultate. To povzroči izpis na strani za ogled stanja tekme satNeXT/matchInfo.php.
    • Stanje trenutne tekme: odpre se stran, ki je dosegljiva tekmovalcem z Nadzornega centra in omogoča spremljanje poteka tekme.
    • Kamera: omogoča zagon skripte VideoCapture.py in s tem zajemanje slike poligona. Pozor! Skripte za zajem slike ne morete končati na oddaljen način, ampak morate imeti dostop do računalnika, na katerega je kamera priklopljena. Zato ne zaganjajte skripte, če že teče.
    • Nastavitve: določimo lahko število robotov v tekmi, zakasnitev v povezavi in trajanje tekme.
  • Orodja za bazo
    Omogoča izvedbo izbranih akcij. Pozor! Uporabljaj previdno, ker lahko pobrišeš celotno bazo.

Virtualni računalnik

Za delo doma smo za tekmovalce pripravili virtualni računalnik. Za poganjanje virtualnega računalnika boste potrebovali VMware Player. V sistem se prijavite z imenom »roboliga« in geslom »tristokosmatih«. Iste poverilnice uporabite za dostop do baze MySQL in LASPP nadzorne plošče.

Če virtualni računalnik ne uspe vzpostaviti povezave z omrežjem, spremenite njegov naslov IP, da se ujema z vašim domačim omrežjem (npr. 192.168.1.117).

Na namizju je ikona za zagon programa XAMPP, ki zažene strežnik HTTP in bazo MySQL.

Prav tako sta na namizju bližnjici do map:

  • C:\roboliga_pack\ --> v njej je datoteka z nastavitvami komunikacijskega sistema roboliga.ini in skripte dsn.py, pair.py in VideoCapture.py.
  • C:\xampp\htdocs\roboliga --> mapa s spletnimi stranmi in skriptami.

Gradiva

  • Forum za obvestila in reševanje težav
  • Dokument PDF z opisom izziva, navodili in tehnično dokumentacijo   Prenesi
  • Virtualni računalnik (6,1 GB)   Prenesi |  VMware Player
  • Primeri programske kode:
  • Dokumentacija za protokol Bluetooth   Prenesi |  Podrobnosti protokola
  • Primer marsovida map.txt   Prenesi
  • Primer posnetka s kamere satscan.jpg   Prenesi
  • Prosojnice z uvodne predstavitve (28. 2. 2014)   Prenesi
  • Prosojnice s poletne šole FRI - pomoč pri programiranju   Prenesi
  • Rezultati prvega uradnega treninga (29. 3. 2014)   Prenesi
  • Rezultati drugega uradnega treninga (10. 5. 2014)   Prenesi
  • Posnetek glavnega tekmovanja (1. 10. 2014)

Treningi

1. trening  •  2. trening  •  Testni poligon

Rezultati uradnih treningov

1. uradni trening: komunikacija PC-strežnik-robot

Sobota, 29. marec 2014, ob 9:00 v avli Fakultete za računalništvo in informatiko.
Udeležba je obvezna za vse študentske ekipe.

Glavni namen prvega treninga je preizkus komunikacije med osebnim računalnikom tekmovalcev in njihovimi roboti preko strežnika, ki ga postavijo organizatorji.

Naloge tekmovalcev

Tekmovalci bodo morali pripeljati robota po določeni poti od začetnega položaja do cilja tako, da mu bodo pošiljali ukaze iz osebnega računalnika. Do treninga morajo na robotu implementirati program, ki sprejema ukaze s strežnika in izvaja osnovne premike – na primer obrat za poljuben kot in premik naprej za poljubno razdaljo. Na osebnem računalniku pa morajo implementirati vmesnik (ali pa uporabiti spletni brskalnik) za pošiljanje poljubnih ukazov robotu preko strežnika.

Potek

Organizatorji bodo postavili poligon velikosti približno 2x2 metra. Začetni in ciljni položaj robota ne bosta znana vnaprej, temveč jih bodo organizatorji določali sproti, za vsako ekipo drugače. S tem bo oteženo vnaprejšnje kodiranje poti v programu na robotu. Zakasnitev v komunikaciji bo 3 sekunde. Teki bodo individualni, vsaka ekipa bo imela na razpolago 30 sekund časa, da pripelje robota do cilja. Po potrebi bomo izvedli več ponovitev. Na poligonu bodo postavljeni vmesni cilji – za vsak prevožen cilj bo ekipa prejela točko. Doseženo število točk se bo delno upoštevalo pri končnem tekmovanju.

2. uradni trening: preizkus poligona in nalog

Sobota 10. maja 2014, ob 9:00 na Fakulteti za računalništvo in informatiko v predavalnici 3 – ob vstopu v glavno avlo pojdite naravnost na drugo stran in prišli boste neposredno pred predavalnico. Trening bo trajal okvirno do 12:00. Udeležba je obvezna za vse študentske ekipe in zelo priporočljiva za dijaške ekipe.

Na drugem treningu se bomo najprej dobili v predavalnici, kjer bodo organizatorji predstavili novosti in dopolnjena pravila, nato pa bodo ekipe preizkusile sistem tekmovanja in težavnost nalog na poligonu.

Naloge tekmovalcev

Poleg nalog iz prvega treninga, morajo sedaj tekmovalci konstrukcijsko in programsko dopolniti svoje robote tako, da bodo lahko opravljali vse naloge glavnega tekmovanja.

Potek

Najprej bomo v predavalnici natančno obrazložili točkovanje in pravila, ki bodo v veljavi tako na treningih, kot na glavnem tekmovanju. V skladu s pravili za upoštevanje dosežkov na treningih, bomo na podlagi rezultatov iz prvega treninga oblikovali tekmovalne pare za poskusno tekmovanje. Nato bodo tekmovalci preko brezžičnega omrežja registrirali svoje robote in jih sparili s sistemom. Organizatorji bodo na razpolago za morebitna vprašanja.

Poskusno tekmovanje

Poligon bo velikosti 3x3 metre in bo vseboval vse naloge z glavnega tekmovanja. Točkovanje in sistem tekmovanja bo enak oz. podoben kot na glavnem tekmovanju, z izjemo, da tokrat člani tekmovalnih ekip ne bodo odmaknjeni od poligona, ampak bodo lahko spremljali dogajanje neposredno. Zato tudi slika s kamere ne bo zakasnjena. Komunikacija bo zakasnjena za dve sekundi. Marsovid bo na razpolago. Naenkrat bosta na poligonu tekmovali dve ekipi. Vsak par ekip bo opravil dva teka – po enega iz vsakega začetnega položaja. Upošteval se bo boljši rezultat. Posamezen tek bo trajal dve minuti in pol. Rezultate iz drugega treninga bomo upoštevali pri oblikovanju parov na tretjem treningu.

Testni poligon

Za lažje priprave na glavno tekmovanje, so organizatorji pripravili testni poligon. Nahaja se v novi stavbi Fakultete za računalništvo in informatiko v 2. nadstropju. Prostor ima oznako R2.42 in je v neposredni bližini Laboratorija za adaptivne sisteme in paralelno procesiranje. Za boljšo orientacijo si oglejte načrt prostorov.

V prostor s poligonom lahko pridete le s posebnim elektronskim ključem. Vsaka tekmovalna ekipa lahko prevzame en ključ, in sicer v dekanatu (3. nadstropje, nasproti glavnega stopnišča). Vrata odklenete tako, da elektronski ključ približate črni ploščici na levi strani vrat. Ko so vrata odklenjena, zasveti zelena lučka. V sobi je postavljen poligon iz penastih plošč, na stropu je širokokotna spletna kamera in takoj pri vhodu je računalnik-strežnik z nameščenim virtualnim računalnikom. Na strežnik se lahko povežete preko brezžične povezave - podatki za dostop so napisani na vijoličnem listku na ohišju strežnika.

Pravila obnašanja
•  Prepovedano je stopiti na penasto ploščo, saj se takoj umaže in deformira.
•  Ko končate z delom, postavite predmete na poligonu nazaj na začetno pozicijo.
•  V prostoru skrbite za red in čistočo.
•  Ko zapuščate prostor, ugasnite vse luči in zaprite okna.
•  Zaklepajte vrata za seboj. To storite tako, da elektronski ključ približate črni ploščici na levi strani vrat. Zasveti oranžna lučka.
•  V primeru težav se obnite na organizatorje.

Pokrovitelji

Iskreno se zahvaljujemo pokroviteljem, ki so z privlačnimi nagradami podprli letošnjo Robo ligo FRI. Hvala!


Zmagovalci Robo lige FRI 2012 so bili nagrajeni z enotedensko izposojo avtomobila Toyota Prius. Kateri ekipi bo predstavnik Toyote tokrat izročil avtomobilske ključe?

Kontakt

  roboliga@fri.uni-lj.si
  01/47-98-231

Tehnično ekipo sestavljajo člani Laboratorija za adaptivne sisteme in paralelno procesiranje (LASPP):

Davor Sluga,
Nejc Ilc,
Tom Vodopivec in
Uroš Lotrič.

Za administracijo skrbi Služba za komuniciranje FRI.

Najdete nas na Fakulteti za računalništvo in informatiko na Večni poti 113. Nahajamo se v 2. nadstropju, v prostoru z oznako R2.41 (načrt prostorov).