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 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.