Na een aantal dagen niet meer met de Kinect gewerkt te hebben (dit ivm een website die nog snel gepubliceerd diende te worden), werd het vandaag weer eens tijd om verder te knutselen.
Met behulp van een zeer uitgebreid artikel hebben we een klasse geschreven die de gebruiker in staat stelt om vrij eenvoudig de VGA camera aan te roepen, en om het beeld over te dragen naar een image controller binnen een WPF applicatie.
Een WPF applicatie is anders dan een form applicatie, daar hier de opmaak van het form geschreven kan worden met behulp van een XAML (Microsoft's eigen versie van XML?). Deze applicaties zijn beter met verwerken van beelden, dus vandaar dat gekozen wordt voor een WPF applicatie.
Op het WPF venster wordt een image controller geplaatst met een resolutie van 640 x 480 (max van de VGA camera van de Kinect). Vervolgens wordt de geschreven klasse toegevoegd aan het project en binnen de constructor geïnitialiseerd. Daarna wordt er een event handler gemaakt voor het verversen van het venster (dit gebeurd met zo'n 60 fps), waarbij de bron van de image handler wordt toegekend aan de ruwe imagedata, welke door de klasse wordt gegeven.
Hierdoor krijgt men als het ware gewoon video in een WPF applicatie, daar met 60 fps dit beeld wordt ververst.
Hieronder een afbeelding van deze applicatie in werking:
In het artikel wordt ook geschreven over het verkrijgen van de dieptemappen, hier gaan we ons nu over buigen. Zodra er nieuwe ontwikkelingen zijn zullen we dit meteen posten!
Een blog van twee software engineers in opleiding, en hun ervaringen met het programmeren voor de Kinect en de nodige problemen en obstakels dat dit met zich mee brengt.
Zoeken in deze blog
zondag 10 april 2011
donderdag 7 april 2011
De aanhouder wint!
Na enkele pogingen, werd ons al snel duidelijk dat het toch niet altijd volgens het boekje kan gaan. Ook in vorige blog gegeven link bevat zijn fouten.
Na de hele gids stap voor stap gedaan te hebben, kregen we bij het uitvoeren van de demo applicaties voortdurend timeout meldingen, de Laptop kon de Kinect niet vinden (waarschijnlijk dus echt wel een driver probleem). Gelukkig staat onderaan het artikel een troubleshooting, waarin wordt beschreven welke stappen men kan ondernemen mocht de oorspronkelijke aanpak niet meteen werken.
Daarnaast hebben we de eerste keren gebruikt gemaakt van de stabiele versies van de software, bij de latere pogingen zijn we overgestapt op de onstabiele versies van de software, maar we durven niet te zeggen of dit enig invloed heeft gehad.
We zijn er uiteindelijk in geslaagd om communicatie met de Kinect tot stand te brengen, en om beeld te krijgen. We hebben de demo applicatie SimpleViewer.net gebruikt. .Net zegt al genoeg, deze is geschreven met de nieuwe (wel nog beta) C# wrapper. Zie hieronder het resultaat:
Na de hele gids stap voor stap gedaan te hebben, kregen we bij het uitvoeren van de demo applicaties voortdurend timeout meldingen, de Laptop kon de Kinect niet vinden (waarschijnlijk dus echt wel een driver probleem). Gelukkig staat onderaan het artikel een troubleshooting, waarin wordt beschreven welke stappen men kan ondernemen mocht de oorspronkelijke aanpak niet meteen werken.
Daarnaast hebben we de eerste keren gebruikt gemaakt van de stabiele versies van de software, bij de latere pogingen zijn we overgestapt op de onstabiele versies van de software, maar we durven niet te zeggen of dit enig invloed heeft gehad.
We zijn er uiteindelijk in geslaagd om communicatie met de Kinect tot stand te brengen, en om beeld te krijgen. We hebben de demo applicatie SimpleViewer.net gebruikt. .Net zegt al genoeg, deze is geschreven met de nieuwe (wel nog beta) C# wrapper. Zie hieronder het resultaat:
Zoals u kunt zien wordt het beeld opgemaakt in verschillende lagen, zoals we beschrijven in onze documentatie is de Kinect in staat om tot 2048 verschillende lagen diepte te kunnen waarnemen, daarom dat alles op de voorgrond fel geel is en alles wat verder verwijdert is, steeds donkerder wordt. Alles wat té dicht bij de Kinect komt, en dus buiten het infrarood rooster valt, wordt wel waargenomen door de VGA camera, maar ontdaan van de kleur en in zwart weergegeven (onderste gedeelte van de foto is de muis en onderkant van de laptop welke vlak voor de lens staan).
Heel mooi en aardig dat we nu al zover gekomen zijn na enkele uren spelen, maar nu is het natuurlijk de vraag hoe we dit soort applicaties zelf kunnen ontwikkelen, zodat we deze kennis vervolgens kunnen toepassen bij het ontwikkelen van onze eigen software.
Ijverigheid leidt tot werk in de late uurtjes
Na een Laptop te hebben geprepareerd voor het werken met de Kinect, was het noodzaak uit te vogelen hoe we deze nu precies moesten aansluiten op de Laptop. Daar er geen officiële drivers (nog niet) zijn vrijgegeven door Microsoft (hoewel zij niet eens officiële leverancier/fabrikant zijn, dat is PrimeSense), moet men momenteel terugvallen op een steeds groter scala aan derde partij drivers.
Gelukkig heeft het bedrijf achter de hardware en (deels) software van de Kinect voor een eigen open source driver gezorgd, genaamd OpenNI (NI staat voor Natural Interaction). Daarnaast heeft het bedrijf (PrimeSense) ook nog een library vrijgegeven wat al een groot gedeelte van het motion tracking en recognition voor zijn rekening neemt, genaamd NITE. Deze twee componenten zullen we gaan gebruiken voor het aansturen van de Kinect, en mogelijk ook voor het bouwen van eigen software.
Het blijkt echter niet al te eenvoudig om de Kinect eenvoudigweg aan de praat te krijgen met deze software, installatie van bovengenoemde pakketten garandeerd helaas geen plug & play. Daarom willen we iedereen die zich hiermee wilt bezighouden deze link niet onthouden.
Momenteel is de software geïnstalleerd en de Kinect aangesloten, en ziet het er naar uit dat Windows de Kinect herkent (zowel de Kinect Motor alsmede de Kinect Camera, de Kinect Microphone werkt nog niet, daar hier nog geen drivers voor zijn vrijgegeven). Nu is het tijd om de laatste hand te leggen op de communicatie tussen Laptop en Kinect, waarna we vervolgens een paar demo applicaties zullen uitproberen.
Gelukkig heeft het bedrijf achter de hardware en (deels) software van de Kinect voor een eigen open source driver gezorgd, genaamd OpenNI (NI staat voor Natural Interaction). Daarnaast heeft het bedrijf (PrimeSense) ook nog een library vrijgegeven wat al een groot gedeelte van het motion tracking en recognition voor zijn rekening neemt, genaamd NITE. Deze twee componenten zullen we gaan gebruiken voor het aansturen van de Kinect, en mogelijk ook voor het bouwen van eigen software.
Het blijkt echter niet al te eenvoudig om de Kinect eenvoudigweg aan de praat te krijgen met deze software, installatie van bovengenoemde pakketten garandeerd helaas geen plug & play. Daarom willen we iedereen die zich hiermee wilt bezighouden deze link niet onthouden.
Momenteel is de software geïnstalleerd en de Kinect aangesloten, en ziet het er naar uit dat Windows de Kinect herkent (zowel de Kinect Motor alsmede de Kinect Camera, de Kinect Microphone werkt nog niet, daar hier nog geen drivers voor zijn vrijgegeven). Nu is het tijd om de laatste hand te leggen op de communicatie tussen Laptop en Kinect, waarna we vervolgens een paar demo applicaties zullen uitproberen.
woensdag 6 april 2011
Kinect, wat is het en hoe werkt het?
Ten eerste, hartelijk welkom op dit blog en hartelijk bedankt dat u de tijd ervoor neemt om dit blog te lezen en ons te volgen op ons avontuur dat Kinect heet. Al geruime tijd heeft de faculteit ICT te Hogeschool Zuyd te Heerlen, twee Kinect apparaten in het bezit. Een hiervan zal samen met een XBOX360S in de loungeruimte worden geplaatst, en de andere losse Kinect is bedoeld voor programmeer doeleinde, waarbij studenten de gelegenheid krijgen om met dit apparaat leuke software te produceren (althans, dat is de bedoeling).
Vandaag hebben we de Kinect mee naar huis toe gekregen, met de bedoeling om een applicatie te ontwikkelen die een bijdrage kan leveren binnen een andere faculteit, te weten ergotherapie. Echter, voordat er kan worden begonnen met het ontwikkelen van deze applicatie, is het noodzaak te weten hoe de Kinect precies in elkaar steekt en hoe deze werkt. Dat wordt dus gelijk goed zoeken en surfen op het web.
Het zal u vast niet verbazen dat ook voor de Kinect een Wiki is gemaakt, met alle nodige informatie. Hier vinden we de architectuur van het apparaat, alsmede de benodigde technieken die worden toegepast. Zo kunt u ook vinden hoe de volgende technieken worden toegepast:
(Infrared) Structured Light
Motion Capture
Three Dimensional Face Recognition
Speaker Recognition
Gesture Recognition
Motion Analysis
Feature Extraction
Het is nogal een dikke pil en heftige materie, maar er is al hard gewerkt aan een documentatie die dit alles wat duidelijker uitlegt. Helaas is deze documentatie op moment van bloggen nog lang niet af, dus zullen we deze nog niet publiceren. Zodra dit wel het geval is zullen we het u natuurlijk direct laten weten ;)
Na al deze materie gelezen te hebben en tot ons te hebben laten doorgedrongen, wordt het tijd om maar eens aan de slag te gaan met de Kinect, maar dan zal eerst moeten worden uitgevonden hoe we deze kunnen aansluiten op een PC/Laptop en hoe het zit met de nodige drivers, anders heeft het niet echt veel doel om al software te gaan bouwen. Dit aansluiten zal later blijken lastiger te zijn dan gedacht...
Vandaag hebben we de Kinect mee naar huis toe gekregen, met de bedoeling om een applicatie te ontwikkelen die een bijdrage kan leveren binnen een andere faculteit, te weten ergotherapie. Echter, voordat er kan worden begonnen met het ontwikkelen van deze applicatie, is het noodzaak te weten hoe de Kinect precies in elkaar steekt en hoe deze werkt. Dat wordt dus gelijk goed zoeken en surfen op het web.
Het zal u vast niet verbazen dat ook voor de Kinect een Wiki is gemaakt, met alle nodige informatie. Hier vinden we de architectuur van het apparaat, alsmede de benodigde technieken die worden toegepast. Zo kunt u ook vinden hoe de volgende technieken worden toegepast:
(Infrared) Structured Light
Motion Capture
Three Dimensional Face Recognition
Speaker Recognition
Gesture Recognition
Motion Analysis
Feature Extraction
Het is nogal een dikke pil en heftige materie, maar er is al hard gewerkt aan een documentatie die dit alles wat duidelijker uitlegt. Helaas is deze documentatie op moment van bloggen nog lang niet af, dus zullen we deze nog niet publiceren. Zodra dit wel het geval is zullen we het u natuurlijk direct laten weten ;)
Na al deze materie gelezen te hebben en tot ons te hebben laten doorgedrongen, wordt het tijd om maar eens aan de slag te gaan met de Kinect, maar dan zal eerst moeten worden uitgevonden hoe we deze kunnen aansluiten op een PC/Laptop en hoe het zit met de nodige drivers, anders heeft het niet echt veel doel om al software te gaan bouwen. Dit aansluiten zal later blijken lastiger te zijn dan gedacht...
Abonneren op:
Posts (Atom)