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.