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.