czech english

FoG (2. část)

Praha

Zde naleznete pokračování článku o robotech týmu FoG (Forces of Gerstner). Konkrétně se dozvíte něco více, na jakém základě pracoval vedoucí robot skupiny HEAD. Nastíněny jsou i algoritmy z Robotour 2006 a jejich srovnání.

RoboTour 2007 - Inteligentní navigační system týmu FoG

Tomáš Krajník, Jan Faigl, Karel Košnar, Ondřej Fišer

Úvod

Tento článek popisuje vedoucí robot mechanizovaného konvoje univerzitního týmu FoG z Českého Vysokého Učení Technického v Praze, který se účastnil robotického klání RoboTour 2007 konaného v pražské Stromovce v září roku 2007. Robotická soutěž RoboTour 2007 byla zaměřena na autonomní převoz užitečného nákladu. Úkolem bylo postavit kolonu až tří robotů schopných vézt náklad a autonomně projet trasu délky cca 1 km. Roboty v koloně nesměly být mechanicky spojené a jejich rozestup neměl přesahovat 2 metry.
Obsah článku je rozdělen do několika oddílů. V následujícím je v krátkosti představena soutěž RoboTour 2007 a tým FoG, který se soutěže RoboTour 2007 jako jediný zúčastnil s více roboty. Popis hardware robotické platformy a jejích senzorů je uveden v následujícím oddíle. Další oddíl se zabývá algoritmy navigačního systému robotu. V závěru je hodnocena úspěšnost navigačního systému a jsou navržena jeho vylepšení.

Představení týmu FoG

Jméno týmu FoG je tvořeno počátečními písmeny anglického Forces of Gerstner, neboť zakládající členové tohoto týmu jsou nebo byli studenti působící ve skupině Inteligentní a Mobilní Robotiky [1] (IMR), která je jednou z vědeckovýzkumných skupin Gersternerovy Laboratoře [2]. Gerstnerova Laboratoř je částí katedry kybernetiky [3] při Fakultě elektrotechnické [4] Českého Vysokého Učení Technického v Praze [5]. Hlavním oborovým zaměřením této laboratoře je studium umělé inteligence a to jak na úrovni základního výzkumu, tak na úrovni aplikací.
Motivací k účasti v soutěži je především možnost získání zkušeností s vývojem outdoorového mobilního robotu, zkouška práce v týmu ve stresujících podmínkách pevně daného termínu ukončení práce a experimentální ověření vyvinutých navigačních algoritmů.
Tým FoG plánoval nasazení tří robotů jedoucích v koloně. První robot se měl orientovat ve venkovním prostředí a samostatně projet zadanou cestu a zbylé dva měly sledovat robot před sebou.
První a druhý robot je ve skupině IMR používán pro experimentální ověření vyvíjených algoritmů ve venkovním prostředí. Třetí robot byl postaven z podvozku jednoduché konstrukce, zhotovitelné v domácích podmínkách. Robot byl vybaven senzory z vybavení skupiny IMR.

Hardwareové vybavení

Podvozek

Hlavní část robotu tvoří mobilní platforma Pioneer 3 AT (P3AT). Specifikace této platformy lze nalézt na stránkách společnosti ActivMedia Robotics [6], proto zde uvedeme především informace o použitém přístrojovém vybavení neseném platformou.
P3AT je diferenciální podvozek se samostatně řízeným levým a pravým pohonem, který zatáčí smykem. Základní řízení motorů a vyčítání senzorů je realizováno samostatnou procesorovou deskou. Nadřazený palubní počítač je připojen k procesorové desce rozhraním RS232.
Robot ,,Head''
Robot ,,Head''
Součástí platformy P3AT jsou přední a zadní taktilní nárazníky, které po aktivaci pohony na hardwarové úrovni. Modul řízení robotu využívá odometrické informace fúzované s daty z vnitřního gyroskopu. K robotické platformě je připojen modul kompasu TCM2, který je umístěn přibližně 0.7 m nad tělem robotu, aby jeho měření nebylo příliš ovlivněno elektromagnetickým polem pohonů.
Robot je napájen ze samostatného bezúdržbového olověného akumulátoru o kapacitě přibližně 20Ah.
Na robotu je také během jízdy v koloně uchycena červená plocha dostatečné velikosti (pro tyto účely byla na robotu umístěno tričko červené barvy), která slouží následujícímu robotu jako vizuální maják. Dalším zařízením potřebným k vedení následujícího robotu je ultrazvukový maják vyvinutý skupinou IMR [7]. Robot udržoval se zbytkem kolony spojení bezdrátovým komunikačním modulem [7] založeným na technologii ZigBee.

