czech english

Eurobot 2003 za 60 dní

aneb ,,nekonečný počet'' objezdů

Oba roboti Daisy i Dana již samostatně objeli hřiště 10x v kuse. No a co? Co je na tom tak převratného?! Nuže není to tak jednoduchá úloha jak by se na první pohled mohlo zdát…

Co se událo za posledních 10 dní? Jak jsme psali v minulé zprávě, oba roboti Dana a Daisy „trénovali na okruhu”. Cílem bylo realizovat 10 objetí hřiště, kdy číslo 10 už je považováno skoro za nekonečno. Důležité je, že se robot neztratí a mohl by tedy tuto činnost opakovat do vybití baterek.
Prvenství patří Daně, která hřiště objela 11x už 22-03-2003. Fotografii obrazovky Dany po úspěšném objezdu můžete vidět na obrázku.
Daisy pak použila stejný algoritmus (včetně implementace) a opakovatelné objezdy začala být schopna realizovat zhruba o týden později.

Lokalizace robota

Jak robot pozná, kde se nachází? Na začátku je to jednoduché – pozici má přímo zadanou. To ve skutečnosti není žádné omezení, protože při opravdovém zápase se bude vždy startovat z jednoho ze dvou rohů (černý, na obrázku vlevo dole nebo bíly vpravo nahoře).
Při samotném pohybu má pak robot k dispozici dva zdroje informací: enkodery a senzory na podlahu. Enkodery zhruba určují, jak moc se otočilo levé a pravé kolečko, resp. pásy u Dany. Tato informace však není moc přesná, a tak by se robot už zhruba po 3-5ti objezdech ztratil. Pro korekci této chyby používají oba roboti senzory na detekci barvy podlahy. Jedná se o infrasenzory CNY70, které zjistí barvu v bodě jejich umístění.
Jak kombinovat informaci z enkodérů a CNYček? Jedna varianta byla si počítat ujeté čtverce, ale ta se příliš neosvědčila. CNYčka detekují i spáry případně špínu na hřišti, a tak algoritmus musí být alespoň trošku robustní a v konečné fázi se stavá zbytečně složitým. Jeho další nevýhodou je, že omezuje pohyb robota pouze na jízdu kolmo po čtvercích, a tak od něj bylo velmi brzy upuštěno.
Další variantou byla metoda MCL – Monte Carlo Localization, jejíž vylepšenou verzi GMCL vymyslel a implementoval Vojtěch Pavlík a Zbyněk Winkler.

MCL v kostce

Pro Eurobota 2003 stačí popisovat pozici robota pomocí trojice (x, y, heading), kde x a y jsou souřadnice na hřišti a heading je směr, kterým se robot dívá. Jak ale zachytit situaci, kdy robot přesně neví, kde se nachází? MCL to řeší pomocí mnoha takovýchto pozic, řekněme 100 vzorků. Každý vzorek má vedle zmíněné trojice navíc váhu w, která určuje pravděpodobnost, že se robot nachází právě v dané pozici (x, y, heading).
MCL si množinu vzorků upravuje ve dvou krocích. Nejprve simuluje pohyb, podle meření z enkodérů, s uměle přidanou chybou. Náhodně vybere vzorek (každý s jeho pravděpodobností w), trošku změní naměřenou hodnotu pomocí generátoru nahodných čísel, a vzorek uloží do nové množiny.
Ve druhém kroku se provádí korekce váhy w podle měření ze senzorů, v našem případě barvy detekované CNYčkama. Pokud senzor detekuje stejnou barvu jakou by měl vidět z jeho pozice na virtuální šachovnici, tak se váha zvýší. V opačném případě se váha sníží. Bylo by možné vzorky se špatnými barvami přímo odstranit, ale jelikož CNYčka občas hlásí něco jiného, než je barva čtverce (šum, spáry, smetí, odrazy…), tak by jsme mohli příliš zbrkle odstranit i platnou pozici.

První zkušenosti s MCL

Algoritmus MCL funguje dobře, když se mu dobře nastaví parametry. Nemyslíme tím jenom rozptyly a hranice, kdy má barvu již požadovat za černou a kdy za bílou. Pokud např. pozice senzorů jsou změřeny špatně (holt se to nemá dělat v 1 hodinu ráno, kdy už člověk nerozezná jednotlivá čísílka), tak s tím MCL nic nenadělá. Naopak je z toho hrozný zmatek.
I když jsou senzory dobře změřené, tak může dojít k hrubým chybám jiného druhu. Dana používá jako analogové vstupy čipy PCF8591, které po i2c sběrnici posílají naměřená data. Došlo k tomu, že se posunula sekvence čtení jednotlivých CNYček (Dana jich měla 6, teď už jich je 8) a robot se „zbláznil” a sjel z trasy.
A na Daisy se nic nepokazilo? Ale jo, to by jinak byl pan Murphy nespokojený . Zprvu jezdila hodně pomalu – během 90 sekund celé hřiště objela pouze 3x. Tak jsme rychlost zvyšovali až zhruba na 0.8m/s, kdy už jela hodně divoce (viz. obrázek) a po třetím okruhu to strhla směrem na skleněnou vytrínu (no s happy endem). Co se přesně stalo teď ješte nevíme, ale záznam veškeré komunikace, něco jako černá skřínka na letadlech, se zachoval...

Plán na dalších 10 dní?

Teď už bychom měli začít jezdit podle pravidel, pěkně začínat z rohů hřiště, startovat šňůrkou a podle startovní pozice obracet puky buď zelenou nebo červenou navrh. Možná uděláme už i první skutečný zápas Dana vs. Daisy.