Utilizzo Mindset, Kinect, Wiimote in Panda3D Davide Gadia Corso di Ambienti Virtuali Immersivi e Interattivi Laurea Magistrale in Informatica per la Comunicazione a.a. 2012/2013
NeuroSky Mindset Dispositivo di BCI per gaming Economico Wireless bluetooth 1 solo sensore Sensore dry (no gel) Uso gel aiuta a migliorare il segnale Rileva attività nelle bande alpha, beta, gamma, delta, theta Ricava da questi livello di attenzione e meditazione Tramite algoritmo proprietario Rileva anche intensità di eye blinking
Utilizzare i dati in un'applicazione NeuroSky fornisce gratis Development Tools ThinkGear Stream Parser Basso livello Sistemi embedded ThinkGear Communications Driver Librerie C++/Java/C# Windows/OSX Gestione semplificata connessione e interpretazione pacchetti
Utilizzare i dati in un'applicazione ThinkGear Connector Processo che acquisisce i pacchetti bluetooth Codifica i dati in pacchetti JSON Trasmette i pacchetti su una socket TCP Applicazione deve implementare un client TCP per acquisizione e decodifica di pacchetti JSON Possibilità di utilizzare qualunque linguaggio che permetta di utilizzare socket e JSON Molto adatto per linguaggi e ambienti scripting Python, ActionScript,... Problema: Connector instabile (almeno su macchine del lab) Problema di disconnessione/riconnessione
Utilizzo Mindset in Panda3D OpenViBe http://openvibe.inria.fr/ Software Open Source per la progettazione e implementazione di applicazioni per BCI e NeuroScienze Approccio visuale a nodi per la gestione di moduli per la connessione, elaborazione e trasmissione di dati Supporto per numerosi dispositivi Anche MindSet OpenViBe integra un server VRPN Esporta i pacchetti come interfaccia Analog Posso selezionare quali segnali esportare Attenzione\Meditazione 8 valori per le bande Blink strength
Utilizzo Mindset in Panda3D Problema: Panda3D si connette al server VRPN Ma il nodo AnalogNode non legge i dati correttamente Soluzione: Implemento una DLL in C++ che implementi un semplice client VRPN Basato su quello della documentazione VRPN E accedo tramite Ctypes alle variabili contenti i valori Limite di OpenViBe: Server Vrpn con interfaccia Analog esporta max 7 canali Bisogna scegliere i canali che servono Dipende dall'applicazione/analisi che devo fare
Utilizzo Mindset in Panda3D Alternativa: Wrapper Python del ThinkGear Communication Driver Anche tramite DLL di appoggio Obbligo di avere il dispositivo collegato alla stessa macchina del rendering A meno di implementare un sender OSC.
Utilizzo Kinect in Panda3D FAAST Flexible Action And Articulated Skeleton Toolkit http://projects.ict.usc.edu/mxr/faast/ Middleware per integrazione di controllo full-body in applicazioni VR e giochi Integra server VRPN Scheletro esportato come Tracker a 24 sensori Possibilità di mappare gesture a input di tastiera Esportati come Button di VRPN
Utilizzo Kinect in Panda3D Tracker VRPN funziona perfettamente Problema: Interfaccia Button in Panda3D non funziona Soluzione: DLL di appoggio per implementare un client per l'interfaccia Button Stesse caratteristiche DLL per Data Glove
Utilizzo Wiimote in Panda3D Wiimote è supportato parzialmente in VRPN Trasmette informazioni su: Bottoni premuti Valori normalizzati di accelerazione (tra 0.0 e 1.0) Coordinate LED IR rilevati dal sensore Problematiche: Button non letti da Panda3D Non vengono calcolati valori di orientamento Pitch e roll da dati accelerometro, heading tramite analisi dati rilevato da sensore IR Non viene calcolato posizione puntamento
Utilizzo Wiimote in Panda3D Soluzione: Implementazione DLL che calcola in locale i dati mancanti E gestisce l'input dei bottoni Basata su DLL per Data Glove Alternative: Utilizzo framework/ambienti esterni che supportano Wiimote ed esportano dati in formato OSC