Kamerový systém

Hlavním senzorem robotu je kamera, která slouží k získání obrazu oblasti před robotem. Je použita barevná jednočipová průmyslová kamera Fire-i 400 [8] s rozlišením 640 x 480. Při rozlišení 640 x 480 v barevném prostoru RGB kamera poskytuje až 15 snímků za sekundu. Kamera je připojena k palubnímu počítači rozhraním IEEE 1394 (FireWire). Její hlavní výhodou oproti běžným webovým kamerám je uzávěrka a manuálně nastavitelná clona. Přenos snímku do počítače probíhá až po kompletním osvětlení snímacího čipu, takže obrázky poskytované kamerou nejsou deformované v důsledku jejího pohybu. S použitým objektivem byl zorný úhel kamery přibližně 45 stupňů. Normála obrazové roviny kamery byla shodná se směrem pohybu robotu.

Palubní počítač

Vzhledem k použité metodě zpracování obrazu vyžadující značný výpočetní výkon je palubním počítačem notebook s procesorem Intel Core 2 Duo taktovaným na 2GHz. Notebook je upevněn na nosné konstrukci z hliníkových profilů stavebnice Item, která je umístěna na vrchní straně robotu.
Nižší spotřeba dnešních procesorů v porovnání s předchozími generacemi je dosažena především úspornými režimy, které se při intenzivních výpočtech neuplatní. Při dlouhodobém testování je tedy jednou z klíčových otázek napájení palubního počítače. Kromě interního akumulátoru notebooku jsou použity dva externí univerzální akumulátory, každý o kapacitě 88VAh. Výhodou tohoto řešení je možná výměna akumulátorů za chodu v terénu bez nutnosti dalšího externího napájení nebo restartu počítače. Během provozu na externí akumulátor dochází také k nabíjení akumulátoru vnitřního. Druhý externí akumulátor je navíc možné během používání prvního akumulátoru nabíjet.
K palubnímu počítači je připojen bezdrátový joystick, kterým lze robot ovládat.

Programové vybavení a algoritmy

Palubní počítač robotu byl vybaven operačním systémem Linux, konkrétně distribucí OpenSuse. Použité algoritmy byly implementovány v jazyce C a C++.
Vedoucí robot používá k navigaci ve venkovním prostředí dva algoritmy. První algoritmus je založen na rozpoznávání význačných objektů v obrazu kamery. Robot nejprve během teleoperované jízdy prostředím identifikuje význačné objekty a zapamatuje si jejich pozice. Při autonomní jízdě jsou aktuálně rozpoznané objekty porovnávány s již zapamatovanými a na základě porovnání jejich rozpoznané a uložené pozice jsou prováděny korekce směru jízdy. V případě, že robot žádné známé objekty nevidí, aktivuje algoritmus rozpoznávání cesty.
Následující oddíl popisuje algoritmus navigace robotu sledování cesty - GeNav, který byl použit při navigaci robotu v minulém ročníku soutěže RoboTour v roce 2006. Druhý algoritmus, který se snaží ošetřit chování robotu v případech selhání algoritmu GeNav, je popsán v oddíle SurNav.

Sledování cesty - GeNav

