background
Domenica, 30 Dicembre 2012 23:11

Utilizzare Kinect con Mac OSX

In questo articolo vi mostrerò come sia possibile utilizzare Microsoft Kinect per xBox 360 su Mac OSX. In questo modo potrete creare applicazioni con cui interagire tramite i movimenti del corpo.

 

Introduzione

L'articolo è rivolto a persone che hanno molta competenza in campo informatico, sia come programmatori che come sistemisti, soprattutto su sitemi unix. Infatti l'installazione dei driver e dei componenti necessari potrebbe risultare un pò ostica, soprattutto se qualcosa non dovesse andare al primo colpo.

Vi avverto... ci saranno un pò di comandi da lanciare a linea di comando, non mi prendo nessuna responsabilità se con questi comandi (o collegando il kinect) doveste danneggiare il vostro Mac. Comunque se avete dimestichezza con la shell e delle nozioni base sul mondo unix non dovreste avere problemi.

La versione di Kinect in mio possesso è quella venduta separatamente dall'xBox, cioè quella che ha l'alimentatore e l'adattatore usb inclusi nella confezione . Se avete la versione venduta insieme alle ultime xBox (e non possedete l'adattatore con l'alimentatore), molto probabilmente dovrete procurarvi questo accessorio dal sito di Amazon.

Il Kinect l'ho collegato ad un iMac con OSX 10.7.4 a 64 bit. Tuttavia se leggerete tutto l'articolo sarete in grado di adattare l'installazione anche su sistemi diversi senza troppa fatica.

Bene, ora che ho descritto gli strumenti utilizzati per le prove, possiamo passare ad installare e configurare il software ed i driver necessari.

 

Driver ed SDK

Prima di procedere dovete sapere che in circolazione esistono diverse API ed SDK per interfacciare Kinect con i nostri PC o Mac. I due SDK principali però sono OpenNI ed OpenKinect. Il primo è mantenuto dalla società PrimeSence che ha sviluppato la tecnologia alla base del Kinect, OpenKinect invece è un insieme di persone che ha formato una community, chiamata appunto OpenKinect, che ha rilasciato la libreria libfreenect.
Esiste anche l'SDK ufficiale rilasciato da Microsoft, purtroppo però funziona solo su sistemi operativi Windows. Quest'ultimo lo analizzerò in dettaglio nei prossimi articoli.

Per questa guida ho utilizzato OpenNI. Questo poiché è l'SDK sviluppato dalla società che ha creato la tecnologia alla base del Kinect ed è fornito anche con molti esempi.
Di OpenNI ho utilizzato un wrapper per Processing (un linguaggio di programmazione basato su Java). Il wrapper si chiama Simple OpenNI.

Simple OpenNI è un progetto molto valido, tuttavia per adattarlo alla versione di Mac OSX in mio possesso ho dovuto fare diverse modifiche rispetto a ciò che è riportato nella documentazione ufficiale. Tutte le modifiche sono riportate di seguito.

 

Cominciamo

Per prima cosa apriamo la pagina con la procedura ufficiale per installare Simple OpenNI su Mac OSX cliccando qui. Come descritto precedentemente ho dovuto modificare leggermente la procedura d'installazione. Ecco come:

  1. Ho scaricato ed installato xcode 4 da qui.
  2. Ho scaricato ed installato la versione 2.1.2 di MacPorts (quella indicata nella guida d'installazione è troppo vecchia) da qui.
  3. Ho scaricato Java JDK 7 (per Mac OS X x64) da qui.
  4. Ho aperto il terminale e lanciato il comando: sudo port install git-core
    se questo comando dovesse restituire l'errore seguente:
    Unable to open port: can’t read "build.cmd": Failed to locate ‘make’ in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' or at its MacPorts configuration time location, did you move it?
    Allora dovrete aprire xcode, andare in Preferences -> Download ed installare i "Command Line Tools", dopodiché potete riprovare a dare il comando sudo port install git-core.
  5. Sempre da terminale ho lanciato il comando seguente: sudo port install libtool
  6. Infine questo: sudo port install libusb-devel +universal
    Se questo comando dovesse restituire l'errore Error: Please do not install this port since it has been replaced by 'libusb' allora dovrete lanciare in ordine i comandi riportati sotto:
    1. sudo rm -f /opt/local/lib/libusb-1.0.0.dylib
    2. sudo port clean libusb
    3. sudo port install libusb +universal
  7. Ho scaricato OpenNI_NITE_Installer-OSX da qui, l'ho estratto ed infine ho eseguito (all'interno della cartella scompattata) il comando sudo ./install.sh
    Questo comando installerà i driver per permettere il corretto funzionamento del Kinect.
  8. Ho scaricato ed installato processing 2.0 per Mac OSX da qui. Questo poiché la versione 1.5.x presenta qualche problema con le ultime versioni di Mac OSX. Più avanti in questo articolo vi mostrerò le piccole modifiche da fare ai sorgenti del software per utilizzare la versione 2.0 di processing.
  9. Ora bisogna scaricare la libreria SimpleOpenNI per processing da qui. Ho scompattato il file 'SimpleOpenNI.zip' ottenendo così una cartella chiamata SimpleOpenNI. La cartella va copiata dentro la directory /Users/'your username'/Documents/Processing/libraries. Se quest'ultima non esiste allora dovrete crearla. Il risultato è visibile nello screenshot qui sotto.

La cartella SimpleOpenNI contiene anche diversi esempi per utilizzare kinect, ovviamente scritti tutti in Processing.

 

Il Codice

Colleghiamo il Kinect alla presa di corrente e alla presa usb dell'iMac, apriamo Processing e carichiamo il nostro primo file di esempio prendendolo dalla cartella /Users/'your username'/Documents/Processing/libraries/SimpleOpenNI/examples/OpenNI. Apriamo ad esempio il file User3d.pde dentro la cartella User3d.

Se eseguiamo il codice (tenete presente che tra voi ed il kinect ci deve essere una distanza di almeno un metro e mezzo) dovremmo ottenere un'immagine simile a quella sottostante. Nell'immagine si può vedere una sorta di scheletro che segue i movimenti del mio corpo (e devo dire che lo fa in maniera molto fluida):

skeleton

Il file User3d.pde (come tutti quelli presenti nella cartella degli esempi) è ben commentato, leggendo il codice (ed i commenti) potrete capire come personalizzare i sorgenti o creare nuovi programmi.

Prima di provare gli altri file di esempio però bisogna fare qualche modifica ai sorgenti. Dovete sapere che Processing 2.0, a differenza delle precedenti versioni, non importa (di default) alcune librerie fondamentali per i nostri file di esempio.

Se provate, ad esempio, ad eseguire il file Hands3d.pde riceverete l'errore: Cannot find a class or type named "Iterator", come visibile nella figura sottostante:

iterator error

Per risolvere questo problema dobbiamo importare a mano le librerie relative all'oggetto Iterator. Io ho importato le librerie java.io.File (che mi servirà anche per altre cose) e java.util.Iterator. Per maggior chiarezza vi mostro un'immagine delle due righe che ho inserito:

Se riceverete altri errori di questo tipo allora dovrete controllare in internet (o nella documentazione ufficiale di Java) quale libreria importare.

Un altro esempio che ho provato e che vi consiglio è lo Slider2d. Esso permette di controllare con la propria mano dei quadrati disegnati a video. Potete vedere una mia prova nell'immagine sottostante:

Come ho scritto prima, nella cartella examples di Simple OpenNI, sono presenti molti esempi interessanti. Vi consiglio di provarli tutti.

A volte capita anche che processing restituisca un errore relativo alla disconnessione di kinect. In quel caso basterà scollegare e ricollegare il dispositivo.

Come accennato poco fa i sorgenti sono  ben commentati. Ciò vi permetterà di modificarli a vostro piacimento. Prendendoci la mano sarete in grado anche di creare nuovi programmi da zero.

Con questo è tutto. Divertitevi!!!

Alan Pipitone

I am the owner.

Website: www.alan-pipitone.com
Latest from Alan Pipitone
  • Più letti
Utilizzare Kinect con Mac OSX

In questo articolo vi mostrerò come sia possibile utilizzare Microsoft... Read more

Come interrogare la Farm Citrix in C#

Questo tutorial vi mostrerà come poter creare semplici applicazioni in... Read more

« December 2018 »
Mon Tue Wed Thu Fri Sat Sun
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31