Skip to content
This repository has been archived by the owner on Sep 10, 2020. It is now read-only.
/ brain Public archive

🧠 Study about electrical activity of the brain retrieved from an EEG headset (repo in french).

License

Notifications You must be signed in to change notification settings

lowlighter/brain

Repository files navigation

Etude sur l'activité électrique du cerveau

Image Projet de M1 (semestre 2, an 2018) - ISEN Lille

Usage

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

Notes

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.

Vous êtes prêts !

Image

Entrainements personnalisés

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"]}))

A propos des applications disponibles

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.

Usage avancée

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

Sources et documentations

Emotiv

Expressions faciales

EEG

Casque

Autres

May the Force be with us...

La force