Algoritmus GeNav (Gerstner Navigation) byl vytvořen pro rozpoznávání cest a křižovatek z obrazu kamery snímající povrch, po kterém robot jede ve vzdálenosti 1 až 5 m ve směru jízdy. Předpokládá se, že barva cesty je určena jiným algoritmem či senzorem, nebo je známa předem. Barvu cesty může také při běhu algoritmu zadat operátor. Pro specifikaci barvy je použit barevný prostor HSV [9], kde je informace o jasu a sytosti oddělena od informace o tónu barvy. V tomto barevném prostoru je snadnější dosáhnout vyšší robustnosti algoritmu vůči změna osvětlení prostředí.
Navigačním algoritmus GeNav lze rozdělit na dvě části, vlastní rozpoznávání cesty a rozpoznávání křižovatky.

Rozpoznávání cesty

Algoritmus rozpoznávání cesty se skládá ze dvou kroků. Prvním krokem algoritmu je výpočet střední hodnoty horizontální souřadnice pixelů barvy cesty posledního řádku. Ve druhém kroku algoritmus pokračuje procházením pixelů od této pozice v posledním řádku v obou směrech a hledá hranice cesty, t.j. ve směru procházení je identifikována posloupnost pixelů jiné barvy než je barva cesty. Z takto detekovaných okrajů cesty je vypočtena její šířka a střed.
Pokud je šířka větší než definovaná mez, začnou se hledat hranice cesty na vyšším řádku, přičemž střed je použit jako výchozí bod hledání. Při poklesu detekované šířky cesty pod tuto mez je algoritmus ukončen.
Dopředná rychlost robotu je úměrná řádku, při kterém byl algoritmus zastaven. Rychlost otáčení robotu je určena ze součtu odchylek středů cesty od středu obrázku. Obraz je často zatížen šumem, proto jsou hodnoty odpovídající středu a šířce cesty vyhlazovány adaptivními lineárními filtry druhého řádu.

Rozpoznávání křižovatky

Pokud se hodnota predikovaná filtrem šířky cesty liší od měřené hodnoty vícekrát za sebou, je aktivována rutina detekce křižovatky. Ta vyhledá souvislé oblasti barvy cesty na okrajích snímaného obrazu. Z okrajů těchto oblastí, detekovaného středu křižovatky a dat z kompasu je pak odvozen její popis ve formě množiny úhlů odpovídajících azimutům výstupních cest. Popis cesty tak může být zadán posloupností úhlů udávajících směry otočení robotu na projížděných křižovatkách. Detekce křižovatky může být podpořena její známou polohou a použitím GPS nebo jiného systému globální lokalizace.

Chování algoritmu

Algoritmus GeNav byl základem navigace robotu, která byla použita v minulém ročníku soutěže. Pracoval spolehlivě a robustně na úzkých cestičkách a jednoduchých křižovatkách, robot se dokázal vyhýbat i pohybujícím se objektům. Na místech, kde byla cesta širší než oblast přehlížená kamerou, rozlehlých křižovatkách a volných prostranstvích nebyl GeNav schopen spolehlivě určit směr jízdy a robot často zbloudil. Tyto omezení se snaží eliminovat nový algoritmus navigace, který dokáže rozpoznávat a orientovat se podle širší škály objektů než pouze podle cesty dané barvou.

Navigace podle známých objektů - SURFNav

Systém SURFNav (Speeded Up Robust Features Navigation) rozpoznává v obrazu již známé objekty a provádí korekce směru robotu tak, aby se obrazové souřadnice rozpoznaných objektů blížily souřadnicím naučeným. Kromě dat z kamery jsou při běhu systému jsou využívány údaje z odometrie a kompasu. Systém pracuje ve dvou režimech - učení a navigace. Rozpoznávání objektů v je realizováno algoritmem počítačového vidění. Základní principy tohoto algoritmu jsou popsány v prvním oddíle. Fáze učení je popsána v druhém oddíle a popisu vlastní navigace je věnován oddíl poslední.

Rozpoznávání objektů

