Internship

Deze pagina is gewijd aan mijn stage, wat toch mijn excuus is om naar Australië af te reizen. Het is een erg interessante opdracht, die hieronder kort in pseudo-Jip-en-Janneke-taal is uitgelegd. Daaronder zal ik van tijd tot tijd beknopt verslag doen van mijn vorderingen.

Opdrachtbeschrijving: Vision and localization of an autonomous car
Het uiteindelijke doel is het ontwerpen van een intelligent systeem dat in staat is een autonoom voertuig van de ene locatie naar een andere locatie te navigeren. Om tot dit eindresultaat te komen moet een aantal subsystemen worden uitgewerkt:

a) Een automatische transmissie-eenheid.

b) Een GPS systeem.

c) Een computervisie-eenheid. Deze eenheid verwerkt real-time videobeelden van de omgeving van het voertuig. De beelden zijn afkomstig van verschillende camera’s. Uit de beelden moet informatie worden geëxtraheerd die belangrijk is voor de navigatie en de veiligheid. (Gedacht kan worden aan obstakels, ander verkeer en verkeersborden).

d) Een beslissingsalgoritme en bijbehorende regelaar die de voertuigdynamica autonoom aanstuurt, op basis van de informatie van de computervisie-eenheid en het GPS systeem.

Van punten a en b zijn al verschillende commerciële oplossingen verkrijgbaar. Punten c en d zijn nieuw. Mijn werkzaamheden zullen binnen punt c vallen.
Het hoofddoel van punt c is het schrijven van een algoritme dat in staat is uit een serie stereobeelden informatie te extraheren betreffende diepte, relatieve snelheid en acceleratie. Met deze informatie wordt vervolgens een driedimensionale kaart van de omgeving opgemaakt. Deze kaart, samen met de informatie over relatieve snelheid en acceleratie, alsmede een nog te ontwerpen automatische herkenning van verkeersborden, vormen het uitgangspunt voor het nemen van beslissingen over de beoogde rijrichting en snelheid van het voertuig.

Binnen de stage zal ik beginnen met het verwerken van stilstaande beelden. Wanneer dat is gelukt zal ik het gevonden algoritme uitbreiden totdat deze geschikt is voor bewegende beelden. Doordat het algoritme uiteindelijk real-time op een DSP-chip geïmplementeerd moet worden, zal ik me met zowel hardware als software bezig houden.

De opdracht loopt fulltime tussen 19 februari en 11 mei 2007 en omvat drieëntwintig ECTS.

Vorderingen t/m 23 februari
De eerste week heb ik vooral veel gelezen. Hoe nieuw dit onderwerp ook mag klinken voor sommige van jullie, er is al ontzettend veel soortgelijk onderzoek gedaan in dit toepassingsgebied. Ondanks de inspanningen van vele intelligente mensen over de gehele wereld, is er nog geen methode gevonden die betrouwbaar genoeg is om daadwerkelijk in de praktijk gebruikt te worden. Voor de mensen zonder technische achtergrond klinkt deze opdracht misschien wat eenvoudig. Immers, zo’n weg en een paar auto’s herkennen, is bijzonder weinig uitdaging voor een mens. Het is echter een hele klus om een computer uit te leggen wat het verschil is tussen een rotsblok en een auto, aangezien ze allebei uit louter ééntjes en nulletjes bestaan.
Verwacht ik dan dat ik zonder ervaring in slechts 3 maandjes tijd al het voorgaande werk kan doen verbleken? Nee, maar het is hoe dan ook leuk en aansprekend onderzoek en leerzaam bovendien. En ik heb stiekem toch wel een aantal ideetjes, dat ik nog niet in de literatuur ben tegengekomen.


Vorderingen t/m 2 maart

Mijn eerste wegdetectiealgoritme is een feit. Dit algoritme detecteert wegen door te kijken naar de randen (overgangen in illuminatie, verkregen met Sobel algoritme), en scores toe te kennen voor objectlengte, excentriciteit (vorm, in dit geval lijnen) en de nabijheid van ‘twins’ zoals ik ze noem. Dit laatste kijkt of er nabij een lijnkandidaat een andere kandidaat wordt gevonden die parallel aan de eerste is. Een getekende lijn op een weg levert namelijk 2 randen op. Uiteraard filter ik het ingangsplaatje eerst en krik ik het contrast wat op.
Op zich werkt het algoritme wel enigszins, hoewel hij in sommige situaties wegen meent te herkennen in de wolken, maar voor een eerste snelle poging ben ik niet geheel ontevreden, zeker omdat ik de parameters nog niet heb getuned.
Het idee is om nog verschillende algoritmes te schrijven, met andere uitgangspunten (detectie op kleur, textuur en hoogte) en die dan te combineren tot iets robuusts. Het is allemaal niet vreselijk nieuw, maar al proberende krijg ik misschien wel wat nieuwe ideetjes.
Eerst duik in eens diep in de onderliggende geometrie om op die manier betrouwbare projecties te verkrijgen van het wegoppervlak. Zo krijg ik mijn portie wiskunde toch nog binnen.

Vorderingen t/m 5 april
Een tijd geen vorderingen meer gemeld, voornamelijk doordat deze er nauwelijks waren. In de eerste week na mijn vorige update heb ik mezelf een basis bij proberen te brengen rondom multiple view geometry.
Sinds die week heb ik globaal een idee welke technieken ik in welke structuur wil gaan toepassen. Het werd dus tijd om testdata te verzamelen. En vanaf hier zijn er geen vorderingen meer, helaas.
Ik ben ruim twee weken bezig geweest met een fpga-programmeerbord, de Altera DE2, uitgebreid met twee cmos camera’s en een tft-scherm, een prachtig en waardevol stuk speelgoed, maar zonder de benodigde schema’s en code. Die zou ik dus zelf vanaf niets moeten opbouwen. Dus het programmeren van de fpga in Verilog HDL om de camera’s uit te lezen, de tft aan te sturen, beelden op te slaan en naar de usb poort te sturen. Vervolgens het programmeren van een client/server applicatie in C++ voor de communicatie tussen bord en pc. Dit alles zou me naar schatting zeker vier weken kosten en is daarmee dus geen optie.
Vervolgens heb ik nog wat aangerotzooid met twee webcams, maar ook dit blijkt niet triviaal. Na veel gerommel met twijfelachtige third-party software, daar originele webcamsoftware meestal maar één camera ondersteunt, uiteindelijk wel iets voor elkaar gekregen. Echter, het lijkt erop dat de outdoor beeldkwaliteit te slecht is. Morgen nog een laatste testje, maar ik heb er geen hoge verwachtingen van.
Dus op zoek naar professionele oplossingen (dus duur). Momenteel wacht ik nog op de prijsopgave van de BumbleBee 2. Een puike oplossing die me wel enthousiast maakt. Hopelijk doen ze weg voor rond de 1000 dollar, dat wil mijn begeleider er wel voor neerleggen, zo liet hij weten. Hoe lang het dan nog wachten zou zijn voordat het ding vanuit de States naar Oz is gevlogen, is dan nog afwachten natuurlijk.