Kinect investigat cu noul dispozitiv portabil, și să învețe să scrie aplicații pentru ea

  1. domeniul vizibil al camerei - de obicei, camera RGB, similar cu camera web peste medie: 640 x 480 și 30 de cadre pe secundă.
  2. proiector cu laser infraroșu, care creează un spațiu într-o grilă de puncte.
  3. Aparat de fotografiat, trage în spectrul infraroșu, care înregistrează o imagine a grilei.
  4. Microfon stereo cu sistem avansat de reducere a zgomotului - pentru un control vocal adecvat.
  5. Motor de reglare a senzorului de poziție.
  6. Chip PrimeSensor - creează o mare parte din magia, procesarea imaginii cu camera în infraroșu produce o ieșire - 3D-imagine.

conexiune

Kinect'y vândute în cutii, au deja tot ce ai nevoie pentru a lucra, ele pot fi conectate direct la computer. În cazul în care senzorul este inclus cu noul xbox'om, apoi să-i este nevoie de un adaptor special precum și un conector USB există un non-standard, cu un opțional de 12 V (senzor de curent slab de la portul nu este suficient). Sursa de alimentare original poate cumpăra un magazin Microsoft pentru $ 34.99, și va salva de comanda clona chinez de trei ori mai ieftin. Acum puteți învelesc la computer și să înceapă să mizerie în jurul cu partea de software.

Dar v-ar lua mai bine alt sofer. Inima Kinect'a proiectat nu este mare și puternic Microsoft, o companie tanara PrimeSence. Pentru ei, Kinect - doar un singur produs, utilizând tehnologia lor NUI (interfața cu utilizatorul naturale) - o interfață de utilizator natural, care permite unei persoane să interacționeze cu sistemul vizual, prin intermediul gesturilor și utilizarea comenzilor vocale. Ei doresc omniprezența creației sale, și de a ajuta în mod activ pentru a deschide sursa comunitate. Aceste arhive pe githabe este driverul pentru senzorul de referință. kinektom direct nu funcționează, dar versiunea lui dopilennuyu face față cu această sarcină perfect!

Îl puteți descărca, de exemplu, site-ul proiectului Faast. După instalarea aspectul în managerul de dispozitiv - secțiunea PrimeSensor trebuie să fie de trei dispozitive: Camera Kinect, Kinect Motor și Kinect audio. Dar, în afară de conducătorul auto, veți avea nevoie de OpenNI și PrimeSense NITE bibliotecă.

OpenNI - o organizație non-profit care își propune să creeze un standard deschis pentru „interacțiune naturală» (interacțiuni naturale). De asemenea, ea a dezvoltat OpenNI - un cadru cu același nume creat pentru a interacționa cu o parte open source - echipamentul, și cu straturi de software de nivel superior - pe de altă parte. Se dezvoltă rapid, și ai nevoie de cea mai recentă versiune a instabilității sale, care poate fi descărcat de aici.

NITE - este middleware care rezolvă problema determinării gesturilor pentru a controla calculatorul și jocurile și funcționează împreună cu OpenNI. Deși acest lucru este un produs comercial, dar dezvoltator, PrimeSence, distribuie gratuit o cheie, care poate folosi oricine. Aici este cheia - 0KOIk2JeIBYClPWVnMoRKn5cdY4 =. Acesta trebuie introdus în timpul instalării. Încărcați NITE link-ul posibil.

După necesitatea de a modifica configurația xml-fișierele.

acestea sunt diferite de cele care sunt deja pre-instalate, numai cheia de serie. Despachetați arhiva și copiați fișierele din folderul SampleConfig.xml KinectXMLsOpenNI în dosarul de date din directorul OpenNI (cel mai probabil, acesta din dosarul C: Program Files), iar fișierele din folderul KinectXMLsNITE - în C: Programul FilesPrime SenseNITEData.

Mâinile sus în Psi pozeze!

Totul este gata, puteți încerca acum kinekt în. În primul rând, a se vedea ce programe gata făcute puteți utiliza. Faast (flexibil de acțiune și articulate Skeleton Toolkit) - este un instrument care vă permite să lega mișcările unui utilizator pe diferite apăsări pe buton, mișcările mouse-ul sau acțiunile joystick-ului. În acest fel puteți ridica un set de acțiuni, care este foarte probabil să joace orice joc pe PC. Descarcă-l de la programul .Polzovatsya projects.ict.usc.edu/mxr/faast/ nu este dificil. Primul lucru pe care trebuie să descărcați fișierul de configurare, care vă puteți scrie.

De exemplu, se va căuta World of Warcraft:

# Conectarea acțiunilor de intrare și de ieșire

cheie 10 left_arm_out un
10 left_arm_across d-cheie
15 lean_forwards cheie w
10 lean_backwards s-cheie
20 left_arm_forwards fila cheie
20 right_arm_forwards tasta 1
12 Tasta right_arm_up 4
15 Tasta right_arm_across 2
15 right_arm_out cheie 3

După aceasta, utilizatorul trebuie să calibreze programul pentru a afla unde mâinile și picioarele în cazul în care dumneavoastră. Pentru a face acest lucru, să stea în poziția de Psi, și pur și simplu pune, stai drept și să ridice mâinile sus, a pus lucrurile în portbagaj ca tine calibru bolnăvicios. După identificare este finalizat - pe partea de sus a corpului este un om schematică a liniilor drepte. Toate - acum calculatorul uitam dutifully gesturile tale.

Un alt program pentru managementul universal. Din cutie vă permite să controlați centrul mass-media XBMC și un mouse. aceasta plăcut, care nu necesită calibrare și tradus în gestul preselectat modul treaz. Versiunile noi încărcate periodic pe site-ul kinemote.net. Și, de la ultima actualizare în kit-ul este, de asemenea, un program care vă permite să gestionați nu întregul corp și degetele, cu toate acestea, în ciuda tuturor încercărilor, am avea și nu au câștigat.

Ultraseven

Într-un corp sănătos - minte sănătoasă

creați pentru prima dată în Visual Studio proiect WPF aplicare și se adaugă o referință la biblioteca OpenNi.net.dll (este în folderul unde ați instalat OpenNI) și Nui.Vision.dll (acesta poate fi pus în directorul de proiect).

Acum, să se ocupe cu performanța senzorului. În descrierea formei MainWindow.xaml expune rezoluție 662 × 520 și adăugați-l la imaginea care va fi afișată în imagine de la senzor, și o pânză pe care se vor afișa mai multe informații:


Apoi, în codul MainWindow.xaml.cs formă să declare utilizarea namespace necesare:

folosind System.ComponentModel; // necesare pentru prelucrare în fundal
folosind Nui.Vision; // lucru cu kinektom

Apoi, declară noul NuiUserTracker obiect și inițializează-l în constructor. Da, nu uitați să copiați fișierul din folderul SamplesConfig.xml OpenNI în dosarul Debug și eliberați proiectul.

Forma de clasă să declare toate variabilele:

Constructorul inițializează de tratare a evenimentelor:

// inițializa obiectul și încărcați configurările kinekta
_skeleton = new NuiUserTracker ( "SamplesConfi g.xml");
// declara o functie care va procesa
// muta un eveniment utilizator
_skeleton.UsersUpdated + = new NuiUserTracker.UserListUpdatedHandler (Skeleton_UsersUpdated);

Acum NuiUserListEventArgs.Users variabilă arată toți utilizatorii și a găsit un set de coordonate ale tuturor părților detectate ale organismelor lor. Apoi, scrie un utilizator de tratare a evenimentului de coordonate schimburi. De îndată ce primiți o valoare nenulă a coordonatelor verticale ale gâtului utilizatorului - Cred că e gata să stea ghemuit. Apoi se adaugă două linii. Unul chiar sub gât, iar celălalt - un pic mai sus de talie. Un ghemuit ar fi considerată o dublă trecere a celor două linii: în primul rând - din partea de sus în jos, și apoi - de jos în sus. Urmărite de intersecția liniei gâtului (deși vizual este undeva în piept). Această opțiune nu este ideală - poate shalturit, îndoire, sau venind în apropierea senzorului.

// face toate manipulările pentru fiecare utilizator
// (deși ele vor ghemuiește o mărime se potrivește tuturor)

foreach (utilizator var în e.Users) // dacă prima dată a găsit un gât
if ((TOPY == 0) (User.Neck.Y! = 0))
// defini poziția liniei de sus
Topy = user.Neck.Y + 20;
Linia Topline = nouă linie Y1 = Topy, X1 = 0, Y2 = Topy, X2 = 662,
Stroke = new SolidColorBrush (Colors.Red),
StrokeThickness = 4>;
// trage linia de sus pe pânză
LayoutRoot.Children.Add (Topline);
// defini poziția liniei de fund
bottomY = user.Torso.Y + 20;
Linia Bottomline = nouă linie Y1 = bottomY, X1 = 0, Y2 = bottomY, X2 = 662,
Stroke = new SolidColorBrush (Colors.Blue),
StrokeThickness = 4>;
// trage linia de jos pe pânză
LayoutRoot.Children.Add (Bottomline);
// trage un gât pe panza
LayoutRoot.Children.Add (elipsă);
>

La fiecare schimbare de coordonate este necesar să se verifice dacă a avut loc genuflexiuni:

ellipse.Margin = new Grosime (user.Neck.X, user.Neck.Y, 0, 0); // muta cercul din spatele gâtului
// caseta set poziție de top
if (user.Neck.Y + 5 // verifica pozitia caseta de jos
if (user.Neck.Y + 25> bottomY) bottomPosition = true;
în cazul în care (topPosition bottomPosition)
numOfBobs ++; // genuflexiuni jumătate din pusculita
topPosition = false; // steaguri resetare
bottomPosition = false;
>
// dacă poluprisedany acumulat douăzeci de bucăți - toate mijloacele,
// opriți programul
if (numOfBobs> = 20)
Application.Current.Shutdown (); // ieși din program
>

Rămâne să se ocupe cu timer-ul și blocați tastatura și mouse-ul. În primul rând, în App.xaml.cs nevoie pentru a adăuga un alt spațiu de nume:

// lucru cu cod negestionat, va trebui să
// bloca tastatura
folosind System.Runtime.InteropServices;

Apoi declară o metodă de blocare a tastaturii și mouse-ului. Este convenabil de a utiliza funcția API Windows BlockInput:

NativeMethods publice de clasă parțială
[System.Runtime.InteropServices.DllImportAttribute ( "user32.dll", punctul de intrare = "BlockInput")]
[Întoarcere: System.Runtime.InteropServices.MarshalAsAttribute (System.Runtime.InteropServices.UnmanagedType.Bool)]
public static bool extern BlockInput (
[System.Runtime.InteropServices.MarshalAsAttribute (System.Runtime.InteropServices.UnmanagedType.Bool)]
bool fBlockIt);
>

Pentru timer-ul, puteți crea un formular separat și le furnizează App.xaml ca un punct de intrare în program. În această formă de cod trebuie să adăugați lucru neymspeys cu cronometre:

privat static System.Timers.Timer TheTimer;

Și apoi rulați-l, de exemplu, prin apăsarea unui buton:

button1_Click privat void (expeditor obiect, RoutedEventArgs e)
// setați cronometrul pentru o oră
TheTimer = new System.Timers.Timer (3600000);
// cum să treacă - blocați computerul
TheTimer.Elapsed + = new ElapsedEventHandler (BlockPC);
TheTimer.Enabled = true;
>

void BlockPC (sursa obiect, ElapsedEventArgs e)
App.NativeMethods.BlockInput (true); // bloca intrarea
// a crea o instanta a formei cu o imagine de la senzor
MainWindow w = new MainWindow ();
w.Show ();

> // și arătați-

Nu rămâne uitați să adăugați eliminarea blocare înainte de a părăsi programul:

// returneaza utilizatorul la tastatura și mouse-ul
App.NativeMethods.BlockInput (false);

Dacă ceva nu a funcționat, codul complet al proiectului și toate fișierele necesare pentru a rula, puteți găsi pe disc.

Un pic kinekta

Cu toate acestea, experimentele cu kinektom un kinektom limitat! În cazul în care senzorul pentru a adăuga un proiector - veți obține un sistem de realitate augmentată, dorit evidențiat obiecte individuale în cameră, trage lumina pe pereți sau de a crea un sistem care ar alungare intelectual grăunte luminos al pisicii. Un kinekt oferă harta de adâncime pe de o parte, și în cazul în care iau 3 sau 4 și locul în colțuri, puteți obține o imagine tridimensională completă a spațiului interior. Acest 3d-scanner care se execută în timp real!

Dar nu numai toți oamenii! Kinect au încă gustul și robotul - încă, înainte de trei-dimensionale telemetre cu laser, costa cateva mii de dolari, iar acest dispozitiv oferă aceleași oportunități pentru toate două sute. Astfel, este posibil de a asambla un robot puternic pe componente produse în masă necostisitoare. De exemplu: iRobot crea ca un șasiu, un notebook convențional instalat Ubuntu și ROS - ca sistem de creier si Kinect - ca senzori. Se pare și Willow Garage Turtlebot. Da, în mod similar aranjate și Bilibot. la care este atașată o gheară destul chiar și roșu. Plus este deja disponibil la comanda pentru $ 1.200 de.

În general kinekt - primul reprezentant al unei noi clase de dispozitive. Sunt gata și concurentul său, care a avut ca scop inițial la lucrul cu PC-ul, - Asus WAVI Xtion. Probabil, va dura un pic de timp, iar această cursă se vor alătura noilor producători, biblioteca va dobândi ambalaje pentru o varietate de limbi, iar soluțiile vor fi incluse în viața de zi cu zi, și genul de om, fluturând mâinile în fața calculatorului, va fi un lucru obișnuit.

Arată acest articol unui prieten: