Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference, value given in /customers/e/7/6/akji.dk/httpd.www/wp-includes/class-wp-hook.php on line 298 Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference, value given in /customers/e/7/6/akji.dk/httpd.www/wp-includes/class-wp-hook.php on line 298 Vision til navigering af RoboCup-robot | AKJ Inventions

Vision til navigering af RoboCup-robot


I forbindelse med den årlige robot-konkurence (RoboCup) på DTU i 2004 blev der konstrueret en robot der bl.a. havde indbygget et stereo vision system for at kunne navigere igennem banen. For information om RoboCup-konkurrencen på DTU, se her.

Softwaren er der sørger for vision-navigeringen, er koddet i GNU C++ med hjælp fra OpenCV, og eksekveres på en embedded PC på robotten. Softwaren er opbygget af en mængde lag oven på hinanden. Nederst indlæses rå billeder fra de to webcams, øverst kan aflæses i hvilken retning og med hvilken hastighed robotten skal bevæge sig i for f.eks. at følge en væg eller køre igennem en port. Lagene er arrangeret således at de bliver mere og mere “inteligente” jo højere de ligger. Et diagram for de enkelte lag i softwaren er vist til højre.

Modellen består af et overordnet CNavigator objekt som består af to ens CEye objekter, der hver repræsentere et “øje” som bruges til den stereoskopiske opmåling. Det rå billede fra webcamet sendes først ind i et specielt billedfilter hvor det omdannes til et simplere billede uden unødvendige detaljer, som f.eks. højlys og mindre pixelfejl. Nærmere beskrevet bliver det rå billede lavet om til et billede med færre forskellige farver (CCartoonImage).

Ved at have billedet repræsenteret på denne måde, er det nu være nemmere at finde de rette kontraster/kanter i billedet. Idet mindre textur forskellige i billedet er udglattet. Kanterne skal findes i Edgedetector-laget, og gemmes som et binært billede. Udfra dette binære-billede af kanterne, kan kanterne simplificeres yderligere, ved istedet at beskrive kanterne med en række kantlinier. Således at en hvid streg i billedet f.eks. beskrives med en kantlinie på hver side, eller evt. flere linier på den ene side, hvis stregen buer. Denne operation foregår i Edgelline-laget.

Beskrivelsen af billedet kan forenkles endnu en gang, ved at samle kantlinierne i 2D polygoner. Således at hver polygon består af nogle kantliner med det tilfælles at de omkranser samme objekt i billedet. Et polygon består således af et sæt kantlinier og en farve som er den mest hyppige på det omkransede objekt. På dette niveau findes der også et filter således at der kun dannes polygoner med de farver som der er interesse for, som f.eks gul (porte) og hvid (streg) osv.

Efter at begge “øjne” (CEye-objekter), har fundet et sæt polygoner som beskriver hver deres billede, kan selve den stereoskopiske process begynde. Denne process kaldes også fotogrametri og foregår i Photogrametry-laget. Normalt er det store problem ved automatiseret fotogrametri at få computeren til at finde ud af hvilke pixels der hører sammen i de to billeder. Ved at have simplificeret billedet til polygoner fremfor pixels, er denne process blevet en del mere overkommelig og hurtig. Ideen er at polygonerne i de to billeder sammenlignes udfra ca. possitioner, farver, antal kanter, og nabo polygoner. De som så passer bedst sammen pares, og sendes videre til de fotogrametriske beregninger.

Efter de fotogrametriske beregninger er der dannet 3D polygon objekter, til at beskrive det billede som “øjnene” ser tilsammen. Ved at beregne foreskellen på to på hinanden følgende 3D polygon billeder, kan man finde ud af hvordan robotten har bevæget sig imellem de to billeder. Idet tiden imellem de to billeder også kendes, kan robottens hastighed også beregnes. Disse beregninger foregår Movement Detection-laget. Outputtet fra dette lag kan bruges som odometri parametre, dvs. angive robottens absolutte position. Hastigheden kan i teorien bruges som feed-back til styring af motoren.

Oprindelig var det meningen af robotten i skulle generere en komplet 3D-model af banen, som den kunne bruge som kort til navigering, men det blev en alt for stor mundfuld til dette projekt. Derfor er øverste lag begrænset til kun at kunne følge specifikke objekter på RoboCup-banen. Såsom streger, vægge, porte osv.

Rapporten for projektet kan læses her: Vision til navigering af RoboCup-robot.pdf

For mere information om dette projekt, eller tilbud på et tilsvarende projekt, kontakt da Allan Krogh Jensen.

System diagram
Viser den lag-delte konstruktion af systemet.

Robotten
Systemet monteret på en standard SMR robot fra DTU.


Indlejret PC
Hardwaren består af denne indlejrede PC med en 433 MHz VIA-processor og to webcams.