IMA5 2019/2020 P18 : Différence entre versions
(→Semaine 2) |
|||
Ligne 7 : | Ligne 7 : | ||
Encadrant : Laurent Grisoni | Encadrant : Laurent Grisoni | ||
==Description== | ==Description== | ||
− | L' | + | L'équipe de recherche MINT, dans le cadre d'un projet européen, travaille sur un système permettant de jouer, via un système de réalité virtuelle, à de vieux jeux, utilisés sous la forme d'émulateurs logiciels. Ce dispositif est développé par l'équipe dans le cadre d'un projet européen portant sur l'utilisation de la RV pour la rééducation. Le dispositif existant utilise un PC portable combiné à un casque de RV (Oculus Quest). <br> |
Nous souhaitons: | Nous souhaitons: | ||
*faire l'adaptation nécessaire à l'allègement de la forme physique du dispositif, ou nous souhaitons passer à une version n'utilisant plus le portable, mais une émulation sur carte Rapsberry. Le travail de proposition d'architecture a déjà été fait pour ce point. | *faire l'adaptation nécessaire à l'allègement de la forme physique du dispositif, ou nous souhaitons passer à une version n'utilisant plus le portable, mais une émulation sur carte Rapsberry. Le travail de proposition d'architecture a déjà été fait pour ce point. | ||
− | *faire en sorte d' | + | *faire en sorte d'étendre le système pour avoir une appli de configuration permettant de choisir la console et le jeu. Une partie de ces éléments de configuration pourront être utilisables dans le casque de RV par le malade, l'autre partie par le médecin, via une application tierce. |
− | * | + | *éventuellement et en fonction de l'avancement du projet, mettre en place quelques scénarios d'interaction spécifiques, déjà déterminés, dans le dispositif interactif utile à l'avancée du projet européen. |
==Objectifs== | ==Objectifs== | ||
Ligne 19 : | Ligne 19 : | ||
==Cahier des charges== | ==Cahier des charges== | ||
− | Le projet est fait suite à un besoin des hôpitaux de rendre la rééducation moins | + | Le projet est fait suite à un besoin des hôpitaux et cliniques de rendre la rééducation moins compliquée et plus attrayante. Nous utilisons donc de vieux jeux vidéo en réalité virtuel afin d'amener les personnes à bouger comme si elle faisait des exercices tout en s'amusant rendant ainsi le processus de rééducation moins pénible et plus facile à suivre. |
− | De plus | + | De plus, toutes les personnes ayant besoin de rééducation ou ayant besoin de faire de l'exercice dans les hôpitaux ont des maladies ou ont eu des accidents très variés. Notre dispositif doit alors être polyvalent et facilement configurable par les médecins ou les infirmières qui serait amené à faire les rééducations. |
− | Ainsi nous allons nous concentrer sur la | + | Ainsi, nous allons nous concentrer sur la partie polyvalence et configuration du système. Nous avons pour objectif de rendre le système le plus polyvalent afin qu'il puisse convenir au plus de personnes possible. Le plus facilement et le plus rapidement utilisable par l'équipe médical. |
==Choix techniques : matériel et logiciel== | ==Choix techniques : matériel et logiciel== | ||
− | Ce projet est fait à l'aide de unity avec les scripts en C# couplé à un serveur node.js sur une Raspberry pi donnant l'accès à une page web pour le personnel médical permettant la configuration et renvoyant la configuration à l'oculus. Nous utilisons un Oculus car c'est un casque de réalité virtuel de bonne qualité, dans des prix | + | Ce projet est fait à l'aide de unity avec les scripts en C# couplé à un serveur node.js sur une Raspberry pi donnant l'accès à une page web pour le personnel médical permettant la configuration et renvoyant la configuration à l'oculus. Nous utilisons un Oculus car c'est un casque de réalité virtuel de bonne qualité, dans des prix raisonnables mais surtout ne nécessitant pas d'ordinateur derrière pour faire tourner les jeux. |
==Liste des tâches à effectuer== | ==Liste des tâches à effectuer== | ||
Ligne 37 : | Ligne 37 : | ||
**Créer une fonction pour déplacer tous les boutons séparément de la manette de base | **Créer une fonction pour déplacer tous les boutons séparément de la manette de base | ||
− | *Vérifier si un scénario ayant pour objectif faire marcher le patient en déplaçant l'affichage du jeu et en fixant la manette nes sur les | + | *Vérifier si un scénario ayant pour objectif faire marcher le patient en déplaçant l'affichage du jeu et en fixant la manette nes sur les déplacements du casque est possible |
==Calendrier prévisionnel== | ==Calendrier prévisionnel== | ||
− | |||
− | |||
=Réalisation du Projet= | =Réalisation du Projet= | ||
==Semaine 1== | ==Semaine 1== | ||
− | Pour ce projet, nous sommes | + | Pour ce projet, nous sommes intégrés à l'équipe mint s'occupant du contrat complet. Dans ce cadre nous pouvons alors découvrir complètement le sujet et voir les différentes personnes qui sont affectés à ce contrat. |
− | Nous avons ensuite installé tous les logiciels | + | Nous avons ensuite installé tous les logiciels nécessaires au lancement du projet sur l'oculus: |
*Télécharger le projet à partir du git | *Télécharger le projet à partir du git | ||
*Suivre les instructions des read.me (téléchargement de Unity, de certain assets et paramétrage d'Unity; téléchargement de node.js et paramétrage de la raspberry pi) | *Suivre les instructions des read.me (téléchargement de Unity, de certain assets et paramétrage d'Unity; téléchargement de node.js et paramétrage de la raspberry pi) | ||
− | Ce sujet et divisé en deux | + | Ce sujet et divisé en deux parties: |
*Une première partie web | *Une première partie web | ||
*Une seconde partie Unity | *Une seconde partie Unity | ||
Pour cette fin de première semaine nous avons pu découvrir la partie web qui est un serveur web écrit en node js. | Pour cette fin de première semaine nous avons pu découvrir la partie web qui est un serveur web écrit en node js. | ||
− | Le serveur web tourne sur la raspberry et | + | Le serveur web tourne sur la raspberry et a pour but de faire la liaison entre le praticien et le patient. Pour cela la raspberry héberge un serveur web sur lequel nous pouvons choisir la configuration du casque. Pour l'instant nous pouvons choisir entre: |
− | *Contrôler le jeu à l'aide | + | *Contrôler le jeu à l'aide de la manette directement sur le serveur web |
− | *Contrôler le jeu avec les pads matérialisé devant le joueur. Le nombre de pad | + | *Contrôler le jeu avec les pads matérialisé devant le joueur. Le nombre de pad peut varier de 1 à 3. |
==Semaine 2== | ==Semaine 2== | ||
− | Prise en main du projet avec un apprentissage des | + | Prise en main du projet avec un apprentissage des langages javascript, node.js et C# que nous avons peu utiliser pour le javascript et jamais utiliser pour les deux autres. |
− | Pour cette deuxième semaine dans l'équipe mint nous avons pu découvrir la seconde | + | Pour cette deuxième semaine dans l'équipe mint nous avons pu découvrir la seconde partie du projet sous unity. Celle-ci se compose principalement de deux chose, les scènes et les scripts permettant aux scènes d'évoluer. Pour les scènes nous en avons une seule composée des objets suivant : |
− | *L'objet statique créant la | + | *L'objet statique créant la pièce de jeu, l'environnement que nous pouvons retrouver autour de nous lorsque nous avons le casque de réalité virtuelle devant les yeux. Cet objet est statique et n'est pas relié à des scripts ou autre d'où son nom. |
− | *L'objet quad qui est un affichage reliè à 4 scripts, cet objet est l'endroit où l'image que la raspberry produit va apparaître, en d'autre mot, ça sera là où l'on | + | *L'objet quad qui est un affichage reliè à 4 scripts, cet objet est l'endroit où l'image que la raspberry produit va apparaître, en d'autre mot, ça sera là où l'on peut voir le jeu comme une télévision. Les 4 scripts permettent la connexion et les échanges avec la raspberry, nous avons les scripts TCP config, TCP Commande, TCP screen et Vibration manager. TCP config permet de récupérer la configuration envoyée par la raspberry et lancer toutes les fonctions nécessaires afin de reconfigurer l'oculus selon la configuration reçue. <strong>À finir</strong> |
− | Première réunion avec tous les membres du projet afin de trouver les meilleurs | + | Première réunion avec tous les membres du projet afin de trouver les meilleurs scénarios et les meilleurs paramètre à mettre en place pendant notre PFE. Au cours de cette réunion nous avons pu déduire que le scénario le plus intéressant avec le temps que nous disposons. |
− | Nous devons donc créer un nouveau set d'objet que nous appelons gamepad libre. C'est objet correspondent aux boutons que nous pouvons retrouver sur les manettes NES sans avoir la contrainte de les lier à un support en théorie. Cependant en pratique Unity nous oblige à créer un objet parent permettant de relier les boutons algorithmiquement et ainsi pouvoir les manipuler plus facilement et plus efficacement. Ainsi ces boutons devront être | + | Nous devons donc créer un nouveau set d'objet que nous appelons gamepad libre. C'est objet correspondent aux boutons que nous pouvons retrouver sur les manettes NES sans avoir la contrainte de les lier à un support en théorie. Cependant en pratique Unity nous oblige à créer un objet parent permettant de relier les boutons algorithmiquement et ainsi pouvoir les manipuler plus facilement et plus efficacement. Ainsi ces boutons devront être reliés au site web et la raspberry, ce qui permettra de configurer les différents paramètre du projet. |
− | Du côté du serveur web nous devons créer deux affichages gérant les boutons afin que l'utilisateur | + | Du côté du serveur web nous devons créer deux affichages gérant les boutons afin que l'utilisateur puisse bouger les boutons en 3D et ainsi augmenter ou diminuer la dificulté de l'exercice en temps réel. |
− | Ceci pose plusieurs | + | Ceci pose plusieurs problèmes : |
− | Du côté du casque de réalité virtuel nous devons créer un | + | Du côté du casque de réalité virtuel nous devons créer un nouvel objet manette NES couplé à un nouveau script afin de placer les boutons en fonction de la configuration que nous recevons. Pour commencer nous avons du nous entendre sur la formation du message json permettant de transférer la configuration entre la raspberry et le casque. Nous avons choisi de créer un sous fichier json pour chaque bouton composé de ses trois coordonnées. |
=Documents Rendus= | =Documents Rendus= |
Version du 27 janvier 2020 à 15:59
Sommaire
Présentation générale
Sujet : Virtual Reality Old Gaming
Etudiant : Ibrahim Ben Dhiab et Fabien Di Natale
Encadrant : Laurent Grisoni
Description
L'équipe de recherche MINT, dans le cadre d'un projet européen, travaille sur un système permettant de jouer, via un système de réalité virtuelle, à de vieux jeux, utilisés sous la forme d'émulateurs logiciels. Ce dispositif est développé par l'équipe dans le cadre d'un projet européen portant sur l'utilisation de la RV pour la rééducation. Le dispositif existant utilise un PC portable combiné à un casque de RV (Oculus Quest).
Nous souhaitons:
- faire l'adaptation nécessaire à l'allègement de la forme physique du dispositif, ou nous souhaitons passer à une version n'utilisant plus le portable, mais une émulation sur carte Rapsberry. Le travail de proposition d'architecture a déjà été fait pour ce point.
- faire en sorte d'étendre le système pour avoir une appli de configuration permettant de choisir la console et le jeu. Une partie de ces éléments de configuration pourront être utilisables dans le casque de RV par le malade, l'autre partie par le médecin, via une application tierce.
- éventuellement et en fonction de l'avancement du projet, mettre en place quelques scénarios d'interaction spécifiques, déjà déterminés, dans le dispositif interactif utile à l'avancée du projet européen.
Objectifs
Mettre en place quelques fonctionnalités dans un émulateur RV d'ancienne console
Préparation du projet
Cahier des charges
Le projet est fait suite à un besoin des hôpitaux et cliniques de rendre la rééducation moins compliquée et plus attrayante. Nous utilisons donc de vieux jeux vidéo en réalité virtuel afin d'amener les personnes à bouger comme si elle faisait des exercices tout en s'amusant rendant ainsi le processus de rééducation moins pénible et plus facile à suivre. De plus, toutes les personnes ayant besoin de rééducation ou ayant besoin de faire de l'exercice dans les hôpitaux ont des maladies ou ont eu des accidents très variés. Notre dispositif doit alors être polyvalent et facilement configurable par les médecins ou les infirmières qui serait amené à faire les rééducations.
Ainsi, nous allons nous concentrer sur la partie polyvalence et configuration du système. Nous avons pour objectif de rendre le système le plus polyvalent afin qu'il puisse convenir au plus de personnes possible. Le plus facilement et le plus rapidement utilisable par l'équipe médical.
Choix techniques : matériel et logiciel
Ce projet est fait à l'aide de unity avec les scripts en C# couplé à un serveur node.js sur une Raspberry pi donnant l'accès à une page web pour le personnel médical permettant la configuration et renvoyant la configuration à l'oculus. Nous utilisons un Oculus car c'est un casque de réalité virtuel de bonne qualité, dans des prix raisonnables mais surtout ne nécessitant pas d'ordinateur derrière pour faire tourner les jeux.
Liste des tâches à effectuer
Nous devons :
- Améliorer la page web afin de proposer les personnalisations de paramètre suivant:
- Choisir le nombre de manette nes utilisable par le patient
- Possibilité d'avoir juste les boutons que le personnel soignant pourra déplacer
- Ajout de script C# en concordance avec le serveur web
- Décoder correctement les configurations envoyant par la page web (la raspberry pi)
- Créer un groupe d'objet que de boutons sans la manette
- Créer une fonction pour déplacer tous les boutons séparément de la manette de base
- Vérifier si un scénario ayant pour objectif faire marcher le patient en déplaçant l'affichage du jeu et en fixant la manette nes sur les déplacements du casque est possible
Calendrier prévisionnel
Réalisation du Projet
Semaine 1
Pour ce projet, nous sommes intégrés à l'équipe mint s'occupant du contrat complet. Dans ce cadre nous pouvons alors découvrir complètement le sujet et voir les différentes personnes qui sont affectés à ce contrat. Nous avons ensuite installé tous les logiciels nécessaires au lancement du projet sur l'oculus:
- Télécharger le projet à partir du git
- Suivre les instructions des read.me (téléchargement de Unity, de certain assets et paramétrage d'Unity; téléchargement de node.js et paramétrage de la raspberry pi)
Ce sujet et divisé en deux parties:
- Une première partie web
- Une seconde partie Unity
Pour cette fin de première semaine nous avons pu découvrir la partie web qui est un serveur web écrit en node js. Le serveur web tourne sur la raspberry et a pour but de faire la liaison entre le praticien et le patient. Pour cela la raspberry héberge un serveur web sur lequel nous pouvons choisir la configuration du casque. Pour l'instant nous pouvons choisir entre:
- Contrôler le jeu à l'aide de la manette directement sur le serveur web
- Contrôler le jeu avec les pads matérialisé devant le joueur. Le nombre de pad peut varier de 1 à 3.
Semaine 2
Prise en main du projet avec un apprentissage des langages javascript, node.js et C# que nous avons peu utiliser pour le javascript et jamais utiliser pour les deux autres.
Pour cette deuxième semaine dans l'équipe mint nous avons pu découvrir la seconde partie du projet sous unity. Celle-ci se compose principalement de deux chose, les scènes et les scripts permettant aux scènes d'évoluer. Pour les scènes nous en avons une seule composée des objets suivant :
- L'objet statique créant la pièce de jeu, l'environnement que nous pouvons retrouver autour de nous lorsque nous avons le casque de réalité virtuelle devant les yeux. Cet objet est statique et n'est pas relié à des scripts ou autre d'où son nom.
- L'objet quad qui est un affichage reliè à 4 scripts, cet objet est l'endroit où l'image que la raspberry produit va apparaître, en d'autre mot, ça sera là où l'on peut voir le jeu comme une télévision. Les 4 scripts permettent la connexion et les échanges avec la raspberry, nous avons les scripts TCP config, TCP Commande, TCP screen et Vibration manager. TCP config permet de récupérer la configuration envoyée par la raspberry et lancer toutes les fonctions nécessaires afin de reconfigurer l'oculus selon la configuration reçue. À finir
Première réunion avec tous les membres du projet afin de trouver les meilleurs scénarios et les meilleurs paramètre à mettre en place pendant notre PFE. Au cours de cette réunion nous avons pu déduire que le scénario le plus intéressant avec le temps que nous disposons. Nous devons donc créer un nouveau set d'objet que nous appelons gamepad libre. C'est objet correspondent aux boutons que nous pouvons retrouver sur les manettes NES sans avoir la contrainte de les lier à un support en théorie. Cependant en pratique Unity nous oblige à créer un objet parent permettant de relier les boutons algorithmiquement et ainsi pouvoir les manipuler plus facilement et plus efficacement. Ainsi ces boutons devront être reliés au site web et la raspberry, ce qui permettra de configurer les différents paramètre du projet.
Du côté du serveur web nous devons créer deux affichages gérant les boutons afin que l'utilisateur puisse bouger les boutons en 3D et ainsi augmenter ou diminuer la dificulté de l'exercice en temps réel. Ceci pose plusieurs problèmes :
Du côté du casque de réalité virtuel nous devons créer un nouvel objet manette NES couplé à un nouveau script afin de placer les boutons en fonction de la configuration que nous recevons. Pour commencer nous avons du nous entendre sur la formation du message json permettant de transférer la configuration entre la raspberry et le casque. Nous avons choisi de créer un sous fichier json pour chaque bouton composé de ses trois coordonnées.