Z množiny algoritmů realizujících rozpoznávání objektů v obraze byl jako nejvhodnější vybrán algoritmus SURF (Speed-Up Robust Features) [10], jehož robustnost i rychlost převyšuje ostatní známé metody. Tento algoritmus ve dvou fázích zpracovává šedotónový obraz. V první fázi je na snímek aplikován detektor lokálních extrémů jasu. Další výpočet prohledává okolí těchto extrémů a počítá jejich charakteristický vektor, který je invariantem homografického zobrazení. Předpoklad lokální rovinnosti umožňuje vytvořit popis dané oblasti, který je robustní vzhledem k jejímu zvětšení, rotaci a náklonu. Výstupem algoritmu jsou obrazové souřadnice význačných oblastí spolu s jejich 64 složkovým deskriptorem.
Vzhledem k výpočetní náročnosti zpracování je obrázek horizontálně rozdělen a obě jeho části jsou zpracovávány paralelně na obou jádrech použitého procesoru. Vzhledem k tomu, že spodní a horní část získaného snímku typicky obsahuje různý počet detekovatelných objektů, byl vyvinut adaptivní algoritmus, která rozděluje obraz na různě velké části s přibližně stejnou dobou zpracování.
Z výše uvedeného popisu vyplývá, že algoritmus nerozpoznává obdobné objekty jako člověk. Jedná se spíše o oblasti obrazu, které jsou dobře identifikovatelné a jejichž popis je dostatečně odlišitelný od ostatních oblastí. Nevýhody vyplývající z faktu, že detekované objekty jsou často nestacionární (spadané listí, nečistoty, stíny, kolemjdoucí), jsou vyrovnány jeho rychlostí (přibližně 3 FPS). Množství detekovaných oblastí (typicky 250) umožňující jejich statistické zpracování zmíněnou nevýhodu téměř eliminuje.

Mód učení cesty

Při režimu učení je robot proveden trajektorií ve tvaru lomené čáry. Na počátku každého segmentu si robot nastaví čítač ujeté vzdálenosti na nulu, vyčte data z kompasu a pořídí sérii snímků. Z této sekvence si vybere stacionární a stabilní objekty a uloží si jejich pozice a popis. Za stabilní objekty jsou prohlášeny takové objekty, které byly detekovány opakovaně v 50-ti po sobě jdoucích snímcích. Poté se začne pohybovat přímo vpřed, během toho stále snímá obraz kamerou, rozpoznává objekty a zaznamenává odometrická data. Při první detekci některého stabilního objektu si algoritmus uloží jeho deskriptor a pozici v sejmutém obraze spolu se vzdáleností robotu od počátku segmentu. Již zapamatované objekty se snaží nalézat i v následujících snímcích, přičemž k jejich aktuálním obrazovým souřadnicím si přiřazuje informaci o ujeté vzdálenosti. Tracking objektu končí ve chvíli, kdy není rozpoznán ve třech bezprostředně následujících snímcích. Deskriptor objektu, jeho obrazové souřadnice a odometrická data v okamžicích prvního a posledního rozpoznání jsou poté zařazeny do množiny dat popisujících daný segment. Učení daného segmentu je přerušeno operátorem, který robot zastaví (délka segmentu se uloží) a natočí jej ve směru další jízdy. Poté je algoritmus spuštěn pro další segment nebo ukončen.

Mód navigace

