SlideShare a Scribd company logo
1 of 23
Java Remoting
Java Motion Analysis, ovvero come
utilizzare il controller Nintendo sfruttando
Bluetooth e Java.

La portabilità di Java permette di interfacciare diversi
WiiRemote da qualsiasi piattaforma conforme alle
specifiche JSR-82 (Java Bluetooth) utilizzando gli
accelerometri e il sensore IR integrati.

                                               v[dot]decarolis[at]yahoo.it
                                                   http://www.decabyte.it
Jug Roma – Java Motion Analysis – 17/04/2008                             1
Di cosa parliamo...
Vediamo come è possibile analizzare il
movimento di un corpo libero utilizzando appositi
sensori come accelerometri e sensori IR...

In questo contesto sfruttiamo quello che la
tecnologia ci offre di bello e pronto:




Jug Roma – Java Motion Analysis – 17/04/2008    2
Wii Remote
Un Nintendo Wii Remote è dotato di:

● 1 accelerometro (ADLX330 – ± 3g)
● 1 sensore IR (~ 1024 x 768)

● 1 modulo bluetooth (BCM2042 – Broadcom)




Oltre a un rumble, speaker, led, pulsanti e
design simmetrico...

    Sicuri di volersi limitare a Mario Kart?!

Jug Roma – Java Motion Analysis – 17/04/2008    3
Wii Remote
Perchè risulta interessante!?

La connettività Bluetooth e le specifiche
HID (Human Interface Device) lo rendono
indipendente dalla piattaforma...

Si comporta come se fosse un semplice
mouse anche se per conoscerlo a fondo c'è
voluto un bel po' di reverse engineering...

Quiz: chi ha proposto le specifiche HID?

Jug Roma – Java Motion Analysis – 17/04/2008   4
Movimenti
Un corpo libero nello spazio può compiere 6
differenti tipi di movimenti, 3 traslazioni lungo gli
assi coordinati x, y, z e 3 rotazioni notevoli
pitch, roll e yaw.

Le rotazioni vengono calcolate rispetto
agli assi coordinati mantenendo quindi
una componente costante e le altre due
variabili.

       Facile in teoria...ma in pratica?!
Jug Roma – Java Motion Analysis – 17/04/2008            5
Accelerometer
L'acceletrometro ADXL330 rileva le
forze applicate su una massa nota.

Il vettore risultante è scomposto
lungo i 3 assi (X, Y, Z) disposti come
in figura. Per convenzione questa è
detta posizione normale...
 Piccolo Inconveniente:
 Su questo pianeta c'è la forza di gravità!
 Non otterremo MAI il vettore zero!
Jug Roma – Java Motion Analysis – 17/04/2008   6
Compromessi
Per sua natura l'accelerometro non puo' rilevare
movimenti che non comportano la variazione delle
forze, le rotazioni appartengo a questa categoria!

Grazie alla presenza della forza di gravità (g) le cose
si semplificano: pitch e roll sono calcolabili poiché
modificano la posizione del sensore rispetto a g.

Tuttavia dalla posizione normale non possiamo
calcolare yaw.

              2 su 3 bello sconto ma non basta!
Jug Roma – Java Motion Analysis – 17/04/2008              7
IR Sensor
Grazie al sensore IR possiamo ottenere informazioni
aggiuntive rispetto a quelle fornite dagli accelerometri
(certificati con un margine d'errore del 10%).

Questo sensore ci fornisce le coordinate (x,y) delle
sorgenti IR (beacon) presenti nel quadro della
telecamera. Il tracking viene effettuato lato hardware.

Considerando la risoluzione (1024x768) e gli angoli di
visuale (~41° oriz, ~31° vert) otteniamo una precisione
di circa 0,04° per incremento.

Jug Roma – Java Motion Analysis – 17/04/2008              8
IR Sensor
Per poter calcolare yaw è necessario disporre di due
sorgenti IR fisse.

Tramite la triangolazione è possibile risalire alla
distanza del controller rispetto alle sorgenti e
conoscendo la distranza reale tra di esse è possibile
risalire alla rotazione.

Generalmente le sorgenti IR vengono fornite da
un'apposita sensor bar, realizzata con gruppi di led
IR alle estremità della barra.

Jug Roma – Java Motion Analysis – 17/04/2008           9
Sensor Bar
La sensor bar utilizzata è una artigianale risultando
più che sufficiente al nostro scopo.

Per comodità sfruttiamo l'alimentazione fornita da una
comune porta USB (+5V), collegando in parallelo
due gruppi di 3 led IR (ovviamente in serie tra loro)...

Un led IR (5mm) alimentato a 1.6 – 1.8 V assorbe
circa 20mA. L'assorbimento totale è di 40mA.

  Una parte esigua rispetto allo standard USB 2.0

Jug Roma – Java Motion Analysis – 17/04/2008          10
Comunicazione
La comunicazione tra host e controller segue le
specifiche HID, ovvero il dispositivo stesso informa
l'host specificando protocollo ed interpretazione.

Le specifiche HID si sono evolute con lo standard
USB, giusto per tracciare una linea temporale si parla
di diffusione già nel 1998.

Queste specifiche sono state successivamente
applicate alle comunicazioni radio nella versione
Bluetooth HID.

Jug Roma – Java Motion Analysis – 17/04/2008           11
Comunicazione
Lo scambio di informazioni è basato su report ed è di
tipo unidirezionale. Il controller puo' raggiungere la
frequenza massima di 100 report al secondo.

La comunicazione è riconducibile ad una asincrona
basata su eventi.

Questo facilita in gran parte la realizzazione delle
librerie che gestiscono i dati da e verso il controller.

In Java il tutto si sposa magnificamente con listeners
e thread bloccanti.
Jug Roma – Java Motion Analysis – 17/04/2008               12
Bluetooth
Volendo sporcarsi le mani con Bluetooth, in
ambiente linux possiamo digitare:
● hidd --connect <baddr>

● hcitool info <baddr>

● sdptool browse

● sdptool records --tree <baddr>




Grazie al protocollo SDP otteniamo informazioni
riguardanti l'implementazione HID.

<baddr> = 00:19:1D:62:36:84 (qualcosa del genere)

Jug Roma – Java Motion Analysis – 17/04/2008        13
Libreria Wiiuse
Per comunicare con il wiimote senza dover
reimplementare tutto da zero possiamo sfruttare la
libreria wiiuse scritta in C ma cross-platform.

Questa libreria sfrutta lo stack Bluesoleil per
l'implementazione Windows (.dll) e lo stack BlueZ
sotto Linux (.so).

Nel nostro caso sfruttiamo Ubuntu 7.10 (Gutsy) che
già dispone dello stack BlueZ.

                        http://www.wiiuse.net/
Jug Roma – Java Motion Analysis – 17/04/2008         14
Libreria Wiiusej
Ci affidiamo ad wiiuse perchè è disponibile un ottimo
wrapper java chiamato wiiusej.

Passando per wiiuse e wiiusej otteniamo la maggior
parte delle features offerte dalle varie librerie in
circolazione (WiiremoteJ, Mote4J, Wiiuse Simple).

Entrambe sono open source e grazie a questa
caratteristica è possibile conoscere tutte le operazioni
che vengono effettuate a livello computazionale...

               http://code.google.com/p/wiiusej/
Jug Roma – Java Motion Analysis – 17/04/2008          15
Libreria Wiiusej
In questa demo utilizziamo la versione 0.11 di
entrambe le librerie che usano la stessa convenzione
per il numero di release.

Verrà rilasciata a breve la nuova versione 0.12 di
wiiusej che andrà a risolvere alcuni piccoli bug.

wiiusej è composta da un wrapper JNI (quindi
nativo) attorno alla libreria wiiuse e da un comodo
file jar che ci offre tutti i dati provienenti dal controller
impacchettati nei dovuti pojo.

Jug Roma – Java Motion Analysis – 17/04/2008                16
Environment
Dovendo wrappare una libreria nativa wiiusej effettua
una chiamata del tipo:
            System.loadLibrary(“libwiiuse”);

In ambiente linux questo si concretizza nell'andare a
cercare nel ld_environment_path i due moduli .so.

Occorrerà quindi impostare il path del caricatore oppure
sistemare direttamente i due file nella dovuta cartella di
sistema.

In quest'ultimo caso possiamo omettere di settare la
variabile java.library.path.
Jug Roma – Java Motion Analysis – 17/04/2008                 17
Environment
In ambiente Windows sarà sufficiente impostare
correttamente la variabile java.library.path e il
magico mondo delle DLL farà il resto.

Indipendentemente dai casi ci verrà fornita una
cospicua quantità di output su console, come ad
esempio questo:

<paste code here>



Jug Roma – Java Motion Analysis – 17/04/2008        18
Code
Per iniziare non ci resta che aggiungere al nostro
progetto il file wiiusej.jar.

Diamo un piccolo sguardo al codice:

Wiimote[] wiimotes =
WiiUseApiManager.getWiimotes(1, true);

1 = numero di devices da connettere
true = un flag di controllo che fa vibrare i motes

(nel caso peggiore otterremo un array vuoto...)
Jug Roma – Java Motion Analysis – 17/04/2008         19
Wii Demo




Jug Roma – Java Motion Analysis – 17/04/2008   20
Wii Demo
Netbeans 6.1 Beta
(il rilascio final è previsto per il 24/04)

Ubuntu Linux 7.10
(il rilascio di Hardy 8.04 è previsto per il 24/04)

JDK 1.6.0 – Update 10
(sfruttiamo Nimbus, il nuovo LookAndFeel...)


              Dubbi, Domande, Perplessità!?

Jug Roma – Java Motion Analysis – 17/04/2008          21
Siti Riferimento
http://www.wiili.org/
http://www.cs.cmu.edu/~johnny/projects/wii/
http://hackawii.com/

http://code.google.com/p/wiiusej/

e naturalmente:
http://www.decabyte.it


Jug Roma – Java Motion Analysis – 17/04/2008   22
Licenza
    Attribution – Noncommercial – Share
              Alike 3.0 Unported
You are free:
  * to Share — to copy, distribute and transmit the work
  * to Remix — to adapt the work
   http://creativecommons.org/licenses/by-nc-sa/3.0/




Jug Roma – Java Motion Analysis – 17/04/2008               23

More Related Content

Similar to Jug Roma - Wii Remote

Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.anwarNazik
 
Introduzione ad Arduino
Introduzione ad ArduinoIntroduzione ad Arduino
Introduzione ad ArduinoSimone Lusenti
 
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.anwarNazik
 
Monitoraggio ambientale a basso costo - 2
Monitoraggio ambientale a basso costo - 2Monitoraggio ambientale a basso costo - 2
Monitoraggio ambientale a basso costo - 2Francesco Taurino
 
Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...
Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...
Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...Roberto Navoni
 
Introduzione al Cloud - Progetto ICARO
Introduzione al Cloud - Progetto ICAROIntroduzione al Cloud - Progetto ICARO
Introduzione al Cloud - Progetto ICAROPaolo Nesi
 
Emoncms gabriponzo+andreabelloni
Emoncms gabriponzo+andreabelloniEmoncms gabriponzo+andreabelloni
Emoncms gabriponzo+andreabelloniGabriele Ponzo
 
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013Alberto Sarullo
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...RiccardoScilla
 
J2Me Il Micro Mondo Java
J2Me Il Micro Mondo JavaJ2Me Il Micro Mondo Java
J2Me Il Micro Mondo JavaAntonio Terreno
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Gabriele Guizzardi
 
Il tuo router è sicuro?
Il tuo router è sicuro?Il tuo router è sicuro?
Il tuo router è sicuro?NaLUG
 
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...mfurlanetto
 
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry piMakers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry piRoberto Navoni
 

Similar to Jug Roma - Wii Remote (20)

Internet delle cose
Internet delle coseInternet delle cose
Internet delle cose
 
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
 
Introduzione ad Arduino
Introduzione ad ArduinoIntroduzione ad Arduino
Introduzione ad Arduino
 
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
 
Monitoraggio ambientale a basso costo - 2
Monitoraggio ambientale a basso costo - 2Monitoraggio ambientale a basso costo - 2
Monitoraggio ambientale a basso costo - 2
 
Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...
Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...
Makers Italy: Virtual robotix e le piattaforme di prototipazione rapida vr br...
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
Introduzione al Cloud - Progetto ICARO
Introduzione al Cloud - Progetto ICAROIntroduzione al Cloud - Progetto ICARO
Introduzione al Cloud - Progetto ICARO
 
Emoncms gabriponzo+andreabelloni
Emoncms gabriponzo+andreabelloniEmoncms gabriponzo+andreabelloni
Emoncms gabriponzo+andreabelloni
 
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
 
J2Me Il Micro Mondo Java
J2Me Il Micro Mondo JavaJ2Me Il Micro Mondo Java
J2Me Il Micro Mondo Java
 
Beacons
BeaconsBeacons
Beacons
 
Android
AndroidAndroid
Android
 
Sicurezza delle reti 802.11
Sicurezza delle reti 802.11Sicurezza delle reti 802.11
Sicurezza delle reti 802.11
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
 
Il tuo router è sicuro?!
Il tuo router è sicuro?!Il tuo router è sicuro?!
Il tuo router è sicuro?!
 
Il tuo router è sicuro?
Il tuo router è sicuro?Il tuo router è sicuro?
Il tuo router è sicuro?
 
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
 
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry piMakers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
Makers Italy: VR Neuron la risposta italiana alla piattaforma Raspberry pi
 

Jug Roma - Wii Remote

  • 1. Java Remoting Java Motion Analysis, ovvero come utilizzare il controller Nintendo sfruttando Bluetooth e Java. La portabilità di Java permette di interfacciare diversi WiiRemote da qualsiasi piattaforma conforme alle specifiche JSR-82 (Java Bluetooth) utilizzando gli accelerometri e il sensore IR integrati. v[dot]decarolis[at]yahoo.it http://www.decabyte.it Jug Roma – Java Motion Analysis – 17/04/2008 1
  • 2. Di cosa parliamo... Vediamo come è possibile analizzare il movimento di un corpo libero utilizzando appositi sensori come accelerometri e sensori IR... In questo contesto sfruttiamo quello che la tecnologia ci offre di bello e pronto: Jug Roma – Java Motion Analysis – 17/04/2008 2
  • 3. Wii Remote Un Nintendo Wii Remote è dotato di: ● 1 accelerometro (ADLX330 – ± 3g) ● 1 sensore IR (~ 1024 x 768) ● 1 modulo bluetooth (BCM2042 – Broadcom) Oltre a un rumble, speaker, led, pulsanti e design simmetrico... Sicuri di volersi limitare a Mario Kart?! Jug Roma – Java Motion Analysis – 17/04/2008 3
  • 4. Wii Remote Perchè risulta interessante!? La connettività Bluetooth e le specifiche HID (Human Interface Device) lo rendono indipendente dalla piattaforma... Si comporta come se fosse un semplice mouse anche se per conoscerlo a fondo c'è voluto un bel po' di reverse engineering... Quiz: chi ha proposto le specifiche HID? Jug Roma – Java Motion Analysis – 17/04/2008 4
  • 5. Movimenti Un corpo libero nello spazio può compiere 6 differenti tipi di movimenti, 3 traslazioni lungo gli assi coordinati x, y, z e 3 rotazioni notevoli pitch, roll e yaw. Le rotazioni vengono calcolate rispetto agli assi coordinati mantenendo quindi una componente costante e le altre due variabili. Facile in teoria...ma in pratica?! Jug Roma – Java Motion Analysis – 17/04/2008 5
  • 6. Accelerometer L'acceletrometro ADXL330 rileva le forze applicate su una massa nota. Il vettore risultante è scomposto lungo i 3 assi (X, Y, Z) disposti come in figura. Per convenzione questa è detta posizione normale... Piccolo Inconveniente: Su questo pianeta c'è la forza di gravità! Non otterremo MAI il vettore zero! Jug Roma – Java Motion Analysis – 17/04/2008 6
  • 7. Compromessi Per sua natura l'accelerometro non puo' rilevare movimenti che non comportano la variazione delle forze, le rotazioni appartengo a questa categoria! Grazie alla presenza della forza di gravità (g) le cose si semplificano: pitch e roll sono calcolabili poiché modificano la posizione del sensore rispetto a g. Tuttavia dalla posizione normale non possiamo calcolare yaw. 2 su 3 bello sconto ma non basta! Jug Roma – Java Motion Analysis – 17/04/2008 7
  • 8. IR Sensor Grazie al sensore IR possiamo ottenere informazioni aggiuntive rispetto a quelle fornite dagli accelerometri (certificati con un margine d'errore del 10%). Questo sensore ci fornisce le coordinate (x,y) delle sorgenti IR (beacon) presenti nel quadro della telecamera. Il tracking viene effettuato lato hardware. Considerando la risoluzione (1024x768) e gli angoli di visuale (~41° oriz, ~31° vert) otteniamo una precisione di circa 0,04° per incremento. Jug Roma – Java Motion Analysis – 17/04/2008 8
  • 9. IR Sensor Per poter calcolare yaw è necessario disporre di due sorgenti IR fisse. Tramite la triangolazione è possibile risalire alla distanza del controller rispetto alle sorgenti e conoscendo la distranza reale tra di esse è possibile risalire alla rotazione. Generalmente le sorgenti IR vengono fornite da un'apposita sensor bar, realizzata con gruppi di led IR alle estremità della barra. Jug Roma – Java Motion Analysis – 17/04/2008 9
  • 10. Sensor Bar La sensor bar utilizzata è una artigianale risultando più che sufficiente al nostro scopo. Per comodità sfruttiamo l'alimentazione fornita da una comune porta USB (+5V), collegando in parallelo due gruppi di 3 led IR (ovviamente in serie tra loro)... Un led IR (5mm) alimentato a 1.6 – 1.8 V assorbe circa 20mA. L'assorbimento totale è di 40mA. Una parte esigua rispetto allo standard USB 2.0 Jug Roma – Java Motion Analysis – 17/04/2008 10
  • 11. Comunicazione La comunicazione tra host e controller segue le specifiche HID, ovvero il dispositivo stesso informa l'host specificando protocollo ed interpretazione. Le specifiche HID si sono evolute con lo standard USB, giusto per tracciare una linea temporale si parla di diffusione già nel 1998. Queste specifiche sono state successivamente applicate alle comunicazioni radio nella versione Bluetooth HID. Jug Roma – Java Motion Analysis – 17/04/2008 11
  • 12. Comunicazione Lo scambio di informazioni è basato su report ed è di tipo unidirezionale. Il controller puo' raggiungere la frequenza massima di 100 report al secondo. La comunicazione è riconducibile ad una asincrona basata su eventi. Questo facilita in gran parte la realizzazione delle librerie che gestiscono i dati da e verso il controller. In Java il tutto si sposa magnificamente con listeners e thread bloccanti. Jug Roma – Java Motion Analysis – 17/04/2008 12
  • 13. Bluetooth Volendo sporcarsi le mani con Bluetooth, in ambiente linux possiamo digitare: ● hidd --connect <baddr> ● hcitool info <baddr> ● sdptool browse ● sdptool records --tree <baddr> Grazie al protocollo SDP otteniamo informazioni riguardanti l'implementazione HID. <baddr> = 00:19:1D:62:36:84 (qualcosa del genere) Jug Roma – Java Motion Analysis – 17/04/2008 13
  • 14. Libreria Wiiuse Per comunicare con il wiimote senza dover reimplementare tutto da zero possiamo sfruttare la libreria wiiuse scritta in C ma cross-platform. Questa libreria sfrutta lo stack Bluesoleil per l'implementazione Windows (.dll) e lo stack BlueZ sotto Linux (.so). Nel nostro caso sfruttiamo Ubuntu 7.10 (Gutsy) che già dispone dello stack BlueZ. http://www.wiiuse.net/ Jug Roma – Java Motion Analysis – 17/04/2008 14
  • 15. Libreria Wiiusej Ci affidiamo ad wiiuse perchè è disponibile un ottimo wrapper java chiamato wiiusej. Passando per wiiuse e wiiusej otteniamo la maggior parte delle features offerte dalle varie librerie in circolazione (WiiremoteJ, Mote4J, Wiiuse Simple). Entrambe sono open source e grazie a questa caratteristica è possibile conoscere tutte le operazioni che vengono effettuate a livello computazionale... http://code.google.com/p/wiiusej/ Jug Roma – Java Motion Analysis – 17/04/2008 15
  • 16. Libreria Wiiusej In questa demo utilizziamo la versione 0.11 di entrambe le librerie che usano la stessa convenzione per il numero di release. Verrà rilasciata a breve la nuova versione 0.12 di wiiusej che andrà a risolvere alcuni piccoli bug. wiiusej è composta da un wrapper JNI (quindi nativo) attorno alla libreria wiiuse e da un comodo file jar che ci offre tutti i dati provienenti dal controller impacchettati nei dovuti pojo. Jug Roma – Java Motion Analysis – 17/04/2008 16
  • 17. Environment Dovendo wrappare una libreria nativa wiiusej effettua una chiamata del tipo: System.loadLibrary(“libwiiuse”); In ambiente linux questo si concretizza nell'andare a cercare nel ld_environment_path i due moduli .so. Occorrerà quindi impostare il path del caricatore oppure sistemare direttamente i due file nella dovuta cartella di sistema. In quest'ultimo caso possiamo omettere di settare la variabile java.library.path. Jug Roma – Java Motion Analysis – 17/04/2008 17
  • 18. Environment In ambiente Windows sarà sufficiente impostare correttamente la variabile java.library.path e il magico mondo delle DLL farà il resto. Indipendentemente dai casi ci verrà fornita una cospicua quantità di output su console, come ad esempio questo: <paste code here> Jug Roma – Java Motion Analysis – 17/04/2008 18
  • 19. Code Per iniziare non ci resta che aggiungere al nostro progetto il file wiiusej.jar. Diamo un piccolo sguardo al codice: Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true); 1 = numero di devices da connettere true = un flag di controllo che fa vibrare i motes (nel caso peggiore otterremo un array vuoto...) Jug Roma – Java Motion Analysis – 17/04/2008 19
  • 20. Wii Demo Jug Roma – Java Motion Analysis – 17/04/2008 20
  • 21. Wii Demo Netbeans 6.1 Beta (il rilascio final è previsto per il 24/04) Ubuntu Linux 7.10 (il rilascio di Hardy 8.04 è previsto per il 24/04) JDK 1.6.0 – Update 10 (sfruttiamo Nimbus, il nuovo LookAndFeel...) Dubbi, Domande, Perplessità!? Jug Roma – Java Motion Analysis – 17/04/2008 21
  • 23. Licenza Attribution – Noncommercial – Share Alike 3.0 Unported You are free: * to Share — to copy, distribute and transmit the work * to Remix — to adapt the work http://creativecommons.org/licenses/by-nc-sa/3.0/ Jug Roma – Java Motion Analysis – 17/04/2008 23