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/
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 webmaster-at-robotika.cz
Vaše zpráva byla úspěšně odeslána
Pro odeslání formulář je třeba mít zapnutý javascript.