czech english

Robot Challenge 2009

šestý ročník mezinárodní soutěže ve Vídni

Soutěž Robot Challege pořádá již několik let rakouská společnost pro inovativní počítačové vědy (InnoC.at). Letos nám to konečně nedalo a vydali jsme se k našim jižním sousedům podívat. Přihlásili jsme i dva roboty do kategorie Puck Collect a dopadlo to celkem dobře …


Letos poprvé se celá akce konala v Aula der Wisseschaften v centru Vídně. Jednalo se o rozlehlou místnost, se starými freskami na stopě, kterou celý den proudily davy lidí. Do soutěže bylo přihlášeno celkem 170 robotů v deseti kategoriích. Každý robot mohl nastoupit hned do několika z nich. Trochu si je představme.

Sumo

Sumo samotné má hned několik podkategorií. Jednak je to MiniSumo, které můžete každoročně vidět i na Českém robotickém dni konaném společně s národním kolem soutěže Eurobot (letos to bude 25. dubna v Praze). Jedná se o malé roboty omezené základnou 10x10cm (výška není omezena) a vahou do 500g.
Na RobotChallenge byly k vidění i další: Micro Sumo (5x5cm, 100g), Standard Sumo (20x20cm, 1.5kg) a Humanoid Sumo. Celý soutěžní den byl ještě zakončen kategorií Mini Sumo Deathmatch, kdy roboti s Mini Suma zápasili všichni současně na velikém hřišti.

Slalom

Slalom je přesněji jízda po čáře. Kategorie zde byly dvě: Parallel Slalom a Slalom Enhanced. Druhá varianta zahrnovala podúlohy, které možná znáte z Istrobota: tunel, přerušení čáry a cihla na cestě.

Humaniod Sprint

Humaniodni roboti mohli vedle sumo zapasů ještě běhat sprint. Jednalo se o cca 3m dlouhou dráhu, na jejímž konci se měl robot otočit a běžet zpět. Je to poměrně netriviální úloha, ale věřím, že podobných kategorií bude s rozvojem robotiky přibývat.

Free Style

Již klasická je kategorie volná jízda, kde můžete předvést téměř libovolného robota. Letos byl k vidění samobalancující robot, samo-se-navigující vozítko a pod. K vyhodnocení byla jednak sestavena komise a dále diváci mohli hlasovat pomocí SMS zpráv.

Puck Collect

Sběr puků byla kategorie, do které jsme přihlásili dva naše roboty. Jedná se o bíle natřené hřiště 2.8x2.8m, lemované 10cm vysokým zeleným mantinelem a dvěma startovními poli 70x70cm v protějších rozích. Na hřišti je celkem 10 červených a 10 modrých puků a cílem plně autonomních robotů je co nejrychleji nasbírat všechny puky a dovézt je na své startovní pole.
Detailnější popis všech pravidel naleznete (i v češtině) na stránkách organizátorů: www.robotchallenge.at.

Eduro

Eduro byl první robot, kterého jsme do Puck Collect kategorie přihlásili. Vznikal v celkem nepříjemném časovém presu, protože ještě týden před soutěží měl robot tvar reklamního poutače z CeBITu.
Vedle kompletní rekonfigurace bylo třeba umístit IR dálkoměry, aby detekovaly mantinel hřiště, vyrobit a vyzkoušet nabírací mechanismus, a pak už jenom napsat „nějaký” software.

Software

