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:
- Stránky organizátorů: http://www.robotchallenge.at/
- Stránky Jirky Iši (fotky a videa)
- Robozor: sumo a slalom
- http://robotika.sk/