Po spuštění navigačního módu si robot nejprve načte popis příslušného segmentu a podle kompasu se otočí definovaným směrem. Poté nastaví čítač ujeté vzdálenosti na nulovou hodnotu, začne se pohybovat vpřed a snímat obrázky kamerou. Z naučené množiny objektů vybere ty, které může vidět v daném úseku aktuálního segmentu, tj. ty, jejichž vzdálenost první a poslední detekce je menší resp. větší než aktuální vzdálenost robotu od počátku segmentu. Ze zmíněných vzdáleností, počátečních a koncových obrazových souřadnic se lineární interpolací vypočte očekávaná pozice objektů v aktuálním snímku. Tyto objekty jsou ohodnoceny počtem snímků, ve kterých byly detekovány a je vybráno 50 nejlépe ohodnocených kandidátů. Pro každý takto vybraný kandidát je v množině aktuálně rozpoznaných objektů nalezen nejpodobnější objekt. Podobnost je vypočtena z Eukleidovské vzdálenosti deskriptorů obou objektů. Pro každou takovou dvojici je vypočten rozdíl v horizontálních souřadnicích obrazu. Z modu těchto rozdílů je spočtena hodnota korekce směru robotu. Po ujetí vzdálenosti větší nebo rovné délce daného segmentu robot zastaví, načte popis dalšího úseku a činnost opakuje.
Důležitým aspektem navigačního algoritmu je jeho funkčnost i bez nutnosti robot lokalizovat nebo vytvářet třírozměrnou mapu detekovaných objektů. Přesto, že podle kamery je udáván pouze směr a pro odměřování vzdálenosti je použita ne zcela přesná odometrie, lze ukázat [11], že při dostatečně časté změně směru pohybu se robot při navigaci příliš nevzdálí od naučené cesty. Obrázek ilustruje vývoj pozice robotu spolu její neurčitostí pro uzavřenou trajektorii. Chyba odometrie se modeluje jako multiplikativní neurčitost o velikosti 5%, délka trajektorie je 40 m. V modelu pohybu je zahrnut fakt, že robot není navigován přímo do místa konce segmentu, ale přibližně 5 m za toto místo.

Závěr

Při vlastní soutěži byl robot schopen bezchybně absolvovat více než 150 metrů dlouhou dráhu, což postačilo na obsazení 3. místa.
K vyjíždění z dané cesty docházelo v okolí jednoho konkrétního místa. Ukázalo se, že přesnost navigace podle rozpoznávaných objektů rapidně klesá se stoupající rozlehlostí prostředí, což je v souladu s teoretickými předpoklady vyplývajícími z matematického modelu navigačního systému. Pokud se robot orientoval podle objektů vzdálených přibližně 50 metrů, přesnost navigace poklesla pod hodnotu nutnou k udržení se na 2 metry široké cestě. Odvážná hypotéza, že při navrženém způsobu navigace se nejistota v určení polohy robotu drží v jistých mezích, se přesto potvrdila.
Horizontálně položená kamera byla často „oslepena” přímým slunečním světlem. Trajektorie tvaru lomené čáry se také ukázala jako nevhodná. V místech přechodu na další segment se robot často zbytečně zdržoval, neboť se nemohl na příliš přilnavém povrchu otočit do požadovaného směru. Ačkoliv algoritmus GeNav nepočítal s pohledem kamery přímo ve směru pohybu robotu, byl schopen spolehlivě navigovat robot na asfaltových a dlážděných cestičkách. Bohužel, na první rozlehlejší projížděné křižovatce se podle očekávání nedokázal správně zorientovat.
V dalším vývoji se zaměříme na rozšíření systému SurfNav pro rozsáhlejší třídu trajektorií. Algoritmus bude také doplněn rutinami zpracovávající informace o geometrických vztazích mezi detekovanými objekty, čímž je očekáváno zvýšení robustnosti navigace. Dále bude vypracována koncepce umožňující efektivně kombinovat systémy GeNav a SURFNav. Neméně významným úkolem je také testování metod potlačení negativních vlivů okolního osvětlení, především saturace snímacího čipu přímým slunečním světlem.

Poděkování

Závěrem chceme vyjádřit uznání organizátorům soutěže, poděkovat členům týmů a všem, kteří podpořili soutěž. Tato práce byla podpořena výzkumným grantem ČVUT CTU0706113.

Reference

[7] Košnar K. Faigl J., Krajník T. Team fog - popis nákladních robotu. In Robotour07, 2008.
[10] Gool L. Bay H., Tuytelaars T. Surf:speeded up robust features. In ECCV06, 2006.
[11] Košnar K. Krajník T. Visual navigation system. In EUROS 08, (To appear), 2008.