wiki:P5Glove

LE P5GLOVE


Photo du P5Glove


Prérequis

Pour l'installation nous allons utiliser le driver p5driver-i386-0.10-src.
Avant d'entamer l'installation du driver, il faut supprimer dans le fichier Makefile le morceau de ligne '-fmove-all-movables', qui se trouve après 'CXXFLAGS='.


Installation du P5Glove

Il faut lancer le Makefile qui se trouve dans le répertoire du driver :

make

Tests de l'installation

Pour tester si le P5Glove marche, il faut tout d'abord lancer le serveur. En effet toutes les applications sont des clients qui ont besoin d'un serveur pour marcher.
Le serveur ici est p5server, mais on ne peut pas le lancer comme ça car il ne reconnaît pas le gant. Nous devons donc user d'astuce en lançant le fichier launch_P5_Server.sh :

sudo launch_P5_Server.sh

Le P5Glove ayant deux modes, un où il remplace la souris et l'autre pour les applications que nous voulons, le fichier launch_P5_Server.sh permet de désactiver le premier mode, qui est lancé par défaut par le serveur, et de lancer le serveur dans le mode voulu.
Une fois le serveur lancé, on peut lancer le client, ici p5client, et vérifier que notre gant est installé correctement et fonctionne.

Une autre application permet de tester le P5Glove, le copterp5. Pour l'utiliser il faut tout d'abord le compiler et pour cela lancer le configure :

./configure

Puis lancer le Makefile :

make

Ensuite, comme pour le test précédent, il faut mettre en route le serveur grâce au fichier testP5.sh, puis lancer le copterp5 :

./copterp5

Le copterp5 est une simulation d'hélicoptère en ARéVi. L'hélicoptère se déplace avec la position de la main, et il lance des missiles lorsque l'on plie les doigts.


Fonctionnement

Le P5Glove marche sur le principe serveur/client. Le serveur est le P5Glove lui-même et la simulation est le client. Mais c'est à la simulation d'aller lire dans le périphérique les valeurs de ses axes et de ses boutons.
Afin de lire les bonnes mise à jour il faut que le périphérique se mette lui-même à jour :

sem_P (semaphoreid);
memcpy (&(shm_data->p[0]),(unsigned char*)(shm_data->p)+ 0*cli_p5_struct_size, sizeof(P5Data));
sem_V (semaphoreid);


shm_data est du type P5SharedMem*, qui représente le périphérique grâce à un paramètre p de type P5Data, qui contient toute les valeurs des axes et boutons du P5Glove.
Il faut donc ensuite aller lire dans shm_data pour obtenir la valeur d'un axe par exemple :

cout << "Axis x = " << (shm_data->p[0]).m_absolute_pos.data.x << endl;


Pour un bouton :

cout << "Button A = " << (shm_data->p[0]).m_buttons[0] << endl;

Retour au Wiki

Attachments