Zoeken in deze blog

donderdag 23 juni 2011

Gebrek aan tijd voor ontwikkelen voor Kinect

Ik ben momenteel helaas niet in staat om meer tijd in het ontwikkelen van applicaties met Kinect ondersteuning te steken. Daarom dan ook dat ik met deze melding op dit blog aan geef dat ik voorlopig stop en dat de Kinect binnenkort weer in het bezit zal zijn van dhr. Schmitz. Ik hoop dat andere veel informatie uit mijn posts hebben gehaald, en dat de volgende die de uitdaging op zich neemt om met de Kinect aan de slag te gaan, er baat bij heeft en uiteindelijk met een werkende applicatie op de proppen kan komen :) Het is niet dat we momenteel geen ideeën hebben of het niet kunnen, maar momenteel puur tijd tekort.
Desondanks, voor degene die ons blog gevolgd en gelezen hebben, bedankt!

vrijdag 17 juni 2011

Eindelijk! De officiele Kinect SDK voor Windows 7!

Eindelijk is het dan zo ver! Na maanden wachten heeft Microsoft haar eigen SDK voor de Kinect vrij gegeven. Men kan nu met behulp van honderden API's de Kinect gebruiken voor allerlei toepassingen op de PC. De SDK kan hier gedownload worden. Let echter wel op, de SDK bevindt zich momenteel in BETA fase. Daarnaast is het vereiste dat men beschikt over een PC met Windows 7 en .NET 4.0. Ik zou zeggen, neem een kijkje en veel plezier met de SDK, ik weet dat ik het zeker eens ga bekijken ;)

dinsdag 10 mei 2011

Nachtelijke ideeën eruptie

Hey allemaal,
zojuist nog er in geslaagd om de positie van de hand weer te geven op het scherm met behulp van een soort cirkeltje. Hiermee zou het ook eventueel mogelijk moeten zijn om soort van 'cursor' op het scherm te besturen. Dit zou weer kunnen leiden tot leuke verfrissende maar vooral vernieuwende ideeën om een menu te ontwerpen. Zo zouden we het princiepen van het Kinect Hub systeem van de Xbox af kunnen kijken, waarbij de speler zijn of haar hand gedurende een tijdje (3 seconden) boven een menu optie moet houden om deze te selecteren.
Daarnaast kwam ik zojuist op een idee voor een eventueel eenvoudig spelletje aan de hand van dit systeem. Ook zou het mogelijk kunnen zijn om dit spelletje vervolgens te koppelen aan een Windows Phone 7 applicatie voor multi interactie. Maar ik ga nog niet teveel in detail treden daar komen jullie vanzelf wel allemaal achter :p Nu eerst maar mijn nodige slaap vatten!

Programmeren met Kinect terug van weggeweest

Hey allemaal,
de laatste tijd hebben we helaas niet veel gelegenheid en/of tijd gehad om ons bezig te houden met het programmeren met behulp van de Kinect. Dit ook onder andere doordat we een tentamenweek gehad hebben, en omdat we in privé kringen nog genoeg andere belangrijke zaken te doen hadden. Nu is echter het nieuwe blok weer begonnen, de mei vakantie is afgelopen, en we gaan weer verder waar we gebleven waren!
Daarmee komen we gelijk met een artikel wat we tegen kwamen op internet, iets wat velen van jullie waarschijnlijk heel interessant zullen vinden, namelijk het aansturen van een NAO robot (waarvan we er op school 2 hebben) met behulp van de Kinect :D!
Een video:
En de link naar meer informatie over deze video: NAO aansturen met Kinect
Een korte blog dits keer, maar hou dit blog zeker in de gaten!

zondag 10 april 2011

En toen, was er beeld!

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!

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

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