Projet de M1 (semestre 2, an 2018) - ISEN Lille
- Interface principale
- Etude du marché et des casques EEG
- Casques plus performants à prix abordable
- Reconnaissance des émotions et utilisation du casque
- Démonstrateurs
- Divers
Commencez par éditer le fichier hardware.txt
afin d'y rentrer les identifiants de vos casques Emotiv INSIGHT. Le support de plus de deux casques dans les différentes applications n'est pas garantie.
Ensuite, depuis la racine du projet, exécutez la commande suivante depuis un invite de commande :
npm start
Les dépendances de chaque module seront automatiquement ajoutées et le serveur principal sera également démarré.
Ouvrez ensuite votre navigateur et rendez vous sur la page localhost:3000
, où vous pourrez accéder à tous les démonstrateurs !
Les applications qui requièrent un entrainement d'un réseau de neuronnes artificiels nécessite que vous lanciez au préalable dans un invite de commande distinct du serveur la commande suivante :
cd training2
py main.py
Par défaut, l'application utilise le port 3000 pour le serveur web et le port 3001 pour le serveur websockets.
La machine doit être équipée de NodeJS de npm ainsi que de Cortex UI. Certaines applications recquiert également la présence d'un environemment Python 3 avec une suite logiciel de deep learning.
Les applications fournies se chargent de démarrer automatiquement les entrainements liées à leur usage. Il est cependant possible démarrer un entrainement personnalisé depuis votre navigateur en tapant la commande suivante dans la console web :
if (!ws) ws = new WebSocket("localhost:3001")
ws.send(JSON.stringify({action:"python_start", data:["neutre", "pierre", "papier", "ciseaux"]}))
Vous pouvez à tout moment cliquer sur les boites d'aide disposées en haut à droite de votre écran pour obtenir de l'aide sur l'application qui est affichée actuellement.
Pour utiliser le contrôle d'un drône parrot, vous devez vous connecter à son réseau.
Pour éviter de vérifier les dépendances de chaque module vous pouvez exécuter la commande suivante pour démarrer le serveur principal.
node alayer
Il est possible de connecter le serveur principal à un serveur déjà existant (afin de partager les données des éventuels casques connectés à chacun des serveurs) en utilisant l'argument server
suivi de l'addresse ip du serveur distant.
node alayer server=127.0.0.0
Si vous êtes développeur, pour afficher les messages d'erreurs dans la console node, vous pouvez utiliser l'argument debug
.
node alayer debug=1
Les données envoyées par le serveur sont formattées sous la forme d'un tableau.
- Le premier élément indique l'identifiant de l'événement (
sys
,dev
,com
,pow
,met
,fac
,dev
,hdw
,inf
) - Le second élement indique le casque qui a émis l'évenement ainsi que l'identifiant du serveur l'ayant envoyé (e.g.
"headset#F646A0472332"
). - Le reste constitue les données reçues.
ws.onmessage = event => {
const data = JSON.parse(event.data)
const type = d.shift()
const headset = d.shift()
//Exploitez ensuite le contenu de "data"
}
Consultez la documentation de l'API Cortex pour plus d'informations sur les événements disponibles.
Deux nouveaux événements ont étés implémentés en plus de ceux proposés par Cortex.
- hdw : Hardware
hdw[0] //Le casque 1 est connecté
hdw[1] //Le casque 2 est connecté
hdw[2] //Le drone parrot est connecté
hdw[3] //Casque de préférence*
hdw[4] //Les données du casque 1 sont reçues via un autre serveur
hdw[5] //Les données du casque 2 sont reçues via un autre serveur
hdw[6] //Le serveur distant est actif
hdw[7] //Le casque 3 est connecté
hdw[8] //Les données du casque 3 sont reçues via un autre serveur
- inf : Sortie console de l'instance python
inf[0] //Canal de sortie `"out"` ou `"err"`
inf[1] //Sortie console
//Dans le cas d'un entrainement personnalisé :
inf[1] //Status (`"training"`, `"modeling"` ou `"prediction"`)
inf[2] //Action à entrainer ou prédite
- Modèles de choix discrets pour la reconnaissance des expressions faciales statiques
- Le Facial Action Coding System de Paul Ekman
- Bases neurophysiologiques et principes d’interprétation de l’électroencéphalogramme en réanimation
- Interprétation des signaux MEG-EEG