Na napsání software bylo hrozně málo času. Zpětně bych to skoro nazval Extreme Robotics Programming, protože k integraci kamery, čtení a zpracování obrázků, komunikaci mezi dvěma procesy (řídicí program a kamera), herní strategie a vyhýbání soupeři zbylo 11h čistého času. Naštěstí už bylo na čem stavět, protože robot uměl jezdit z místa na místo, načítat data ze Sharpů, případně reagovat na přepínače a EmergencyStop tlačítko.
Za nejdůležitější jsme považovali schopnost robota vrátit se domů. K tomu byly použity boční Sharpy (umístěné za kolem) s dlouhým dosahem. Problém byl ale ve „slepé zóně”, která je pro tento typ senzorů cca 20cm a kde naměřené hodnoty odpovídají vzdálenému předmětu. Pro Sharpy s krátkým dosahem (GP2Y0A21YK0F) toto lze nejlépe řešit mechanicky. Senzory jsou zabudované uvnitř robota a tato zóna je tedy také celá robotem pokrytá. Toto mechanické řešení ale nebylo možné pro Sharpy s dlouhým dosahem a tak po zapojení Monte-Carlo Lokalizace v blízkosti překážky robot velmi rychle narazil. Měl pocit, že překážka je čím dál více vzdálenější. Obojakou funkci, která akceptovala vzdálená měření i jako blízká jsme implementovali až v den soutěže ráno a o jejím důkladném testování tedy nemůže být řeč.
Když už robot věděl kde je, tak dalším krokem bylo sebrat nějaké puky. Ve verzi 0 jsme chtěli brát všechny puky a byla by tedy šance 50:50, že to dobře dopadne (samozřejmě za předpokladu, že se soupeř nepokusí posbírat správné puky … ). Robot by se ale pohyboval a něco by dělal, takže diváci by byli spokojeni. Generovaná trasa byla tam-a-zpět a pokryvala skoro celé hřiště. Co zbývalo dořešit, vedle barvy, byla kolize se soupeřem. Co v takovém případě dělat?
Nic jednoduchého k naprogramování jsme nevymysleli, a tak jsme celkově přešli na jinou strategii:
  • jeď na konkrétní cílovou pozici
  • pokud cestou tam narazíš na soupeře, couvni si a vrať se domů
  • pokud cestou domů narazíš na soupeře, couvni si a jeď na další cíl
Toto se opakovalo, dokud nevypršel tříminutový časový limit. Robot se jednak vyhýbal soupeři a navíc hrál „malá domů”, tj. pokud cestou nasbíral nějaké puky tak už je nechával na startovním čtverci. Konečně do této strategie bylo možné zapojit i informaci o barvách puků na cestě: „Pokud ti v cestě k cíli překáží puk barvy soupeře, tak reaguj, jako by jsi narazil na nepřátelského robota.” Na cestě domů měl robot barvu puků ignorovat — větší zlo by bylo nedovézt své puky než tam přimíchat i puky soupeře.
Tato strategie by fungovala, ale pokud jste měli nepřátelský puk na diagonále blízko startovního pole, tak robot většinu hřište vůbec nebyl schopen navštívit. Navíc se často vracel s prázdnou a mnohokrát dokonce jen s puky soupeře. Drobná modifikace (dík za nápad Davide ) byla, že robot se z cílové pozice vracel domů pouze když už sebral nějaký vlastní puk. V opačném případě rovnou pokračoval na další cíl. To byla strategie, se kterou jsme pak celý den soutěžili.

Zápasy

V prvním zápase jsme uvažovali, jestli jsme to s tou přátelskostí vůči soupeři nepřehnali. Nepřátalskému robotu se Eduro evidentně líbilo a tak na ně neustále zpředu dorážel. Eduro couvlo, pak znovu, a zase … až skončilo po zbytek zápasu bloklé u mantinelu.
V dalších zápasech jsme však naší tolerance nelitovali. Mnoho robotů bylo totiž ze stavebníce LEGO (!) a je lepší si couvnout, než drtit soupeře na součastky. Ono stačilo, když přední sharpy občas nereagovaly …
Eduro pomalu začalo sbírat body, občas pár pro soupeře, ale vlastně postupně vyhrálo většinu zápasů. Škoda jen, že v kódu zůstaly zadané jen cíle pro testování lokalizace a prostor tedy nebyl dostatečně pokryt. Od okamžiku, kdy mne zradila jak wifi, tak baterka na notebooku (děkuji ti milé IBM-Lenovo, opravdu jste se to za ty roky nenaučili vyrábět), tak jsem odmítal na cokoliv sáhnout.
Eduro však čekala jedna významná prohra a to ve finálovém zápase. Náš robot, skrblíce si červené puky naivně v domečku, netušil, že se mu tam vloudí rakouská jezinka a všechno mu vyžere . Prostě soupeř měl lepší strategii a oprávněně vyhrál.
Na prohození barev nebylo moc času, takže před zápasem nebyly uklizeny obrázky z robota. To byl pravděpodobně důvod chvilkového výpadku, kdy robot nedonesl domů dva modré puky ke dvěma již sebraným. Soupeř měl stejně pět a zaslouženě vyhrál. Rakousko tedy první a Česká Republika s robotem Eduro druhá. To není zas tak špatné, pro poprvé. Co myslíte? Aspoň nějaká další meta do budoucna.

