P47 Développement d'une interface cerveau-ordinateur

De Wiki de Projets IMA
Révision datée du 7 février 2017 à 11:50 par Vcharnet (discussion | contributions) (Avancement du travail)


Logo OpenBCI

Glossaire

EEG 
Électroencéphalographie : Méthode d'exploration cérébrale qui mesure l'activité électrique du cerveau par des électrodes placées sur le cuir chevelu.
EMG 
Électromyogramme : Examen qui permet d'enregistrer l'activité spontanée d'un muscle ou d'un nerf.
ECG 
Électrocardiographie : Représentation graphique de l'activité électrique du cœur.
Interface synchrone 
Une BCI est dite synchrone quand elle ne permet à l'utilisateur d'interagir avec le système qu'à des instants précis, basés sur des stimulus.
Interface asynchrone 
Une interface est asynchrone à partir du moment où l'utilisateur peut changer volontairement certaines caractéristiques de son signal EEG et que l'acquisition de ses données EEG est continue.

Présentation générale du projet

Contexte

Ce projet est réalisé dans le cadre des projets de fin d’études de cinquième année à l’école d’ingénieur Polytech Lille en formation IMA (informatique, Microélectronique, Automatique).


Le sujet est développé en partenariat avec le pôle BCI (Brain-Computer Interface) du laboratoire CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) se situant à l’Université Lille 1, dirigé par François Cabestaing.


Le lien entre le laboratoire est assuré par la tutrice du projet, Claudine Lecocq, maître de conférences à Polytech Lille.


L’objectif principal de ce projet est de développer une Interface Cerveau-Ordinateur à l’aide d’un kit Recherche & Développement open source, du nom d’OpenBCI. Le principe d’une Interface Cerveau-Ordinateur est de mesurer les signaux cérébraux, les traiter et effectuer une classification des caractéristiques obtenues dans le but de contrôler et piloter un système, qui peut être physique (fauteuil roulant, drone…) ou logiciel.


Il est important de préciser que les BCI sont développées principalement pour les personnes paralysées et lourdement handicapées moteur pour qu’elles puissent communiquer ou interagir avec leur environnement par la pensée.

Objectifs

Les objectifs principaux du projet ont été décidés de part une collaboration entre le laboratoire CRIStAL (représenté par Mr Cabestaing), Mme Lecocq et moi-même. Il fallait choisir des objectifs réalisables dans le temps dédié à ce projet de fin d’études, et qui aient un réel apport pour le laboratoire (voir indicateurs de résultats)


  • Mise en œuvre du système d’acquisition OpenBCI sur OpenVibe : OpenVibe est le logiciel majoritairement utilisé par le laboratoire CRIStAL. Il est donc très important de rendre le plus rapidement possible le matériel OpenBCI compatible avec ce logiciel.


  • Documentation technique pour utilisation OpenBCI : il s’agit là de produire une documentation précise des câblages et des caractéristiques du kit afin qu’une personne l’utilisant puisse rapidement trouver les informations dont elle a besoin.


  • Comparaison coût/performances entre les systèmes g.tec & OpenBCI : En effet, le kit OpenBCI est environ 10 fois moins cher qu’un système g.tec (système aux normes médicales utilisé par CRIStAL). Il est important de pouvoir comparer leurs performances.


  • Utilisation du kit R&D OpenBCI pour commander/piloter un système physique : L’objectif à terme de ce projet est de pouvoir mettre en œuvre la commande d’un système physique, qu’il soit logiciel ou physique.



Architecture matérielle

Architecture fonctionelle et matérielle

Sur le premier graphique, on retrouve l’analyse fonctionnelle du système. Chaque bloc représente une fonction principale réalisée par le système. Il s’agit dans un premier temps de mesurer les signaux physiologiques, et dans notre cas les signaux cérébraux de l’utilisateur. Il faut ensuite réaliser une opération de traitement de signal, où les données mesurées seront sélectionnées et traitées en fonction du scénario voulu par l’Interface Cerveau-Ordinateur


Le second graphique correspond à l’architecture matérielle d’une BCI. Chaque bloc correspond donc au système nécessaire pour réaliser la fonction correspondante au bloc supérieur. Ainsi, la mesure des signaux cérébraux est assurée par un système, casque EEG, le traitement du signal et la classification sont réalisées par une partie logicielle (OpenVibe, OpenBCI, Matlab), puis le système à commander, qui peut être physique (fauteuil roulant, drone, etc..) ou logiciel.

Acquisition

Il existe différents moyens de réaliser de l’acquisition de signaux cérébraux. La méthode la plus classique est la méthode dite « non-invasive ». Cela consiste à installer un système EEG muni d’électrodes sur la surface du crâne. Ce dispositif est très simple à mettre en œuvre et est le plus généralement utilisé. Néanmoins, les signaux sont très bruités car les potentiels mesurés sont extrêmement faibles (ordre du micro volt).


