mardi 23 juillet 2013

Utilisation de la souris comme capteur

Aujourd'hui j'ai fait quelques tests afin d'étudier la possibilité d'utiliser une souris (optique) comme encodeur pour connaitre la position de la barre.
Je pensais qu'il n'y avait pas trop de difficulté...

De nombreux tutoriels expliquent comment utiliser la souris avec arduino directement en se branchant sur le circuit intégré. Je cherchais plutôt une solution purement logicielle, ne demandant pas de modifications sacrificielles d'animaux.

Dans la plupart des langages de programmation, des fonctions existent pour récupérer la position du curseur. Cette position est malheureusement saturée sur les bords de l'écran, ce qui limite l'amplitude du mouvement qui peut-être mesuré à quelques centimètres. Pourtant dans les jeux vidéo (First Person Shooter notamment) le joueur peut souvent faire des mouvements plus larges. L'astuce semble venir de la modification de la position de la souris qui est régulièrement ramenée au milieu de l'écran. Les écarts peuvent alors être mesurés et intégrés.

J'ai trouvé une bibliothèque pymouse permettant de gérer la position du curseur avec python http://doc.ubuntu-fr.org/pymouse

La seconde difficulté venait du fait que la souris n'est alors plus utilisable. Même en ajoutant une souris usb, le même curseur est attaché aux deux souris par défaut. Pour remédier à ce problème j'ai utilisé la capacité de linux à gérer plusieurs souris et plusieurs curseurs "multi-pointer x" http://doc.ubuntu-fr.org/mpx.

J'ai ainsi pu attacher le curseur principal (dont la position est retournée par les langages de programmation) à une souris externe et le curseur secondaire au trackpad de mon ordi.

Cela m'a permis de tester l'utilisation de la souris comme un capteur.
J'ai fait un petit programme python pour cela. Un problème restant est d'abord que le curseur principal reste affiché. J'ai essayé de le faire disparaitre avec l'utilitaire unclutter, mais il réapparait dès que la souris bouge.

J'ai fait quelques tests satisfaisants en déplaçant la souris sur une grande surface plane en essayant de ne pas modifier l'orientation.

J'ai ensuite fait des tests en mettant la souris sur la support de mèche de la visseuse électrique. La mesure semble correcte à basse vitesse, mais à partir d'une certaine vitesse, l'image doit devenir floue et le mouvement n'est plus détecté.

A creuser


Aucun commentaire:

Enregistrer un commentaire