Close

Labweken - proces

Hier beschrijf ik hoe het proces tijdens de labweken is verlopen.

Maandag - Dag 1

De eerste dag kregen wij een vrolijke introductie in het DIF gebouw. Na de introductie konden we zien in welke groepjes we waren ingedeeld en toen kon het project beginnen. Ik zat ingedeeld bij mijn 1e keuze, Computer Vision. Ik zat in een groepje samen met 3 anderen, Sefa, Jake en Mark. Na dat wij ons aan elkaar hadden voorgesteld gingen wij gelijk brainstormen over leuke en interessante concepten voor dit project. Ik wou graag de kinect gebruiken voor dit project, omdat ik die thuis nog had liggen. De rest van de groep was het er snel mee eens en we kwamen al gauw op ideeën door het maken van een mindmap. Het uiteindelijke idee was om een RC raceauto te besturen met de kinect. Iedereen vond het een leuk idee en was er erg enthousiast over. We besloten om meteen een autotje te kopen in de stad, zo dat we meteen konden beginnen. Na dat wij de auto hadden gekocht gingen wij opzoeken hoe we eigenlijk dit voor elkaar konden krijgen. Al gauw kwamen wij erachter dat wij de RC Car met de kinect konden besturen, doormiddel van een Arduino, een kinect, en een code die we moesten schrijven voor de Arduino en de Kinect, ook hadden wij een baan nodig om met de auto te kunnen racen. Jake ging zich richten op het aansluiten van de Arduino met de RC Car, Sefa en Mark namen de taak op zich om de baan te maken en ik naam de taak op mij om uit te zoeken hoe wij iets konden programmeren voor de Kinect.

Wat heb ik geleerd?
Vandaag heb ik niet super veel geleerd, maar ik heb vandaag wel goed kunnen werken. Tijdens het opzoeken van soortgelijke projecten ben ik een aantal leuke filmpjes tegengekomen. De filmpjes geven een indruk over hoe wij dit project zouden kunnen maken. Morgen ga ik meer over de code opzoeken.

Dinsdag - Dag 2

Vandaag heb ik heel goed uitgezocht welke mogelijkheden er zijn voor het programmeren van de RC Car met Kinect. Ik ben erachter gekomen dat de meeste scripts voor de Kinect in C# en C++ worden geschreven, dus het leek mij handig om daar meer over op te zoeken. Het was een frustrerende dag voor mij, ik had een aantal voorbeelden gevonden in C#, maar het programma Visual Studio, waarin het gemaakt en uitgelegd werd, werkte niet naar behoren op mijn laptop en ook niet op die van mijn projectgenoten. We moesten dus een alternatief verzinnen, na een tijdje zoeken op het web vond ik een aantal filmpjes van een RC Car die in Kinect geprogrammeert was. De code kon ik niet zien, dus ik moest er zelf achter komen hoe ik dit moest gaan programmeren in Processing. Ik ging op zoek naar voorbeeld codes voor Processing en Kinect, maar geen enkele code bleek te werken. Na een tijdje zoeken vond ik een ‘Getting started for Processing and Kinect’ tutorial, alleen na het volgen van een paar stappen kwam ik erachter dat de libary die ik nodig had voor het volgen van deze tutorial, alleen beschikbaar was op Mac OS en wij hebben allemaal Windows laptops. Ik liep dus weer vast en wist niet zo goed wat ik moest doen, maar gelukkig verweest Daniel Shiffman naar een boek, genaamd: ‘Making Things See’, van Greg Borenstein. De libary SimpleOpenNI, die ik moest gebruiken om met de opdrachten uit het boek te kunnen werken, zorgden al eerder voor meerdere problemen. Wat bleek was dat de libary geupdate was, maar alle code (inclusief die uit het boek ‘Making Things See’) die op internet te vinden was niet. Er waren bepaalde stukjes code die vervangen moesten worden voor de nieuwe stukjes code, dit was echter een naar klusje om te doen en kostte veel tijd.

Wat heb ik geleerd?
Ik heb vandaag geleerd hoe ik kon beginnen met programmeren in Processing. C# en C++ waren een te grote uitdaging voor mij en ik had de SimpleOpenNI libary aan de praat gerkegen, dus ik kan de volgende dag aan de slag met de oefenopgaven uit het boek, zo dat ik een beetje inzicht kan krijgen in het onwikkelen van applicaties voor de Kinect.


Woensdag - Dag 3

Vandaag ging ik aan de slag met het boek ‘Making Things See’. Ik had het boek gister kort doorgenomen en ik zag dat in het 4e hoofdstuk (na 185 pagina’s) de benodigde stukken code werden uitgelegt, die ik nodig heb voor het maken van bijvoorbeeld een applicatie die een RC car laat rijden. Om deze code echter goed te begrijpen en er andere applicaties mee te kunnen maken zoals het besturen van de RC Car, moet ik wel de voorgaande hoofdstukken goed hebben doorgenomen, dus ik moet beginnen bij het begin.