L’acquisition des ondes cérébrales peut également être réalisée par une méthode semi-invasive. Une grille d’électrodes est installée à la surface de boite crânienne. Le procédé permet d’obtenir des signaux beaucoup moins bruités, mais nécessite une lourde intervention chirurgicale, il est donc peu utilisé.


La méthode pour obtenir les signaux de la meilleure qualité est la méthode invasive. Lors d’une très lourde opération, des électrodes vont être placées directement dans le cerveau. Les signaux sont alors très peu bruités et très fiables. Néanmoins, la durée de vie des électrodes dans le milieu cérébral est très courte et leur installation provoque de graves séquelles irréversibles au cerveau.

Traitement du signal

L’étape de traitement du signal est essentielle dans le bon fonctionnement d’une BCI. Elle permet d’extraire ce que l’on appeler des caractéristiques. L’objectif est dans un premier temps d’éliminer ce que l’on appelle les artefacts (perturbations du signal EEG), qui peuvent être de type électrique, comme la présence du « 50Hz » issu de l’alimentation électrique du secteur, ou de type physiologique comme les clignements des yeux ou bien le pouls. C’est une étape de prétraitement qui utilise généralement des filtres. Les plus courants sont :


  • Filtrage spatial : On utilise les informations des électrodes voisines. Un filtre spatial commun est le Laplacien. On va soustraite à une électrode la valeur moyenne des électrodes voisines. Si on se place dans la configuration de l’illustration ci-dessous, l’expression de la valeur de l’électrode centrale Cz après un filtrage Laplacien est la suivante :


Cz_{Laplacien}=Cz-\frac{Fz+Pz+C4+C3}{4}


P47 2017 Laplacien.png


  • Filtrage fréquentiel : Le filtrage fréquentiel permet de sélectionner les bandes de fréquence utiles en fonction du scénario voulu par la BCI. En effet on peut classer les activités électriques cérébrales rythmiques en fonction de leur fréquence. Par exemple les ondes α sont généralement comprises entre 9 et 13Hz, elles correspondent à un état physiologique de repos et se manifestent généralement à la fermeture des yeux. L’analyse fréquentielle permet ainsi de remarquer la présence ou non de ces ondes. Le graphique ci-dessous représente mes propres ondes alpha mesurées lors d'une acquisition sur OpenBCI


P47 2017 Fft alpha.PNG

Classification

L’étape de classification est là pour effectuer une décision du système à partir des caractéristiques extraites lors de la phase de traitement du signal. On va donc organiser les données en différentes classes, fonctions des caractéristiques. Les classifieurs les plus courants dans les domaines des BCI sont :

  • Classifieur LDA (Analyse linéaire discriminante) : il calcule la décision par combinaison linéaire des échantillons
  • Réseaux de neurones : chaque neurone effectue une combinaison linéaire et permet d’attribuer à chaque neurone une classe

Plan d'action

  • Documentation sur les BCI & gestion de projet
    • Documentation et état de l'art des BCI
    • Utilisation d'outils de gestion de projet
  • Mise en oeuvre du kit OpenBCI
    • Etude du kit OpenBCI
    • Prise en main des logiciels OpenBCI et OpenVibe
    • Mise en place d'une procédure de câblage
    • Assurer la compatibilité du kit avec OpenVibe
  • Analyse comparative des deux systèmes
    • Sélection des critères de comparaison
    • Mise en place d'un protocole de mesure
    • Elaboration de scénarios OpenVibe
    • Etude comparative des systèmes
  • Integration d'OpenBCI dans une interface
    • Portage du kit OpenBCI sur "le labyrinthe"
    • Développement d'une BCI de démonstration
    • Mise en place d'une campagne de tests

Planning prévisionnel

P 47 2017 Planning image.PNG

Avancement du travail

Avancement des tâches
Tâches Avancement Commentaires
Documentation sur les BCI & gestion du projet Terminé Livrables rendus
Mise en oeuvre du kit OpenBCI Terminé Livrables rendus
Analyse comparative des deux systèmes En cours Développement de scénarios pour mesure des performances
Intégration d'OpenBCI dans une interface En cours Création de scénarios "en-ligne" en cours

Dernière mise à jour le 25/01/2017

Semaine 1 : Du 19/09 au 23/09

Réunion du 20/09/2016 :

  • Rencontre avec l'équipe BCI
  • Visite du laboratoire
  • Définition des objectifs
  • Contraintes matérielles

Semaine 2 : Du 26/09 au 30/09

Réunion du 26/09/2016 :

  • Redéfinition des enjeux & objectifs du projet
  • Retour sur le premier CR de réunion
  • Méthodologie pour la définition des tâches du projet
  • Méthodologie pour quantification des objectifs
  • Méthodologie pour l'analyse des risques

