Roboauto tým vítězem Udacity Challenge

Na konci roku 2016 se Roboauto tým zúčastnil soutěže vyhlášené společností Udacity – „Image-Based Localization“. Společnost Udacity se mimo jiné zabývá vývojem open-source autonomního auta, pro které byla soutěž určena.

Úkolem této soutěže bylo vytvoření programu, který umí lokalizovat pozici auta pomocí jedné kamery. V první fázi program dostal sérii snímků a jejich GPS pozici. V druhé fázi program dostával snímky z jiného průjezdu stejnými místy a měl odhadnout, na jaké GPS souřadnici se aktuálně nachází.

Úkol byl velkou výzvou hned z několika důvodů. Sama kvalita videa byla na špatné úrovni, obraz nebyl ostrý a jednotlivé záznamy byly pořízeny v různou denní dobu. Navíc byla kamera pokaždé jinak zkalibrovaná a obraz byl někdy přesvětlený, jindy naopak zcela tmavý. Další výzvou bylo popsání obrazu takovým způsobem, který umožňuje co nejpřesnější porovnání podobnosti, ale zároveň je dostatečně rychlé, aby je bylo možné provádět v reálném čase.

Po zhodnocení kvality záznamu byla zvolena linie horizontu jako nejvhodnější deskriptor. Velkou výhodou tohoto deskriptoru je, že horizont je vidět relativně přesně i v nekvalitním obraze a různých světelných podmínkách. Na druhou stranu tato metoda selhává v místech, kde není horizont viditelný (např. i v koloně, pokud stojí auta příliš blízko u sebe). V testovacích záznamech se však takových míst moc nenacházelo, a když už nastaly, byla správná pozice udržena dalšími mechanismy.

Kromě linie horizontu byly využity ještě další deskriptory, které byly pomocného rázu. Mezi ně patří detekce značek, semaforů a sloupů. Z nich byl nejefektivnější detektor semaforů, který poskytoval cenné informace pro detekci možné kolony a upřesnění pozice.

K odhadu pozice byl použit augmented particle filter (PF) s několika dalšími modifikacemi. Augmented mód particle filtru umožňuje generovat náhodně nové částice a zabránit tak předčasné konvergenci do špatné pozice v případě, že správné místo dosahuje vlivem okolních podmínek zhoršeného hodnocení (např. již zmíněné auto stojící ve výhledu). Jeho nevýhodou je možnost uchycení vygenerovaných částic i na nesprávných místech.

Pro správnou funkčnost PF je zapotřebí mít odhad o rychlosti auta. K té je využito kombinace neuronové sítě a algoritmu dense optical flow, jehož samplované výstupy jsou předány vstupu neuronové sítě. Síť poté odhadne ujetou vzdálenost.

Další kriticky důležitou částí PF je správné ohodnocení každé částice, které musí umožnit jak výrazně podpořit shodné rysy v liniích horizontů, tak zároveň umožnit jistou míru volnosti (třeba obrysy stromů se během roku mohou měnit). Ohodnocení se skládalo ze dvou částí. Prvním byla hrubá podobnost horizontů, která byla hodnocena jako průměrný rozdíl. Druhá část hodnotila shodu jemnějších detailů a byla vyjádřena jako procento, ve kterém na sebe horizonty naléhají dostatečně přesně.

Jelikož stále docházelo k přeskokům pozice způsobeným augmented módem, byl PF rozšířen o dynamickou změnu okolí, ve kterém se generují nové částice. Vycházelo se z předpokladu, že když jsme si delší dobu jistí svou pozicí, nemělo by být tak lehké ji změnit. Čím déle jsme se pohybovali bez ztracení, tím více jsme zmenšili okolí ke generování nových částic a tím zmenšili šance přeskoku na špatné místo.

Po pečlivém vyladění všech mechanismů do sebe celé soukolí zapadlo a umožnilo nám získat první místo. Celá trasa měřila cca 30km a byla projetá v obou směrech (celkem tedy lokalizace na cca 60km). Průměrná chyba naší lokalizace se pohybovala v jednotkách metrů.

Aktuálně se tedy těšíme na setkání se Sebestianem Thrunem, spoluzakladatelem společnosti Udacity a zakladatelem google x (výzkumná laboratoř googlu, jejímž výplodem je např. jejich autonomní auto).

Tabulka

Poklad

Za Roboauto tým – Štěpán Karásek