Programmation d'une expérience contrôlée

Le but de ce TP est de coder une expérience contrôlée pour la technique d'interaction développée dans le TP précédent. Vous devez donc avoir terminé ce TP avant d'entamer celui-ci. L'expérience se déroulera comme suit : chaque participant testera les 4 techniques d'interaction : les 3 variates de pointage qui sélectionnent la cible la plus proche (Highlight, Bubble et Rope), et la technique classique pour laquelle le curseur doit survoler une cible pour pouvoir la sélectionner. Pour chaque technique il faudra lancer l'application, renseigner le numéro d'utilisateur et choisir la technique testée.

Boîte de dialogue de setup

Écrivez une classe ExpSetup, qui dérive de QDialog, qui servira de configuration à l'expérience. Vous y ajouterez de quoi spécifier un numéro d'utilisateur, une technique, un nombre de densités, un nombre de tailles de cibles et un nombre de répétitions. Enfin, ajoutez un bouton de validation. Vous utiliserez des layouts pour placer vos composants. Le layout d'un QWidget peut être spécifié avec la méthode setLayout. Dans les layouts on peut ajouter des Widgets, des Layouts et des spacers. Utilisez des QVBoxLayout et des QHBoxLayout.

Créez cette dialog dans le constructeur de votre Mainwindow. Connectez ensuite le slot clicked du bouton de validation à une méthode qui récupèrera les valeurs et lancera l'expérience.

Génération aléatoire des cibles

Les cibles seront générées aléatoirement, mais on soihaite que tous les participants travaillent sur les mêmes cibles pour éviter un biais selon l'utilisateur. Pour cela il faut générer des fichiers contenant des listes de cibles. Écrivez un nouveau programme qui s'exécutera en ligne de commande. Il prendra en paramètre un nombre de cibles, une taille de cibles et un espacement minimal entre les cibles. ette méthode va donc générer des cibles aléatoirement et s'assurer que les cibles ne sont pas trop proches. Enregistrez ces cibles dans un fichier CSV.

Parmi ces cibles, on souhaite aussi que les cibles à sélectionnées soient les mêmes pour tous les utilisateurs, afin de ne pas avoir de biais. Créez un fichier CSV contenant une séquence de cibles à sélectionner. Attention : chaque cible ne peut être sélectionnée qu'une fois. Vous pouvez donc générer par exemple une permutation des nombres entre 1 et le nombre de cibles. Les deux fichiers sont générés en même temps.

Le gestionnaire d'expérience

Créez une classe XPManager, qui va gérer les paramètres et l'exécution de l'expérience. Le constructeur de cette classe prendra en paramètre les valeurs récupérées dans la boîte de dialogue

Créez une liste pour les facteurs taille et densité de l'expérience, et effectuez une permutation aléatoire.

Initialisez la valeur courante de l'essai, caractérisée par une taille, une densité, et un numéro de répétition.

Modifiez l'action de la sélection d'une cible afin d'avancer l'expérience au prochain essai. Créez une ligne de log précisant le numéro d'utilisateur, la technique, la densité, la taille, le numéro de cible, un timestamp et si la bonne cible a été sélectionnée ou pas. Le log utilisera le format CSV. Quand la condition change, pensez à charger le bon fichier de cibles. Fermez l'application une fois le dernier essai sélectionné.

Déroulement de l'expérience contrôlée

Une fois votre application prête, vous devez faire passer votre expérince à des utilisateurs. Nous alons utiliser 3 densités de cibles : 30, 60 et 90 cibles, ainsi que 3 tailles de cibles : 6, 12 et 18 pixels.