czech english

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: