Grau Multimèdia – UOC Universitat Oberta de Catalunya
Laboratori de programació creativa Grau Multimèdia – UOC

Benvinguts

KINECT I PROCESSING

La Microsoft Kinect és una càmera de profunditat que va aparèixer el 2010 per a la Xbox de Microsoft. La versió 2 aparegué el 2013, i incorpora un seguit de millores que comentarem més avall.

Nota històrica i previsió de futur

Quan va aparèixer, Kinect aspirava a causar una revolució al món dels videojocs tan gran com la que uns anys abans havia produït l’aparició de la Nintendo Wii. Val a dir que no es va produir tal revolució, sinó que va passar sense excessiva pena ni glòria pel món de les consoles de videojoc. Actualment, tot fa pensar que no apareixerà la versió 3 de Kinect, ja que la indústria està clarament i totalment bolcada en els sistemes de realitat virtual. Per tant, podem esperar que a la llarga Kinect s’anirà convertint en l’enèssim giny des actualitzat i cada vegada menys fàcil de fer funcionar. …però per a això encara falta una mica.

On sí que Kinect va fer un forat considerable fou, precisament, a l’àmbit de les arts visuals digitals i la programació creativa. Per tots aquells que jugaven amb l’ús de les càmeres de vídeo com a sensors, per detectar la presència d’usuaris, llegir-ne els moviments, estudiar-ne la silueta, etc., la Kinect va ser una benedicció caiguda del cel. D’una tacada, una càmera que rondava els 140 euros podia donar aquesta informació i més. Ja no calia fer substracció de fons, ni patir per què teníem darrere la càmera, ni per la il·luminació… i a sobre ens permetia jugar amb paràmetres de profunditat! Una meravella, tot i els seus inevitables problemes, com la inicial falta de compatibilitat, la baixa resolució, o el soroll de la senyal.

Sigui com sigui, es va fer servir i es fa servir molt, i en aquest cas la previsió de futur és del que podríem dir de resistència: Mentre hi hagi Kinects per fer funcionar i ordinadors capaços de llegir-ne les dades (és a dir: fins que nous sistemes operatius les converteixin en obsoletes de tot), hi haurà artistes que les tindran a la caixa d’eines per crear experiències interactives.

Què fa la Kinect?

Tant la Kinect original com la versió 2 fan essencialment el mateix, tot i que com és d’esperar amb millores notables.

La primera Kinect té tres ‘ulls’. D’esquerra a dreta, corresponen a l’emissor d’infrarrojos, el receptor i la càmera RGB. La Kinect v2 té essencialment el mateix, però només es veu com a ‘ull’ la càmera RGB de l’esquerra.

 

L’emissor i receptor d’infrarrojos són els que aporten un element innovador a aquest giny, mentre que la càmera RGB no és més (ni menys) que una càmera de vídeo normal i corrent.Pel que fa als infrarojos, tot i que el resultat final per a l’usuari-programador és equivalent, hi ha una diferència important entre la tecnologia emprada per ambdues versions. Així, Kinect 1 emet una matriu de punts infrarojos amb l’emissor i en llegeix la distorsió i mida amb el receptor, i això li permet tenir una representació del que hi ha davant la càmera com a mapa de profunditat. La Kinect v2 aconsegueix el mateix resultat però mesurant el temps que triga cada punt a rebotar, el que permet una major precisió.

En resum, el que ens importa des del punt de vista de creadors, és quina informació ens dóna Kinect (quan la connectem, en el nostre cas, a Processing), i és la següent:

  • La imatge RGB (imatge de vídeo normal)
  • La imatge de profunditat, on els píxels són d’un gris més o menys intens segons la distància respecte a la càmera.
  • El mapa de profunditat. Una informació relativament equivalent, que ens dóna la distància de cada un dels punts que la càmera pot llegir.

Programoteques Kinect per a Processing

[nota: TermCat suggereix programoteques o biblioteques informàtiques enlloc de llibreríes, per traduir ‘library’]

Per poc que sigueu usuaris de Processing, ja haureu suposat que per connectar-vos a la càmera Kinect us farà falta alguna biblioteca informàtica, o programoteca.

Fins no fa gaire, n’hi havia una de molt utilitzada, anomenada SimpleOpenNI, que a més de ser compatible tant amb PC com amb Mac, permetia no només llegir les dades en brut que Kinect sinó també accedir a funcionalitats extremadament útils com la de ‘llegir’ l’esquelet de l’usuari que hi havia davant la càmera i accedir als punts clau d’aquest.

Lamentablement, SimpleOpenNI fa temps que es va deixar d’actualitzar, i no serveix per a Processing 3. Sembla que Apple va comprar el projecte i l’ha desat al calaix… En tot cas, si us interessa podeu baixar-vos-la i també instal·lar-vos una versió de Processing 2, i amb aquesta combinació hauria de funcionar. Making Things See, de Greg Borenstein, és un llibre molt interessant sobre què pot (o podia) fer Kinect amb SimpleOpenNI, però els exemples que hi han estan també desactualitzats.

Dit això, ens centrarem aquí en les tres biblioteques informàtiques que sí que funcionen actualment per a Processing 3. Dues són per a Windows, i van en combinació amb la SDK de Kinect (i a partir de Windows 7), i l’altra és per a Mac (i, com passa amb Mac i els perifèrics, no cal instal·lar res més).

Windows (opció 1): Kinect v2 for Processing

http://codigogenerativo.com/kinectpv2/
https://github.com/ThomasLengeling/KinectPV2

Si teniu un PC i una Kinect v2, aquesta és la millor opció per treure el màxim profit de la vostra Kinect. Kinect v2 for Processing està desenvolupada per Thomas Sanchez Lengeling, i us donarà accés a tot el que podeu fer amb Kinect, tal com podeu veure si us passegeu pel tutorial que l’autor ha penjat a la seva web.

Per exemple, i a més d’accedir a les dades en brut, aquesta llibreria us permetrà accedir no només a l’esquelet sinó a un sistema de detecció facial. Només cal activar comandaments com “void enableSkeleton(boolean toggle);” o “void enableFaceDetection(boolean toggle);” i a partir d’aquí seguir els passos per obtenir aquesta informació.

Si teniu PC+Kinect v2, el millor és que us instal·leu aquesta programoteca i obriu els exemples de Sanchez Lengeling i comenceu a jugar-hi. El hacking ben entès és això: Jugar amb el codi a partir del que trobes per aconseguir el que vols.

Windows (opció 2): Kinect4Win SDK

http://www.magicandlove.com/blog/research/kinect-for-processing-library/

Qui es pot resistir a una web que es diu Magic & Love? L’artista japonès Bryan Wai-ching Chung és el responsable d’aquesta biblioteca informàtica que se’ns presenta com a alternativa pels usuaris de PC amb una Kinect original.

Com es pot apreciar a la darrera data d’actualització (05/07/2014), fa dies que Chung no actualitza el projecte, però sí que està disponible per a Processing 3 i, tot i que ja a simple vista es veu que no és tant potent com l’anterior, és una alternativa a tenir en compte.

Mac: Open Kinect for Processing 1.0

http://shiffman.net/p5/kinect/

I si teniu un Mac i qualsevol de les dues Kinect, aquesta és la vostra opció. A més, porta el segell insuperable de Dan Shiffman, que va crear la primera versió d’aquesta biblioteca informàtica ben aviat, quan gairebé no hi havia altra opció de connectar la Kinect a un ordinador personal. Però com que fins i tot pels herois de la humanitat passa el temps, va anar quedant desactualitzada fins que, amb l’ajuda de Sanchez Lengeling es va reactivar i rellançar tant per a Kinect com per a Kinect v2.

A la pàgina de Shiffman n’hi podreu trobar informació molt detallada i, com no, vídeos on n’explica el funcionament amb tots els ets i uts.

En aquest cas, l’accés que us dona aquesta biblioteca informàtica és més bàsic que la primera, en el sentit que no hi ha esquelet, ni reconeixement facial, ni altres de les coses molt útils que Microsoft permet a través de la seva SDK, i sobre la qual està construïda Kinect v2 for Processing.

Tot i això, tal com podeu veure a la web de Shiffman i amb els exemples que incorpora la biblioteca un cop la baixeu a Processing (tornem a la idea del hacking), podeu accedir a la imatge RGB, de profunditat, i al mapa de punts infrarojos, de manera que amb l’anàlisi d’aquests mitjançant tècniques d’anàlisi d’imatge podeu arribar molt lluny amb els vostres projectes.

Exemples

Creats amb la darrera de les biblioteques presentades, podeu trobar aquests dos exemples d’ús, on trobareu el codi comentat detalladament.

El primer treballa amb el mapa de profunditat i marca el valor d’aquesta allí on es troba el cursor.

 

El segon és més complex. Primer, ens permet delimitar un mínim i màxim de distància respecte la Kinect que ens marcarà una mena d’espai virtual davant la càmera. Llavors, dins d’aquest espai virtual mirarem si hi ha presència d’alguna cosa o no, i farem dues coses: dibuixar la silueta de la presència, i marcar-ne la caixa contenidora i centre de gravetat, que són dos elements molt senzills però extremadament útils per interacció a temps real.

 

Conclusions

Tot i que el futur de Kinect no és precisament prometedor, es tracta encara d’un giny amb un gran potencial creatiu des del punt de vista de les arts visuals digitals, especialment la instal·lació interactiva.

La capacitat que té Kinect de llegir la posició i silueta d’un usuari davant la càmera i, sobretot, el fet que ho pot fer independentment de la llum ambient i del fons (allò que veu la càmera darrere l’usuari), la van convertir en una revolució en aquest àmbit i fa que encara hi sigui present.

Lamentablement, sembla les lògiques de mercat la faran obsoleta, però encara queden uns anys de resistència. God save the Kinect!

Darrers articles

  • Dossier — Kinect i Processing

    KINECT I PROCESSING La Microsoft Kinect és una càmera de profunditat que va aparèixer el 2010 per a la Xbox de Microsoft. La versió 2 aparegué el 2013, i incorpora un seguit de millores que comentarem més avall. Nota històrica i previsió de futur Quan va aparèixer, Kinect aspirava a causar una revolució al món […]

  • Dossier — IDEs

    IDEs Introducció: Què són? L’acrònim IDE significa ‘Integrated Development Environment’, és a dir: Entorn Integrat de Desenvolupament. Es tracta de programes que ens faciliten l’ús de llenguatges de programació, tot anant més enllà que els editors de codi font revisats en un post anterior [enllaç]. En general, inclouen l’editor de text però hi afegeixen un […]

  • Dossier — Editors de codi

    EDITORS DE CODI Introducció: Què són? Els editors de codi són programes que ens ajuden a gestionar el codi font dels nostres projectes. Són ideals quan hom treballa amb diferents llenguatges de programació, alternant-los o en un sol projecte (per exemple, en un projecte web és molt habitual combinar html, javascript, css, php, etc.). El […]