Friday, February 13, 2009

fWIIne 0.3 - solution pour exemple spectrogramme et estimation de la distance entre la sensor bar et la wii remote

[version française]
fWIIne v0.3 - une solution au problème rencontré sur l'exemple de spectrogramme et une estimation de la distance entre la sensor bar et la wii remote

Des utilisateurs de fwiine ont déjà relevé des différences de comportement entre la nouvelle (0.3) et les anciennes versions. Malheureusement cela compromet l'utilisation du fichier d'exemple permettant de faire un spectrogramme à partir des acquisitions de l'accéléromètre "fwiine_accel_fft_wiimote.m".
En attendant la prochaine version, ce post vous permettra de contourner le problème. Puis, je reviendrai sur une application nécéssitant le capteur InfraRouge de la wiimote : estimation de la distance entre la wiimote et la sensor bar. Et pour finir vous trouverez une présentation de solutions destinées à résoudre les problèmes à l'installation de fWIIne avec Matlab pour Windows XP.


1. fwiine_accel_fft_wiimote.m - dernière mise à jour ici

La bibliothèque fWIIne a hérité de quelques propriétés inattendues de la bibliothèque wiiuse (et aussi du tutorial).Par exemple, un appui sur le bouton B active et désactive la fonction vibreur. Malheureusement, quelques problèmes sont aussi apparus : les premières valeurs provenant de l'accéléromètre ne sont pas disponibles et la bibliothèque renvoie la valeur "Inf".
Par conséquent le fichier .m ne fonctionne plus. Alors vous disposez ici de la toute dernière version corrigée de ce fichier : "fwiine_accel_fft_wiimote.m".
[Spectrogramme venant d'une expérience avec un caisson de basse fournissant des impulsions de 10Hz - aZ(pulse)=10Hz Ok]
stimuli "10Hz pulse" : fichier .wav


2. Distance entre wiimote et sensor bar (sensor bar sans fil)

Une estimation de la distance wiimote-sensor bar prend en considération la distance entre deux points IR : IR1(x1,y1) and IR2(x2,y2). La relation entre distance d (d=IR1 IR2) et la position z (z = distance entre la wiimote et la sensor bar) peut être comprise comme : d = zf*k/z
[schéma de l'expérience avec une wiimote et une " wireless sensor bar"]

Le résultat suivant a été observé avec plusieurs mesures :
[d=f(z) / 2 types d'enregistrements possibles selon l'acquisition du capteur IR]

Les mesures ci-dessus mettent en relief l'impact de la résolution du capteur IR sur le résultat.
Pour z en dessous de 60cm, la sensor bar peut potentiellement distinguer les LED sur le coté (gauche ou droit) de la sensor bar. Selon les LED sélectionnées et l'orientation de la wii remote, 2 différentes mesures sont éventuellement observables. Par conséquent, un problème de robustesse apparait ici. Pour finir sur le sujet, il est possible de revenir à une valeur de la position z en considérant les valeurs potentielles de d.
Source forum wiimoteproject : distance from sensor bar


3. Dépannage de fWIIne.mexw32 avec MATLAB pour Windows XP
[remerciements à Tzahi Menashe pour sa contribution durant les tests d'installation !]

La survenue d'un problème à l'installation de la bib. MEX peut provenir de multiples raisons :

- Votre version actuelle de Matlab : Il vous est nécessaire de recompiler le programme avec les bibliothèques du logiciel Matlab que vous avez l'intention d'utiliser. (Compatibilité Matlab : > à r2007a 7.1 - fWIIne notice )
- Bib. VS runtime (problème déjà exposé en commentaire, ici. manuel fWIIne)
- Compatibilité du Compilateur : Sous une fenêtre de commande Matlab, les commandes suivantes peuvent aider :
> mex -setup
> mbuild -setup
> rtwintgt -install

Selon les informations retournées, il vous faut ensuite sélectionner le compilateur utilisé pour le programme. fWIIne est généré à partir de Visual Studio Exp. edition donc une sélection du compilateur [visual studio c++] sera compatible. Il sera,certainement, utile d'installer Visual C++ sur votre ordinateur.

fWIIne v0.3 - workaround for spectrogram example

[english version]
fWIIne v0.3 - a workaround for the spectrogram example and an estimation of distance from sensor bar

As some fwiine users have already reported, the new version 0.3 has a different behavior from the previous one. Unfortunately, some problems occurred with the file "fwiine_accel_fft_wiimote.m" (example for spectrogram from Wiimote's accelerometer values).
Before delivering a new release, this post will provide you a workaround. Then you will find an application of Wiimote InfraRed sensor : estimation of distance from sensor bar.
And finally, you will find some solutions to solve failures at fWIIne installation with MATLAB and Windows XP.

1. fwiine_accel_fft_wiimote.m - latest update here

The library fWIIne inherited some "unexpected" features from the library wiiuse (and from tutorial example, too). As for example, rumble is enabled/disabled by pressing button B. Unfortunately, some problems also occurred : first accelerometer values are unavailable and take the value "Inf".
So the m. file failed. Then you will find the latest and corrected version for "fwiine_accel_fft_wiimote.m" , here.
[Spectrogram from an experiment with a subwoofer delivering a 10Hz pulse - aZ(pulse)=10Hz Ok]
stimuli "10Hz pulse" : .wav file


2. Distance from sensor bar (wireless sensor bar)

An estimation of distance from sensor bar takes in consideration the distance between 2 IR dots : IR1(x1,y1) and IR2(x2,y2). The relation between distance d (d=IR1 IR2) and position z (z = distance between wiimote and sensor bar) can be understood as : d = zf*k/z
[description of the experiment with a wiimote and a wireless sensor bar]

The following result was observed with several measurements :
[d=f(z) / 2 kinds of recordings according to acquisition from IR sensor]

The measures underline the impact of resolution of the IR sensor. For z under 60cm, the sensor bar is able to distinguish LEDs on the left (or right) side of the sensor bar. According to selected LED and wii controller orientation, 2 different measures of d can be recorded for one position z, eventually. So we face to a lack of robustness of this kind of measure, here. To conclude about this subject, a reversed-engineered solution for z is available, considering potential values of d. Source : (Wiimoteproject's forum) distance from sensor bar



3. Troubleshooting with fWIIne.mexw32 and MATLAB for Windows XP
[Special thanks to Tzahi Menashe for supporting the installation tests !]

On a failure occurrence with installation of MEX library, the problem can be caused by several reasons :

- Your current Matlab release : You need to recompile the program with the Matlab libraries of the Matlab you intend to use. (Matlab compatibility : up to r2007a 7.1 - fWIIne release note )
- VS runtime libraries (already explained, here. fWIIne Manual)
- Compiler compatibility : In a Matlab command window, the following commands might help:
> mex -setup
> mbuild -setup
> rtwintgt -install

you'll then need to choose the compiler that was used to build the program. fWIIne is built with Visual Studio Exp. edition so a selection of the compiler visual studio c++ will be compatible. Of course, you will have to install Visual C++ on your computer.

Friday, February 6, 2009

fWIIne v0.3 released (version francaise)

[version française]

Qu'est ce fWIIne v0.3 ?

fWIIne v0.3 est la troisième version d'une bibliothèque Open Source permettant l'acquisition des données des capteurs de la Wiimote sous Matlab/Simulink(pour WinXP) ou Scilab(Linux). Elle a été pensée pour le développement, l'expérimentation ainsi qu'à des fins éducatives ou de "loisirs éclairés".
fWIIne vous permet de faire l'acquisition, le traitement et la visualisation des données de la wii remote avec Matlab et Scilab.


Comment télécharger fWIIne v0.2 ?

Les fichiers sources et binaires sont disponibles dossier @: sourceforge.net/projects/fwiine/ (section "Download")


Fonctionnalités :

- La version 0.3 est compatible avec la 0.2 et la 0.1. (Se référer à la version 0.1 et 0.2 pour les fonctionnalités de base)
- Acquisition de la position (x,y) de 4 points Infrarouge


Corrections :

- La release est maintenant basée sur la bibliothèque wiiuse. Celle-ci autorise une meilleure compatibilité pour l'utilisateur.


Commentaires :

- Le répertoire CVS n'est pas mis à jour. Se référer à la partie "Release" pour télécharger la dernière version à jour.

- fWIIne pour Windows XP et Matlab se base sur Matlab >7.1 (r2007...r2008) et la bibliothèque Wiiuse0.12.
- fWIIne v0.3 pour Linux n'est pas encore disponible. (fWIIne v0.2 pour Linux et Scilab se base sur Scilab 4.1.2 et la bibliothèque Wiiuse0.9.)
- Le manuel et le borderau de livraison de la troisième version viendront bientôt.

---
[fWIIne v0.3 - valeurs de IR1x,IR1y,IR2x,IR2y,IR3x,IR3y,IR4x,IR4y]

Mes remerciements en particulier à
Tzahi Menashe pour sa contribution.

fWIIne v0.3 released (english version)

[english version]

What's fWIIne v0.3 ?

fWIIne v0.3 is the third release of an Open Source MEX-library and S-function . It enables communication between Wiimote and Matlab/Simulink(WinXP) or Scilab(Linux). It has been designed for development, experimentation and for educational or leisure purposes.
fWIIne will help you to perform data acquisition, signal processing and visualization with Matlab, Scilab and a wii controller.


How to download fWIIne v0.3 ?

Binary and source files are available @ : sourceforge.net/projects/fwiine/(section "Download")


Features :

- The release 0.3 is compatible with 0.2 and 0.1, too. (Please refer to release 0.1 and 0.2 for basic features)
- Acquisition of position (x,y) from 4 Infrared dots.


Bug fix :

- Now, the release is based on library wiiuse which allows more compatibility for the user.


Comments :

- CVS folder is not up-to-date. Please refer to "Download" section to download the current release.
- fWIIne for Windows XP and Matlab is based on Matlab >7.1 (r2007...r2008) and library Wiiuse 0.12.
- fWIIne v0.3 is not available yet. (fWIIne v0.2 for Linux and Scilab is based on Scilab 4.1.2 and Wiiuse0.9 library.)
- Guideline and Release Note for fWIIne 0.3 will come soon.

---
[fWIIne v0.3 - values of IR1x,IR1y,IR2x,IR2y,IR3x,IR3y,IR4x,IR4y]

Special thanks
to Tzahi Menashe for his contribution.