P29 QT pour tablette à retour tactile

De Wiki de Projets IMA
Révision datée du 15 octobre 2017 à 07:33 par Vsenaffe (discussion | contributions) (3ème semaine)

Tuteurs : Laurent Grisoni
Projet de fin d'étude réalisé par Vivian Senaffe et Valentin Beauchamp

Objectif du Projet

Il s'agira d'adapter une libraire de création d'application interactive à une tablette à retour d'information tactile


Description

Le dispositif EVITA, mise au point par l'équipe MINT (collaboration entre les laboratoires CRISTAL et L2EP) est une tablette tactile particulière, dans la mesure ou elle dispose d'actionneurs piézoelectriques permettant à l'application de faire vibrer à trés haute fréquence l'ecran, par exemple en fonction de la position du doigt de l'utilisateur. Ces vibrations permettant à l'utilisateur, via son doigt en contact, de percevoir de l'information, aux cotés de celles accessibles via l'oeil et l'oreille. Sur ce dispositif sont en cours à la fois des recherches pour étendre la gamme des ressentis tactiles accessibles, ainsi que plusieurs projets de développement pour identifier les niches d'usages ou cette tablette pourrait faire sense (citons par exemple un projet de livre interactif pour enfants; un projet prospectif sur l'interet du tactile pour l'apprentissage de la lecture chez l'enfant dyslexique; un projet en cours de montage pour un dispositif de médiation culturel autour de livres trés anciens). Nous souhaitons disposer, et c'est le sujet ici proposé, d'une base de programmation d'application, du type QT (ou une autre base de travail à déterminer), pouvant être combinée de manière simple à des informations de retour tactile. Idéalement, la solution logicielle proposée pourra etre adaptée à d'autres dispositifs à retour tactile que la tablette EVITA. On illustrera le travail logiciel réalisé sur un petit exemple dont le scénario sera défini au début du projet.

Réunions avec le tuteur

Rapport de la première réunion

Travail à effectuer :

- Prise en main de Qt.

- Voir si il est possible de modifier les class de Qt (ajout de méthode ) sans modifier le fonctionnement par défaut de celles-ci. (Créer une méthode d’ajout de méthode, par exemple)

- Si le point précédent n’est pas possible, réfléchir à une autre approche du problème. (changer de technologie dans le pire des cas).

- Réfléchir à un moyen plus « pratique » d’implémenter les applications sur la tablette ( pour le moment codage sur la tablette elle-même), peut être fait plus tard.


Rapport de la seconde réunion

Lors de la seconde réunion, nous avons pu tester les différentes fonctions de la tablette tactile. Cette démonstration nous a permis de mieux appréhender la problématique posée. Cette réunion nous a permis de définir le travail que nous allons devoir effectuer pour la suite du projet:

- Voir si il est possible de créer un objet "tactile" à côté de la bibliothèque Qt qui va gérer le système tactile de l'application.

- Voir comment les événements sont traités sur Qt afin de les comprendre et les gérer pour éviter la latence sur le tactile.

- Voir comment récupérer les positions X et Y du doigt en valeurs absolues sur Qt pour faire le lien avec la tablette.

Test à effectuer:

- Créer un objet tel que précédemment qui permet un retour (visuel ou écrit) pour les tests en dehors de la tablette.

- Tester la récupération des positions X et Y du curseur de la souris sous Qt.

Travail de la semaine

1ère semaine

Durant la première semaine de travail, nous avons pris en main le codage en C++ qui nous était inconnu.

Afin de modifier la librairie QT nous envisageons plusieurs possibilités:

  • Utilisation des fonctions statiques (très peu de maniabilité).
  • Création de classes filles associées aux classes existantes. Cette solution est très maniable mais nécessite de bien comprendre la librairie existante de Qt et ensuite de créer une nouvelle librairie associée à celle-ci.
  • Modification des classes existantes et introduction de nouveaux constructeurs. Cette méthode est semblable à la précédente mais sans créer de nouvelle librairie. Risque important de bugs. Si la librairie Qt vient à être mise à jour, les modifications apportées risquent fortement de ne plus fonctionner correctement.
  • Créer "une classe mère" qui fonctionnerai pour toutes les méthodes de Qt existantes. Cette méthode risque d'avoir les mêmes problèmes que la précédente mais peut être rapide à mettre en place. La création d'un objet en C++ permet d'appeler si on le veut le constructeur de sa classe mère avant sa création afin de paramétrer celle-ci. Néanmoins nous ne pouvons pas prévoir à l'avance les "effets secondaires" de cette classe mère sur la bibliothèque Qt.


Pour la suite du projet, nous allons nous pencher vers la seconde méthode que nous pensons être la plus adaptée.

2ème semaine

Lors de notre seconde semaine de travail, nous avons testé les différentes méthodes citées la 1er semaine. Nous avons pu voir les différents avantages et inconvénients de chacune d'entre elles. Mais lors de la réunion avec M.Grisoni, nous avons compris que nous n'étions pas sur la voie souhaitée. Nous allons nous diriger vers la création d'un objet sous Qt qui gérera le système tactile des applications au lieu de modifier les fonctions existantes.

3ème semaine

Nous avons à la fois travailler sur la création d'une classe permettant d'utiliser les futures fonctions de retour tactile et la position du "doigt" sur l'écran.

Concernant le premier point, nous nous heurtons à des difficultés : nous essayons de créer une classe qui, quand nous créons un bouton, celle-ci reçoit les fonctions déjà existantes et paramètre de nouvelles.

Pour la position du "doigt", avec Qt, nous arrivons à récupérer les événements de la souris ( et donc du doigt ). Ainsi nous pouvons récupérer les positions X et Y de la souris.

Ainsi, dans cette vidéo, nous récupérons la position du curseur lors du passage du doigt, sur n'importe quel objet dans la fenêtre.
Média:mousetracking.avi

Dans cette seconde vidéo, nous récupérons la position du curseur en dehors du bouton, et lorsque l'on clique dessus, nous récupérons sa position
Média:evenement.avi

Nous pouvons aussi répondre à la question du temps réel, pour le moment, le temps de réponse est quasi-instantané. Il faudra le mesurer.