Semaine 3 : Du 03/10 au 08/10

  • Installation matériel (Ordinateur)
  • Objectifs du projet
  • Définition du plan d'action
  • Réception du kit R&D OpenBCI et premiers tests

Semaine 4 : Du 10/10 au 14/10

  • Objectifs du projet
  • Définition du plan d'action
  • Réception matériel (Casque laboratoire & Gel)
  • Finalisation de la convention de prêt de matériel

Semaine 5 : Du 17/10 au 21/10

  • Entretien du matériel laboratoire
  • Connexion du module de communication OpenBCI

Semaine 6 : Du 24/10 au 28/10

Réunion du 25/10/2016 :

  • Validation du plan d'action
  • Validation des indicateurs de résultat
  • Validation des objectifs projet
  • Prise de décision concernant le casque OpenBCI

Semaine 7 : Du 31/10 au 04/11

  • Découverte et sensibilisation au logiciel OpenVibe

Semaine 8 : Du 07/11 au 11/11

  • Analyse des risques projets
  • Préparation du macroplanning

Semaine 9 : Du 14/11 au 18/11

  • Premiers tests du système d'acquisition

Réunion du 16/11/2016 :

  • Présentation Macroplanning
  • Présentation analyse des risques
  • Présentation V1 diaporama BCI
  • Démonstration des mesures des premiers essais

Semaine 10 : Du 21/11 au 25/11

  • Connexion du kit OpenBCI sur OpenVibe
  • Modification du macroplanning
  • Mise en place de fiche de compte-rendu de manipulation
  • Travail de recherche sur les BCI

Semaine 11 : Du 28/11 au 02/12

  • Préparation entretien avec Alban Duprès le 06/12
  • Documentation OpenVibe

Réunion du 29/11/2016

  • Présentation des connaissances BCI
  • Présentation de l'avancement de la connexion de l'OpenBCI sur OpenVibe
  • Présentation du macroplanning revu
  • Présentation des fiches compte-rendu

Semaine 12 : Du 05/12 au 09/12

  • Préparation diaporama soutenance & rapport décembre
  • Documentation kit OpenBCI

Réunion avec Alban Duprès le 06/12

  • Récupération des fichiers
    • Applications (Labyrinthe, karting etc…) développées sous UNITY
    • Scénarios OpenVibe
    • Exemples de classifieurs LDA (OpenVibe)
    • Fichiers Python (lien Classifieur/VRPN)
  • Explications
    • Fonctionnement entre OpenVibe et Unity
    • Principe d’une interface cerveau ordinateur (d’un point de vue logiciel)
    • Scénario OpenVibe
  • Impossible d’emprunter une électrode « oreille » car celles du laboratoire ont deux connecteurs
  • Discussion à propos de l’application à un système réel

Semaine 13 : Du 12/12 au 16/12

  • Rapport de intermédiaire
  • Préparation soutenance
  • Rapport intermédiaire rendu le 13/12
  • Soutenance le 14/12

Semaine 14 : Du 03/01 au 06/01

  • Connexion du kit OpenBCI à OpenVibe
  • Premières mesures avec OpenVibe
  • Enregistrement des données
  • Etude des premiers scénarios OpenVibe
  • Lecture des données sur MATLAB

Réunion du 06/01/2016

  • Point sur le rapport de projet de décembre
  • Point sur la soutenance de décembre
  • Présentation de l'avancée du projet
  • Point sur les livrables et objectifs à venir

Semaine 15 : Du 09/01 au 13/01

  • Filtre coupe-bande 50Hz sur MATLAB (Butterworth)
  • Filtre passe-bande sur MATLAB
  • FFT sur MATLAB
  • Calcul de la puissance moyenne

Semaine 16 : du 16/01 au 20/01

  • Etude des seuils
  • Utilisation des seuils pour détection des mouvements des pieds
  • Développement du programme matlab

Semaine 17 : du 23/01 au 27/01

  • Orientation du PFE sur une mesures des performances d'OpenBCI
  • Acquisition sur deux cobayes terrorisés
  • Vérification du script matlab sur les mesures obtenues

Réunion du 24/01/2017

  • Point sur l'avancée du projet
  • Modification de la tâche "Analyse comparative des deux systèmes" en "Mesure des performances d'OpenBCI"
  • Lecture d'articles sur la mesure de performances BCI
  • Présentation des premiers programmes MATLAB
  • Point sur les livrables et objectifs à venir

Semaine 18 : du 30/01 au 03/02

  • Création d'un scénario "en ligne" sur OpenVibe
  • Utilisation du kit OpenBCI sur le scénario en ligne
  • Développement de scripts MATLAB pour OpenVibe (seuillage du signal)
  • Tests de l'application en ligne

Semaine 19 : du 06/02 au 10/02

  • Communication série avec un arduino sur les scénarios en ligne