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