SICK Robot Day 2010
účast tří českých týmů
Letos německá firma SICK uspořádala další ročník soutěže pro autonomní roboty. Úkolem robotů bylo v aréně o průměru zhruba 15m lokalizovat tabule s číslicemi 0 až 9, a co nejrychleji projet zadanou sekvenci. Startovali vždy dva roboti současně s tím, že jeden startoval z 0 a hledal čísla od 1 do 9 a druhý jel v opačném pořadí, tedy start v 9 a měl se dostat na 0. Časový limit byl 10 minut. V aréně samotné bylo mnoho překážek, kterým se bylo třeba vyhnout. A jak se dařilo?
Soutěž se konala ve městečku Waldkirch v Německu, kde firma SICK sídlí. Kopečky
v okolí trošku připomínají Šumavu a tak bude-li nějaké „příště” by možná
stálo za to si vyšetřit jeden den odpočinku a po náročné soutěži a cestovaní (z
Prahy je to asi 650km) to kompenzovat pěší turistikou.
Akce se účastnilo nakonec 16 týmů: dvanáct německých, tři české a jeden
italský. Na rozdíl od loňského ročníku se soutěžilo uvnitř, ve sportovní hale,
a aréna byla řádově menší (průměr 15m na rozdíl od loňských 40m). Proti tribuně
byla vysoká okna, takže i takto si kamery užily denního světla.
Organizace byla vskutku německá a původní rozvrh byl dodržován s přesností na
minuty. Vše začalo v 10h ráno, kdy týmy dostaly k dispozici stůl s přesným
počtem židlí, přípojku elektřiny a informační složku kdo kdy bude soutěžit. V
13h byl sponzorovaný oběd a od 14h se soutěžilo.
Každý robot zápasil 2x a počítal se mu lepší pokus. Celkově to bylo tedy 16
zápasů po deseti minutách. S vyhlášením se vše stihlo do 18h, kdy byl oficiální
konec.
Průběh soutěže
Za Českou Republiku jsme měli tři „želízka v ohni”: Roboauto (VUT Brno),
Cogito MART (MFF UK) a KZS Team (alias Eduro Team, ČZU Praha). Znovu a znovu se
potvrzuje, že jednodušší algoritmy mají větší šanci na úspěch, než složité.
Roboauto velmi dobře analyzovalo číslice, ale problémy mělo s lokálním
plánovačem a kvůli těsné aréně končilo u druhé zastávky.
Opačný přístup měl Cogito MART. Robot jezdil „jen” po obvodu arény a
namontovaná kamera byla pouze imitace pro logování dat. Co oba týmy spojovalo
byl autíčkový podvozek s Ackremanovým zatáčením a tedy netriviální problémy při
otáčení.
Eduro s otáčením na místě až takový problém nemělo (občas štrejchlo zadkem) a i
algoritmus byl nějak mezi — o rozpoznávání čísel se snažilo, ale výsledek byl
spíše náhodná procházka (viz dále).
A co jiné týmy? No byly lepší, co si budeme povídat. Je fakt, že asi většina se
soutěže účastnila již podruhé, ale … na vítězné dva týmy (shodou okolností se
sešly v posledním zápase) byla radost se dívat. Nejen že stihly projet všechna
čísla ve správném pořadí, ale vítěz to dokázal za necelé tři minuty. I robot na
třetí pozici zvládl čísla všechna, tj. laťka je poměrně vysoko.
Oficiální výsledky
Oficiální výsledky |
Cogito MART
Jiří Iša
Za Matematicko-fyzikální fakultu Univerzity Karlovy v
Praze soutěžil tým Cogito MART s robotem
Irena. Robot Irena se
proslavil už vítězstvím v
RobotOrienteering 2010 (tým Sirael).
Tým Cogito MART pak druhým místem na
RoboChallenge 2010 (Puck Collect), prvním
místem v českém Eurobotu 2010 a dvěma třetími
místy na Field Robot Event 2010 (Professional
Task, FreeStyle). A taky požárem a jedním pokusem robota o útěk na
Robotem rovně
Díky účasti obou členů týmu na milionu dalších soutěží (naposledy Robotour
čtrnáct dní před SICK Robot Day) nám na SRD nezbylo zrovna mnoho času. Proto
jsme se dohodli, že své úsilí radši věnujeme jednoduchému řešení. To nám dá
podstatně větší šanci, že bude robot dělat, co má, a my si neuřízneme ostudu.
Přiznám se, po shlédnutí videí z loňské soutěže jsem trochu věřil, že i tak by
to mohla být medaile.
Irena měla za úkol kroužit po obvodu kolem arény. Čísla v očekávaných obtížných
světelných podmínkách detekovat ani neměla. Statisticky by jedno první kolečko
kolem arény mělo dát cca. první tři číslice. To se dost blíží loňským nejlepším
výsledkům. Ale jak už to s matematikou bývá, důležité jsou předpoklady:
- Soutěžíme letos a ne loni. Ostatní týmy se dost zlepšily.
- Organizátoři asi neumisťují čísla úplně náhodně, ale tak, aby to pro kroužiče bylo co nejnepříjemnější.
Irena nakonec dělala to, co měla a co jsme od ní čekali. Včetně slabin. V obou
kolech jsme sice promarnili nějaký čas kroužením uprostřed arény (zabloudili
jsme od stěny), ale i tak jsme dali dvakrát pěkné čtyři číslice. Až na ony dva
výlety kroužil robot kolem arény tak spolehlivě, až to diváky nudilo
KZS Team
Martin Dlouhý
KZS Team byl vlastně Eduro Team, který úspěšně bodoval na
Field Robot Event 2010. Bylo nás tedy pět:
Milan Kroulík, Stanislav Petrásek, Jan Roubíček, Tomáš Roubíček a Martin Dlouhý
(Jiří Iša jel za Cogito MART tým).
První kolo dopadlo nad (moje) očekávání. Vylosovaný zápas byl proti robotu
Quido týmu Roboauto. Eduro startovalo na 9 a 8 bylo přímo naproti.
Robot arénu přejel, mírně se vyhnul překážce a první bod získal během 14s!
Radost, ovace .
Pak se otočil, zamířil přímo na 7 a během dalších 21s by tam možná dojel
nebýt blokády SICK přepravek, do kterých „trošku” narazil. Divoká jízda
pokračovala a diváci jásali, nejvíce když robot do něčeho naboural — na
rozdíl od ostatních týmů jsme laser nakonec neotočili, takže když se hodně
přiblížil k 22cm vysoké prázdné přepravce, tak viděl dovnitř a překážka
„odskočila”. Pro klasické vyhýbání to nebyl problém, protože robot začal
objíždění dříve, ale při dojezdu na cíl bylo nutné dojet až téměř ke zdi a to
co laser viděl nutně zeď být nemusela …
Eduro nakonec zvládlo jak 7, tak ještě 6 a samo zastavilo par sekund
před časovým limitem s pohledem na Roboauto.
Tak fajn, přestavení pěkné, nasbírali jsme více bodů jak Roboauto,
spokojenost. Trošku divné bylo to zastavení na konci a zpráva na display
>0, tj. informace, že míří na číslo 0 a zastavil, protože si myslel, že
ho dosáhl…
Být kouzelník nebo obchodník, tak tady asi vyprávění skončím, ale … myslím
si, že je to poučná lekce, tak vyložím karty. To co diváci viděli, resp.
mysleli si že vidí, mělo hodně daleko od toho, jak to viděl robot. Až se mi
nechce kazit dojmy z toho pěkného robo-triku. On tu osmičku totiž vůbec
neviděl! Proti světlu byla tak tmavá, že ho tam jen zavedla náhoda a algoritmus
vyhýbání (VFH+) se kousek od zdi vyhnul.
Proti oknu by bylo bývalo třeba posunout práh ještě o hodně hodně níž … to
číslo tam pak vidět je.
Ok, tak jak je možné, že se robot vydal směrem na 7? A viděl jí vůbec? Za
to by Eduro zasloužilo pochvalu — dobře rozpoznalo jak 7, tak i
sousední 9, i když pouze v jednom ze tří testovaných prahů.
V logu bylo: ('[((7, (217,260,26,41)),(9, (473,268,21,31)),),(),(),]\n', 'logs/cam101002_142700_107.jpg').
Smutné je, že tou dobou Eduro vůbec číslo 7 nehledalo. Chyběla mu úspěšně
detekovaná osmička … kde jí tedy nakonec vidělo?
Asi se ptáte, jak si mohl proboha myslet, že ty brýle jsou osmička?
Případně co ty dvojky okolo?! No, tak krátce k algoritmu na rozpoznávání čísel:
nejprve se obraz převede na šedotónový a oprahuje (zkouší jich více, ale to
pro teď není důležité). Pomocí OpenCV nalezne kontury a
první klasifikace je podle děr. Pokud kontura obsahuje dvě díry velikosti
zhruba 0.15 a 0.25 velikosti vnější kontury a menší z nich je výše, tak se
pravděpodobně jedná o číslo 8 …
Ano, je po bitvě, a i já bych to teď již dělal jinak. Z nasbíraných logů by šel
udělat daleko spolehlivější klasifikátor, případně zapojit kód na matchování
kontur po jednoduché transformaci. I fakt, že rámce čísel by šly celkem dobře
detekovat, ale bude tam spousta dalších zarámovaných textu je nová a důležitá
informace.
Druhé kolo probíhalo dost podobně, robot posbíral tři body, ale to už jsme
tušili, co se zhruba děje. V aréně se hrálo non-stop, takže na nějaké další
úpravy bez testu nebyla moc nálada …
Závěr
Hardware byl stejný jako na Robotour před čtrnácti dny. Software pak hodně
těžil z odladěného VFH+ na vyhýbání se překážkám, co pro Robotour implementoval
Jiří Iša. Nová byla tedy analýza obrazu a „hraní” si s kamerou. Hodně lidí
se nás ptalo: „jak ten robot může vůbec něco vidět, když kouká dolů?” .
Tajemství je v širokoúhlém objektivu a horním výřezu obrazu. I s tím teď máme
novou zkušenost, která se může zase někdy hodit. Za mne tedy spokojenost, i
když na bodované místo to letos nebylo.
Roboauto Quido
Jan Najvárek
Tak jako jiným týmům nám nezbylo mnoho času na přípravu na soutěž, takže za dva
týdny jsme stihli naimplementovat rozpoznávání čísel (které jsme dříve
nepotřebovali) a algoritmus, jak se pohybovat k jednotlivým číslům. Byl navržen
jako jednoduchý konečný automat ve stylu Jeď do centra - Najdi číslo – Jeď k
číslu – Jsem u čísla – Jeď do centra atd. Také jsme přemístili LIDAR z horní
pozice na přední nárazník, z důvodů lepší detekce překážek, detekce sjízdnosti
vozovky nebyla třeba. Nicméně jsme nestihli vyřešit problémy s algoritmem
plánování lokální cesty vozidla (trápily nás již na Robotour), což se také
během soutěže projevilo.
Při cvičných jízdách jsme ve zkráceném čase odladili základní konstanty (aby
robot poznal, že už je u čísla apod.). Doladili jsme adhezi předních kol
pomocí lepicí pásky. Otestovali jsme rozpoznání čísel, které fungovalo velmi
dobře, stačilo, aby se robot rozhlédl v centru a viděl většinu čísel v kruhu.
Dokonce jsme rozpoznávali i testovací čísla, která měly týmy opřená o zeď 50
metrů daleko.
Během prvního kola jsme ladně vyrazili k prvnímu číslu, u druhého však došlo k
problému, kdy si robot myslel, že ještě u čísla není (chybělo mu podle interní
mapy pár centimetrů), ale naopak collision avoidance již stopla motor, protože
jsme byli příliš blízko u stěny – klasický problém nevyladěnosti konstant a
nízké robustnosti algoritmu.
V druhém kole jsme dopadli ještě hůře, opět z důvodu relativně nevinné chyby.
Robot dorazil do prvního čísla, ale plánovač stále plánoval cestu do cíle.
Jelikož však bod cíle a aktuální poloha byla identická (shodou okolností zcela
stejná), někde hluboko v kódu vybublala výjimka, protože se snažil najít
kolmici k přímce, která byla definována dvěma body (které však byly stejné).
Toto se nám nestalo za celé 2 roky, kdy je tento kód využíván, klasicky se to
napoprvé stane na soutěži.
I když jsme nedopadli zrovna výborně, hodnotíme účast jako velmi přínosnou.
Jednak jsme si vyzkoušeli účast na jiném typu soutěže, než je Robotour, poznali
jsme německou organizaci (výborná), a také nás neúspěch popohnal k tomu, že
chceme nespolehlivé části řízení vyladit na větší robustnost a spolehlivost.
Odkazy
Máte-li jakékoli dotazy či připomínky —
kontaktujte nás.