Robot Challenge 2010
614 registrovaných robotů
Soutěž Robot Challege exponenciálně roste a snaží se o zápis do Guinessovy knihy rekordů. Stejně jako minulé ročníky ji pořádá rakouská společnost pro inovativní počítačové vědy (InnoC.at). Letos už zabrala dva velké sály ministerstva pro vědu v centru Vídně a soutěž musela být dvoudenní. Česká účast byla velmi dobrá —dařilo se ve volné jízdě a opět v kategorii Puck Collect …
Pravidla viz minulý ročník
Alpha Rektorys
Tým Alpha Rektorys byl založen v říjnu 2009 Gabrielem Zábuškem a Janem
Vyšohlídem, dvěma studenty informatiky na Matematicko-fyzikální fakultě
Univerzity Karlovy v Praze. Oba se zajímají o embedded systémy a robotiku s
tím, že Alpha Rektorys byl jejich prvním robotickým projektem. Cílem bylo
sestrojit univerzální robotickou platformu a zúčastnit se s ní soutěže
Eurobot 2010.
„Během února 2010 jsme se rozhodli, že by bylo dobré robota vyzkoušet a
otestovat i v jiné soutěži a to ještě před soutěží Eurobot. Přihlásili jsme se
proto do soutěže Robot Challenge 2010 na ""line follower"" (jízdu po čáře) a
""line follower enhanced"" (jízdu po čáře s překážkami).”
Hardware
Celý systém robota je postaven na hlavní desce založené na čipu ARM9 s
frekvencí 400MHz, na němž běží naše vlastní "distribuce" Linuxu. Ten přes
sběrnici I2C řídí dva koprocesory založené na čipech ARM7 a ATMega128. ARM9 je
dále propojen s barevným LCD dotykovým displejem, přes který se spouští vybraný
algoritmus a k desce je možné připojit také USB kameru. Robot je postaven na
pásovém podvozku se dvěma DC motory. Ke sledování čáry je použito šest předních
senzorů CNY70 a při přerušení čáry se směr jízdy koriguje ještě dvěma zadními
senzory CNY70.
Software
ARM9 řídí běh celého systému, ARM7 má na starosti pět sonarů SRF05, ATMega128
řídí motory, implementuje algoritmus sledování čáry a bude také ovládat
enkodéry, ale ty jsme do soutěže nestihli udělat, takže nebyla použita žádná
odometrie a jeli jsme čistě podle senzorů CNY70.
Line follower
Algoritmus sledování čáry je založen na korekci směru jízdy podle toho, který
senzor čáru detekuje. Pokud se čára objeví pod vnějšími senzory, je robot
natolik vychýlen, že by nemusel díky své velikosti a hmotnosti zatáčku
zvládnout a proto na chvíli zastaví a otočí se na místě tak, aby čára byla pod
prostředními senzory. Robot s číslem 279 neměl šanci porazit malé rychlé roboty
soupeřů a nakonec skončil s časem 00:47.47 na 42. místě. Vzhledem k tomu, že to
byla naše první soutěž, chtěli jsme trasu úspěšně projet a cíl jsme si tedy
splnili.
Line follower enhanced
Jako hlavní cíl jsme si určili projetí celé trasy v této kategorii. Jak už to
na soutěžích bývá, ne vše se stihne udělat a pro nás to bohužel znamenalo, že
jsme nezvládli dokončit a pořádně otestovat objíždění cihly. Tunel i přerušenou
čáru robot nakonec ve většině případů zvládl, ale při objíždění cihly se mu
nikdy nepodařilo navázat na čáru za cihlou a tuto kategorii jsme tedy bohužel
ani nedokončili.
Cogito MART
Tým
Matfyzácký robotický tým (odtud MART) vznikl v rámci příprav přednášky
Úvod do
mobilní robotiky na Matematicko-fyzikální fakultě Univerzity Karlovy v Praze.
Použitý podvozek a části kódu používáme na cvičení k této přednášce a pro další
soutěže. První soutěží týmu a podvozku byla právě předchozí RobotChallenge. Tam
nám ošklivě selhal hardware, takže letošním přáním bylo: „Ať se to hlavně
nestane znovu.” Získané druhé místo v kategorii Puck Collect je velmi pěkný
výsledek
Hardware
Hardwarově se robot trochu podobá loňské verzi: Jedná se opět o podvozek Mob2.
A trochu se liší: Vrchní blok s MiniITX deskou a akumulátory byl nahrazen
netbookem Asus EEE 901 (dlouhá výdrž, SSD disk). Puky jsou detekovány USB
webkamerou, překážky (včetně soupeře) pomocí pěti Sharpů s různými rozsahy
viditelnosti. Loňská uzavřená radlice (obrácené V s useknutým dnem) byla
nahrazena otevřenou U radlicí. Cílem je SBĚR puků, tak přeci nebudeme vybíraví,
že?
Software
Software prožil od loňska úplné přepsání a s ním návrat ze světa přání do světa
skutečnosti. Víceméně. Minulé použití
Playeru bylo poučné, letošní téma je
„Jak by vypadal robotický systém, kdybychom (si) ho programovali my?” Cogito
MART jezdil s implementací využívající AMQP (server
RabbitMQ, klientská knihovna
py-amqplib). Rozhraní mezi moduly je
tak určeno strukturou zasílaných zpráv, se zachováním výhod Playeru (např.
snadná náhrada robota za simulátor pro základní testování řídícího kódu), ale
téměř odpadá závislost na konkrétním programovacím jazyce - Moduly je možné
psát v C, Pythonu, Javě, Erlangu a v několika dalších jazycích. Kód zpráv je
automaticky generován z jejich jednoduchého popisu ve formátu
YAML.
Příklad popisu zprávy:
- Position2dInfo: # Informace o pozici robota ve 2D. - time: double # [s] - x: double # [m] - y: double # [m] - phi: double # Natoceni robota. [rad, kladny smer otaceni od osy x]
Příklad vygenerovaného kódu uvádět nebudeme, není ho málo (konstruktor, binární
serializace, binární deserializace, převod na tisknutelný řetězec, čtení z
takového řetězce, …). Výhodou je, že po vychytání chyb generátoru je
přidávání nových typů zpráv snadné a bezrizikové. Koho by bavilo psát ručně pro
každou zprávu parser a rozhraní (třeba navíc v programovacím jazyce odesílatele
a podruhé v programovacím jazyce příjemce), pak ho odladit a pak ho udržovat?
Strategie týmu byla prostá: Co bylo dobré loni pro Eduro, je dobré i letos pro
Cogito MART. Robot tedy jezdil směrem na několik pevných pozic (narozdíl od
loňského Edura jich bylo víc a střídaly se náhodně). Když po cestě potkal
soupeřův puk, nebo dokonce soupeře, otočil se směrem na další z přednastavených
bodů. Pokud měl v okamžiku volby příštího cíle robot za to, že už sebral nějaký
vlastní puk, vydal se odvézt ho domů.
Průběh soutěže
Oproti minulému ročníku probíhalo mezi týmy více diskuzí na téma sbírání
soupeřových puků a jejich výsledné blokace. Náš názor krásně shrnul člen
britského týmu Puckman: „Nelíbí se mi to, není to gentlemanské.” V letošním
ročníku se nakonec prosadily týmy s podobným názorem. K tomu nemálo přispěl tým
Cogito MART vyřazováním těch ostatních. To máte tak … když si vezete domů
vlastní puk, jedete proti zdi. Takže, chtě nechtě, musíte na chvíli vypnout
detekci překážek. Nu, a když tam zrovna chytnete soupeřovu jezinku, která nejen
že vám vybrala puky z hřiště, ale teď vám vykrádá i domeček … a když ji tam v
marné trvalé snaze dojet až domů zablokujete … to byste nevěřili, kolik vám
tam takový nachytaný zloděj přivezl bodů A my jsme jezdili domů opravdu
často.
Za klíčový prvek považujeme právě průběžné vracení se s puky domů. Soupeř vám
je sice pak může z domečku vykrást, ale riziko srážky (nebo jiného problému)
během zápasu je větší. Takže roboti velmi často na konci zápasu domů už dojet
ani nemohou. Ten jeden jediný puk, který si dovezete na začátku zápasu domů pak
rozhoduje zápas (i to se nám stalo - v semifinále).
Cogito MART postoupil ze základní skupiny z posledního postupového místa,
daleko za týmem Eduro. V prvním kole vyřazovacího pavouka (proti vítězi druhé
základní skupiny) rozhodl zápas již zmíněný jeden puk - Náš robot se ztratil,
soupeřovu robotu se zalíbila jeho záď a zůstal na ni do konce zápasu obdivně
hledět. Jdeme do čtvrtfinále! Ve čtvrtfinále jsme potkali (další) jezinku.
Dobře jí tak! Jdeme do finále! Tak tam jsme prohráli. Za domácí úkol si
nastudujeme vliv plánovače úloh v operačním systému na řízení robota (to když
procesor na 0.3 sekundy obsadí jiná úloha …). Blahopřejeme gentlemanskému
slovenskému týmu J2MP k vítězství! Pěkně vám to jezdilo.
Eduro
Robot Eduro byl letos přihlášen hned do dvou kategorií. U registrace ještě
jednou ověřovali, zda ten samý robot bude soutěžit ve sběru puků i jízdě po
čáře s komentářem this will be interesting a věru robot číslo 179 byl
jediný s touto podivnou kombinací.
Hardware
Po stránce mechaniky a elektroniky bylo Eduro téměř totožné s loňským modelem.
Bytelnější bylo uchycení kamery (stejné jako na
Robotour 2009), na detekci nepřítele byl použit
jen krátký IR a do stran byly dva dlouhé IR Sharpy pro lokalizaci.
Software
Puck Collect
Software byl „volně přepsán” z jazyka C++ do Pythonu. Za elegantnější zápis
se však platilo rychlostí. Obraz z kamery byl stále zpracováván externím
programem a vedle počtu červených a modrých pixelů vyhodnocoval i jejich
pozici. Dále lokalizaci již nebylo možné řešit v řídící smyčce a tak bylo
použito paralelní vlákno, úspěšně. Alternativa opět byla pozici robota počítat
externě, ale to by se už pomalu ztrácela krása jednoduchého popisu programu.
Po velkých plánech algoritmus nakonec zůstal hodně při zemi. Robot zase jel po
předem definované trase, ale pokud uviděl vlastní puk, tak udělal mírnou
korekci, aby puk sebral. V případě nepřátelského puku se naopak pokusil o
vyhnutí. Zatímco sběr vlastních puků byl celkem úspěšný vyhýbání často skončilo
sebráním nepřátelského puku. Přesto robot bodoval a pokud detekoval nepřítele,
tak se mu snažil vyhnout (pravda, ne vždy úspěšně).
Line Follower
Přestože jízda po čáře je považována za lehkou kategorii, za těch pár hodin
se nám Eduro nepodařilo pořádně připravit. Tam kde jiní nasazuji malé a rychlé
stroje mělo Eduro vynikat „inteligencí” . Pro hledání čáry používalo
stejný senzor jako na puky, tedy IP kameru. Naivní představa byla analyzovat
snímek, vyhledat čáru a navigovat se po ní dokud nepřijde další zpracovaný
snímek. Takový SLAM (Simultaneous Localisation And Mapping) v malém.
Realita = Eduro vidělo daleko více, než by chtělo. Mám na mysli především nohy
diváků, vlastní stíny a odrazy čáry, které byly světlejší než bílý podklad.
Taky čára byla dost šílená klikatice (ano, měl jsem si pořádně nastudovat
pravidla), takže místo jednoduché křivky bylo hned několik alternativ. Čára se
často ztrácela ze zorného pole, takže správně by bylo si pamatovat i předešlé
snímky atd.
Výsledek byl dost tristní, takže zatímco malé děti stíhali objet okruh pod
minutu, Eduro v nejlepším výkonu zdolalo půlku trasy. Vzhledem k odrazům a
problémovému osvětlení už Line Follower Enhanced není velký krok (navíc je tam
cihla přes cestu), takže příště tří kategorie? Tentokráte to musí vyjít
Odkazy:
- Stránky organizátorů: http://www.robotchallenge.at/
- Stránky Jirky Iši (fotky a videa)
- http://robotika.sk/