Wat heb ik geleerd?
Vandaag heb ik geleerd hoe ik met de dieptecamera van de Kinect kan werken. Ik heb een simpel programmatje gemaakt die de dieptewaarden geeft (omgezet in milimeters) op de plekken waar je met je muis klikt. Dit programmatje is essentieel voor alle andere applicaties die ik ga maken, omdat de Kinect altijd de dieptecamera gebruikt om data te analyzeren. De dieptecamera van de Kinect leest de afstand van alles wat in het zichtveld van de Kinect staat en weergeeft dit in een zwart-wit beeld. Het idee achter het zwart-wit beeld is dat hoe witter iets getint is, hoe dichterbij het is en hoe zwarter iets is, hoe verder weg het staat.

Donderdag - Dag 4

Vandaag ben ik verder gegaan met het lezen van het boek ‘Making Things See’. Nadat ik meer had geleerd over de dieptecamera van de kinect en hoe ik het kan gebruiken in de applicaties die ik maak voor kinect, ben ik een stapje verder gekomen. Met de data die de dieptecamera van de kinect analyseert kan een berekening worden gemaakt. Ik heb geleerd hoe ik in Processing kan programmeren dat de Kinect het dichtstbijzijnde punt voor mij berekent en bewaart. Met die berekening heb ik een applicatie gemaakt die het dichtstbijzijnde punt volgt en een lijn tekent, op de plek waar het dichtstbijzijnde punt zich bevind. Als je je hand voor je uitstrekt dan is dat het dichtstbijzijnde punt en kan je een simpele tekening maken.

Applicatie die het dichtsbijzijnde punt berekent en er een rode stip overheen tekent.

Een simpele teken applicatie.


Wat heb ik geleerd?
Vandaag heb ik geleerd hoe ik de data die ik krijg via de Kinect kan gebruiken om een simpele applicatie te maken. Ik heb het idee dat ik veel leer in weinig tijd en ik vind het een super interessant onderwerp. Ik merk wel dat er nog veel te leren is voordat ik kan beginnen aan het programmeren voor de RC Car, dus ik ben van plan om morgen nog een aantal applicaties uit het boek te bestuderen en te maken.


Vrijdag - Dag 5

Vandaag ben ik meteen aan de slag gegaan met het maken van een nieuwe applicatie. Ik wist inmiddels hoe ik het dichstbijzijnde punt kon gebruiken als een soort van user input, eigenlijk is het een beetje te vergelijken met het bewegen van een muis op een computer. Mijn volgende applicatie werd een simpele image gallery, een applicatie waarmee je met behulp van de Kinect plaatjes kan verplaatsen op het scherm en ze groter of kleiner kan maken.

Een simpele image gallery applicatie.

Na het maken van de image gallery was ik in het volgende hoofdstuk aangekomen in het boek van ‘Making Things See’. In het volgende hoofdstuk werd er beschreven hoe je de Kinect 3-dimensionaal kan gebruiken. Tot zo ver heb ik alleen maar applicaties geprogrammeert die 2-dimensionaal zijn gemaakt. Ik leerde over hoe de Kinect een 3D scan van de omgeving kan maken en deze ook in 360 graden kan weergeven. Ik had een simpele applicatie gemaakt die een 3D scan maakt van het zichtveld van de Kinect met daarin een doorzichtige rode dood, die pas van inhoud wordt gevult als je hem aanraakt.

Een 3D reconstructie van de Kinect.


Wat heb ik geleerd?
Ik heb geleerd hoe ik de data van de Kinect op een andere manier kan gebruiken om diverse applicaties te programmeren. Ook heb ik vandaag geleerd hoe de Kinect een 3D scan kan maken van de omgeving en hoe je daar mee een virtuele interactie kan maken in 3D. De interactie wordt op een hele aparte manier gemaakt, de Kinect analyseert wanneer het gebied van de doos (de interactie)  wordt gevult met inhoud. De Kinect kan diepte meten, dus kan ik via Processing registreren, wanneer de doos wordt gevult met inhoud. Als ik nu de rode doos aanraak wordt, deze gevult met mijn hand, dus vertelt Processing dat er wat moet gebeuren (de doos vult zich met rood).


Maandag - Dag 6

Vandaag ben ik verder aan de slag gegaan met het programmeren van applicaties in 3D. Ik heb de kennis van de vorige dagen gebruikt om een nieuwe applicatie te maken, een virtuele ‘Air Drum’. Ik heb mijn vorige applicatie uitgebreid naar een versie, waarin 2 dozen in de lucht hangen. Elke doos heeft zijn eigen drum geluidje en wanneer je de doos aanraakt speelt het geluidje zich af.

Wat heb ik geleerd?
Het duurde even voordat ik deze applicatie af had, maar ik heb nu wel een applicatie in 3D kunnen maken met twee verschillende  interacties. Dat is weer een stapje dichterbij de RC car. Ik heb het idee dat ik niet super veel meer hoef te experimenteren om een applicatie te kunnen maken die de RC car gaat besturen via Kinect.

Dinsdag - Dag 7