Cogito

Tým Cogito se soutěže zúčastnil s robotickou platformou mob2, používanou k výuce robotiky na Matematicko-fyzikální fakultě Univerzity Karlovy v Praze. Soutěž jsme pojali jako první náročnější otestování těchto robotů a záminku k napsání potřebných částí řídícího software. Na přípravu tohoto týmu bylo sice trochu více času, než v případě Edura, ale muselo se toho udělat mnohem víc. Eduro je již věkem vyzrálý a zkušenostmi ošlehaný robot, který slyší na pokyny „jeď do bodu [X,Y].” Ne tak naši mobi. Ti neměli ještě dva týdny před soutěží funkční komunikaci mezi řídícím PC (které se letos při výuce z tohoto důvodu nepoužívalo) a jednočipem řídícím hardware. V dalším kroku vývoje jsme museli začít měřit a rozumně řídít rychlost pohybu a počítat, kam asi robot vlastně dojel. Na pokročilejší finty, jako je např. Monte Carlo lokalizace nebo Kalmanovy filtry pak vůbec nepřišla řada.
Naší strategií bylo křižovat hřiště po pevně zadané trase a v případě, že s pomocí kamery zahlédneme vlastní puk, pokusit se ho sebrat. Tato strategie a náš hardware z velké části ignorují soupeře. Ty jsme mohli detekovat pouze jako překážku, do které jsme narazili a která nám brání v dalším pohybu. Proto je z pohledu soutěžících legobotů snad jenom dobře, že jsme s naším 6.6 kg těžkým robotem museli ze soutěže po třetím kole odstoupit. Nastaly hardwarové potíže, jejichž příčinu se ještě snažíme zjistit.
I přes naše odstoupení jsme se soutěží spokojení. Celá soutěž se konala v přátelském duchu a příjemné atmosféře robotického dne. Pro naše moby vznikla spousta tolik potřebného základního řídícího software, jehož vývoj by jinak trval několik následujících měsíců, a nabyli jsme další poznatky o hardware, které využijeme při dalších úpravách těchto výukových robotů. Na další soutěže pojedeme s o trochu "dospělejšími" roboty

Závěr

Soutěž RobotChallenge se nám rozhodně líbila a všem ji vřele doporučujeme. Vídeň není tak daleko a zúčastnit se mohou i úplní začátečníci. Navíc registrace je zdarma, takže to není až takové trauma pro vaši peněženku (cestu a případné ubytování si hradí každý sám). Děkujeme organizátorům a snad za rok na viděnou.

Odkazy:


Další fotky

Puck Collect

Parallel Slalom

Sumo

Humaniod Sprint

Free Style

Výsledky

Pošlete email redakci.
Všechny materiály, které máme k dispozici, jsou již součástí článku, na který reagujete (tj. pokud tam tedy není např. plánek na stavbu, je to proto, že nic takového nemáme).

Vaši zprávu se bohužel nepodařilo odeslat, ale můžete nám napsat sami na adresu

Vaše zpráva byla úspěšně odeslána

Pro odeslání formulář je třeba mít zapnutý javascript.