kinect sdk preview

22
Ce este de fapt Kinect-ul și cum îl putem folosi Radu Vunvulea

Upload: radu-vunvulea

Post on 14-Jan-2015

1.643 views

Category:

Technology


3 download

DESCRIPTION

A presentation of Kinect device and SDK.This presentation was made for Codecamp event from 18/02/2012 from Cluj-Napoca, by Radu Vunvulea.http://codecamp.ro/http://vunvulearadu.blogspot.com/

TRANSCRIPT

Page 1: Kinect SDK preview

Ce este de fapt Kinect-ul și cum îl putem folosi

Radu Vunvulea

Page 2: Kinect SDK preview

Agenda• Scurt istoric• Ce este de fapt Kinect-ul?• Din ce este compus• Ce contine• Date tehnice despre senzori• Cum se calculeaza distanta• De ce avem nevoie ca sa programam• Ce putem sa facem cu SDK-ul• Demo• SDK preview• Licentiere• Bibliografie• Intrebari

Page 3: Kinect SDK preview

Scurt istoric

• 24/09/2009 - apare primul anunt oficial din partea MicrosoftNume de proiect: Natal

• 12/03/2010 - este lansat oficial pe piata• 11/10/2010 – apare primul API open-source scris de catre un

hacker• 1/02/2011 – se lanseaza primul SDK oficial pentru PC

Data Unitati vandute

15/11/2010 1.000.000

29/11/2010 2.500.000

05/01/2011 8.000.000

Page 4: Kinect SDK preview

Ce este de fapt Kinect-ul?

Page 5: Kinect SDK preview

Ce este de fapt Kinect-ul?

• Un dispozitiv periferic care permite utilizatorului sa controleze un calculator sau o consola prin intermediul gesturilor si a vocii

• Permite interactiunea cu o unitate doar prin intermediul miscarii corpului

• Orice miscare a unei persoane poate fi identificata prin urmarirea unor puncte

Page 6: Kinect SDK preview

Din ce este compus

Page 7: Kinect SDK preview

Ce contine

• Un motoras pentru miscare pe verticala( +/- 27 °)• O camera video VGA• Un proiector inflarosu( inflared laser)• Un sensor CMOS monocrom• Patru microfoane• O mufa USB type A

Page 8: Kinect SDK preview

Date tehnice despre sensori

• Distanta• Distanta optima este intre 1.2m si 3.5m• Senzorii pot sa masoare distanta intre 0.7m si 6m• Unghiul de vizibilitate este de 57° pe orizontala si 43°

pe verticala

• Video stream de 640x480px (8 bits VGA la 30Hz)• Detectarea automata a unei persoane• Tracking la un set de puncte care formeaza corpul uman

• Audio stream – 16kHz• Detectarea locatiei in spatiu de unde este emis sunetul• Identificarea unei persoane pe baza vocii

Page 9: Kinect SDK preview

Cum se calculeaza distanta

• Mecanismul folosit pentru a calcula distanta se numeste:Stereo triangulation

Page 10: Kinect SDK preview

Cum se calculeaza distanta

• Mecanismul folosit pentru a calcula distanta se numeste:Stereo triangulation

Page 11: Kinect SDK preview

De ce avem nevoie ca sa programam

• Un Kinect pentru XBOX 360 + un adaptorsau

• Un Kinect pentru PC care vine in pachet cu adaptor

• Windows 7 sau Windows 8 • Visual Studio 2010• Kinect SDK -

http://www.microsoft.com/en-us/kinectforwindows/• O referinta la Microsoft.Kinect

• Daca vreti sa faceti aplicatii complexe trebuie sa aveti cunostinte de geometrie, trigonometrie si vectori

Page 12: Kinect SDK preview

Ce putem sa facem cu SDK-ul

• Capturi video si audio• Tracking la jucatori (maxim 7 – pentru moment)• Distanta fiecarui punct fata de Kinect• Identificarea sursei audio• Recunoasterea unui utilizator pe baza vocii• Coordonatele in spatiu a unor puncte pentru fiecare

jucator (maxim 4 jucatori) – aceste puncte formeaza Skeleton-ul

Page 13: Kinect SDK preview

DemoLet’s see Kinect in action

Page 14: Kinect SDK preview

Cum sa pornim Kinect-ul

KinectSensor kinect = KinectSensor.KinectSensors[0];kinect.Start();kinect.SkeletonStream.Enable();kinect.ColorStream.Enable();…

• Cand nu mai avem nevoie de Kinect trebuie apelatkinect.Stop()

Page 15: Kinect SDK preview

Cum sa ne inregistram la un stream

kinect.ColorStream.Enable(ColorImageFormat.RgbResolution1280x960Fps12);kinect.ColorFrameReady += new EventHandler(Kinect_ColorFrameReady);…void Kinect_ColorFrameReady(object sender,

ColorImageFrameReadyEventArgs e){

ColorImageFrame frame = e.OpenColorImageFrame();}

• De fiecare data cand un nou stream este disponibil acest eveniment o sa fie aruncat

Page 16: Kinect SDK preview

Ce date primim de la Depth sensor

• primii 13 bits din fiecare pixel reprezinta distanta obiectului fata de device in milimetrii

• folosind alti 3 bits putem sa identificam index-ul jucatorului

DepthImageFrame frame = e.OpenDepthImageFrame();short[] pixels = new short[frame.PixelDataLength];frame.CopyPixelDataTo(pixelInfos);

int distanceInMillimeters =pixels[pixelIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth;

int playeNumber = pixels[pixelIndex] & DepthImageFrame.PlayerIndexBitmask;

Page 17: Kinect SDK preview

Skeleton

• Pentru fiecare punct (Joint) primim pozitia acestuia in spatiu (x,y,z)

• Nu este nevoie ca toate punctele sa fie urmarite de catre Kinect• Unele puncte se pot suprapune, din aceastacauza starea unui punctpoate sa fie Inferred

Page 18: Kinect SDK preview

Skeleton

SkeletonFrame frame = e.OpenSkeletonFrame();Skeleton[] skeletons = new Skeleton[frame.SkeletonArrayLength];frame.CopySkeletonDataTo(skeletons);foreach (Skeleton skeleton in skeletons){

foreach (Joint joint in skeleton.Joints){

If (joint.TrackingState != JointTrackingState.Tracked)continue;

Console.Write(joint.JointType);Console.Write(string.Format(“({0},{1},{2})”,

joint.Position.X, joint.Position.Y, joint.Position.Z);}

}

Page 19: Kinect SDK preview

Licentiere

Kinect pentru XBOX- se poate folosi doar pentru aplicatii non-comerciale

Kinect pentru PC - se poate folosi atat in aplicatii non-comerciale cat si in aplicatii

comerciale- pretul device-ului este cu 100$ mai mare

Page 20: Kinect SDK preview

Bibliografie

• http://www.microsoft.com/en-us/kinectforwindows/• http://openkinect.org/wiki/Main_Page • http://channel9.msdn.com/coding4fun/kinect/Open-

source-Kinect-gesture-recognition-project-Kinect-DTW • http://en.wikipedia.org/wiki/Kinect

Page 21: Kinect SDK preview

?Questions

Page 22: Kinect SDK preview

Radu [email protected]

vunvulearadu.blogspot.com

Multumesc