Vandaag is de beloofde Kinect for Windows SDK als beta uitgekomen. Net op tijd, want het is nog net lente. De SDK is bedoeld om software op Windows te maken die gebruik maakt van de Kinect sensor. Op dit moment is het gebruik van de SDK nog niet voor commercieel gebruik, dat komt in een later stadium. Deze eerste beta moet met name software ontwikkelaars, academici en enthousiastelingen helpen om zelf Kinect te gebruiken in nieuwe toepassingen. De Kinect for Windows SDK met alle informatie is hier te vinden. Quickstarts zijn hier te vinden. Er is ook een Coding4fun blog die meer informatie bevat.
Natural User Interface (NUI)
Microsoft Surface biedt al een nieuwe soort van interactie met de computer door het gebruik van onder andere multi-touch technieken en objectherkenning. Daardoor wordt de manier waarop software wordt gebruikt anders, natuurlijker, dan we met het bekende toetsenbord en de muis gewend zijn. Deze nieuwe stroming wordt Natural User Interfaces genoemd, oftewel NUI. Kinect voegt daar weer nieuwe mogelijkheden aan toe door gebruik van verschillende camera’s en microfoons.
Camera’s en microfoons
Kinect heeft verschillende camera’s waarmee gewoon videobeeld verkregen kan worden, infrarood en ook een diepte gezien kan worden. Daarnaast heeft Kinect 4 microfoons waardoor ook geluid verwerkt kan worden, inclusief informatie over de richting waar het geluid vandaan komt. De SDK ontsluit deze mogelijkheden op een aantal manieren.
Beginnen met de Kinect sensor en de SDK
Om de SDK te gebruiken heb je een Kinect sensor nodig die je door middel van de USB-poort aan je PC kan koppelen. Hiervoor is de losse Kinect sensor nodig, die ook voeding en een USB aansluiting biedt. De Kinect sensor die bij de (nieuwere) Xbox 360 Slim wordt meegeleverd heeft dat niet standaard, maar je kan dat wel los aanschaffen (Bijvoorbeeld in de Microsoft Store).
De SDK bevat allereerst de driver om Kinect aan te sturen. De volgorde is:
- De Kinect sensor loskoppelen van de PC als die al gekoppeld was
- Alle oude drivers verwijderen (ook open source drivers)
- Visual Studio afsluiten als die geopend is
- De SDK installeren
- Kinect sensor (weer) aansluiten
De drivers worden dan aan het device gekoppeld. Er kunnen overigens meerdere sensors worden gebruikt. Een sensor kan wel door maar één applicatie tegelijk gebruikt worden.
Met de installatie van de SDK worden de benodigde assemblies (DLL’s) en drivers op de juiste plaatsen geinstalleerd. Deze zijn te vinden in \Program Files\Microsoft Research KinectSDK (zowel op 32-bit als 64-bit systemen). Daarnaast worden de helpfiles, 32-bit versie DLL’s en headerfiles geinstalleerd. Deze zijn te vinden in dezelfde directory voor een 32-bit systeem, of in \Program Files (x86)\Microsoft Research KinectSDK voor 64-bit systemen. Hier zijn ook de executables te vinden van 2 voorbeeld applicaties, SkeletalViewer en ShapeGame.
SkeletalViewer laat het videobeeld, het infrarood beeld en het getekende ‘skelet’ zien.
ShapeGame laat een ‘skelet’ zien in een spel waar objecten uit de lucht vallen die stuk gemaakt kunnen worden door ze aan te raken. Met voice commando’s kan er gestopt, gepauseerd of gestart worden, kunnen objecten vergroot of verkleind worden, vermeerder of verminderd, enzovoort.
De sources van de voorbeelden zijn te vinden in \Users\Public\Documents\Microsoft Research KinectSDK Samples. Dit is gedaan vanwege de beveiligings-instellingen op de Program Files directories.
En dan …
Eerst even een test doen met de SkeletalViewer en de ShapeGame is een goed begin. Je krijgt dan gelijk een idee wat er ongeveer kan met de SDK. Om de ShapeGame helemaal tot zijn recht te laten komen, moeten ook even de (32-bits of x86!) versie van de Microsoft Speech SDK en runtime worden geïnstalleerd. Dan kan je ook voice-commando’s in het Engels geven waar de applicatie op reageert.
Zoals al aangegeven, ondersteunt de SDK nu meerdere sensors tegelijk. Er kunnen ook meerdere personen herkend worden, maar met een maximum van 2.
Applicaties voor Kinect kunnen gebouwd worden in C++, C# of VB.NET. Er is een helpfile (CMH) aanwezig die de API beschrijft. De samples laten zien hoe verschillende technieken gebruikt kunnen worden. Daarbij is er ook uitgebreide documentatie van de voorbeeld applicaties om meer begrip te krijgen van wat er gebeurt.
In de code wordt informatie gegeven waarmee personen en hun lichaamshouding herkend kan worden. Dit wordt gedaan in een collectie van Joints die het Skeleton vormen. Elke joint heeft een ID, zodat bekend is welk gedeelte van het lichaam het is. In onderstaande tekening is te zien welke punten worden teruggegeven. Per punt is er informatie zoals x,y en ook afstand tot de sensor, zodat een 3D beeld verkregen kan worden. De x,y coordinaten worden overigens in relatieve waardes gegeven, waarbij (0,0) het midden is, (–1,–1) linksonder en (1,1) rechtsboven.

De voorbeeld applicatie SkeletalViewer tekent deze gegevens om een soort geraamte te laten zien:

De SDK biedt nog geen ondersteuning voor het herkennen van gestures. Dus voorlopig zal dat zelf geprogrammeerd moeten worden of moeten anderen met oplossingen bovenop de SDK komen. Dus misschien heb je er een uitdaging bij om anderen te helpen. Ik ben in ieder geval al bezig met wat zaken die nuttig kunnen zijn voor anderen. Als ik het heb, post ik het uiteraard op mijn blog.
Dus downloaden die SDK, aansluiten de Kinect en wees creatief! En natuurlijk even laten weten als je iets leuks hebt gemaakt
Ik heb er in ieder geval al een hoop lol mee gehad.