Vandaag was een rotdag. Ik was inmiddels nog een hoofdstuk verder gekomen in het boek ‘Making Things See’ en ik had vandaag een interessante applicatie gemaakt. In het nieuwe  hoofdstuk leerde ik hoe ik met de Skeleton data van de SimpleOpenNI libary kan werken. Ik had een applicatie gemaakt die beide handen van je trackt en de afstand tussen deze handen kon berekenen. Toen ik bij de volgende opdracht in het boek kwam, ging ik met gestures aan de slag. Toen begonnen echter de problemen. De code die in het boek stond beschreven was nieuw vergeleken met de code uit de vorige hoofdstukken, dus die had ik nog nooit gebruikt. Ik kreeg alleen maar errors toen ik de code uit het boek uitprobeerde, dezelfde errors als toen in het begin met de code van SimpleOpenNI. Ik ging gefrustreerd opzoek naar antwoorden op het internet, maar kon niet veel vinden. Uiteindelijk kwam ik op een forum terecht waar werd uitgelegd welke stukjes ‘outdated’ code ik moest vervangen met de nieuwe code. Toen ik dat had geprobeerd waren de errors inderdaad weg, maar de code van het programma zelf deed niks. O mdat ik de nieuwe code moest toevoegen, moest ik de oude code aanpassen, dat was de rede waarom er een fout in zat. Ik kon dus niet verder en kon de rest van de dag geen oplossing meer vinden. Het zag er naar uit dat ons project niet op tijd ging lukken.

Wat heb ik geleerd?
Ik heb vandaag een nieuwe manier van tracking geleerd. Door de Skeleton data van de SimpleOpenNI libary te gebruiken kan ik op een eenvoudige manier de data van de Kinect gebruiken om elk lichaamsdeel van de gebruiker te tracken.


Woensdag - Dag 8

Vandaag begon de dag al goed. Ik was dinsdag in de avond verder gegaan, omdat ik bang was dat we anders niet het project op tijd af zouden krijgen en ik was op een geniaal idee gekomen. Ik had uitgevonden hoe ik de applicatie die ik dinsdag ochtend had gemaakt, kon gebruiken als een vritueel stuur. De afstand die tussen mijn handen werd berekend kan dienen als signaal voor wanneer de auto naar voren moet gaan, of naar achter. De positie van de y-as van de afstand tussen mijn handen kan gebruikt worden als signaal voor de wielen die naar links of rechts moeten gaan of stil moeten blijven staan. Op het scherm had ik een lijn weergegeven die de afstand tussen mijn handen representeerd. Ook had ik een stukje code toegevoegd die de afstand en y as print in de console in Processing , zo kon ik ideaal testen welke waardes ik moest geven aan de signalen (voor, stop, achter, links, rechts). Het groepje was zeer enthousiast en de voorbereidingen waren al klaar, we moesten alleen nog de Arduino code koppelen met de Processing code. Na een aantal mislukte pogingen is het uitendelijk gelukt en konden we de auto besturen met de Kinect.


Wat heb ik geleerd?
Gisteravond/vandaag heb ik geleerd hoe ik op een andere manier naar een applicatie kan kijken die ik al eerder had gemaakt en er iets nieuws van kan maken. Het was eerst een raadsel voor mij hoe ik dit ging doen, maar na veel te hebben geoefend (misschien wel ietsjes te veel), ben ik toch op het idee gekomen. Ik heb eigenlijk via een simpele if-case de waardes doorgevoerd naar de Arduino, ik wist niet dat het uitendelijk zo iets simpels zou zijn.


Donderdag - Dag 9

Vandaag was de laatste dag dat we konden werken aan het project, dat betekent dat we snel de race baan in elkaar moesten gaan zetten. Gelukkig hadden een aantal andere groepsgenoten al het een en ander voorbereid. We konden bijna al het materiaal dat we nodig hadden van andere groepen gebruiken, omdat er nog heel veel over was, dat heeft ons gelukkig een beetje geld bespaart. Zelf ben ik de controls van de RC car nog een beetje gaan fine-tunen, het sturen ging niet al te makkelijk, maar na een tijdje experimenteren, wist ik de juiste waardes te vinden voor de stuursignalen.

Wat heb ik geleerd?
Vandaag heb ik niet zo veel geleerd, het project was zo goed als klaar, alleen de baan is nog niet helemaal af. Ik heb een beetje kennis opgestoken van het fine-tunen en daar door iets meer inzicht gekregen in het programmeer proces.


Vrijdag - Dag van de Expo

Vandaag was een hele leuke dag. We mochten allemaal onze projecten presenteren. Ik heb heel veel enthousiaste mensen mogen begeleiden in het gebruiken van ons project. Iedereen reageerde heel erg positief en mensen van jong tot oud waren echt versteld van wat wij gemaakt hadden. Ik wist niet dat mensen ons project zo leuk konden vinden, zelfs zo leuk dat ik nog werd uitgenodigd om mijn applicatie uit te proberen op een bestuurbare race auto die 40km per uur gaat. Als ik zo veel enthousiaste reacties zie dan raak ik heel erg gemotiveerd om vooral verder te gaan met dit soort projecten.