BCI : Interface Cerveau Ordinateur

De Wiki de Projets IMA
Révision datée du 14 janvier 2014 à 11:16 par Cmonteir (discussion | contributions) (Développement d'une interface logicielle OpenVibe Blender)

Présentation

Contexte :

Le but général est de faciliter la vie des personnes paralysées avec un système interprétant directement leurs signaux cérébraux pour communiquer ou agir avec leur environnement. Les patients susceptibles d'utiliser cette technologie sont ceux atteint de paralysie musculaire complète (LIS : Locked In Syndrom) ou de SLA (Sclérose Latérale Amyotrophique). Ces maladies affectant très peu les fonctions cérébrales, cette technologie semble pouvoir devenir LA solution pour pallier au handicap. Ce projet est réalisé en collaboration avec l'équipe BCI du LAGIS.

Voilà ce que fait l'interface cerveau ordinateur (BCI : Brain Computer Interface ou BMI : Brain Machine Interface) de façon détaillée : les signaux électroencéphalographiques (EEG) sont acquis, numérisés et traités pour pouvoir ensuite être transformés en commandes. Une partie de ces informations est aussi affichée de manière simple pour l'utilisateur pour lui permettre un apprentissage plus rapide grâce à ce retour visuel.

Comment ?

Schema-bci.png

Acquisition

L'information cérébrale peut-être acquise de différentes manières :

- La première est non invasive, c'est à dire qu'elle ne nécessite pas d'intervention chirurgical visant à implanter un quelconque dispositif dans le corps du patient. A l'aide d'un casque muni d'électrodes placés sur le crane, on peut acquérir les signaux cérébraux passant à travers la boite crânienne (appelés signaux EEG). L'ordre de grandeur de ces signaux électriques ne dépasse pas le microvolt et les signaux acquis sont très fortement bruités. Mais ce dispositif est simple à mettre en œuvre et peut être utilisé aussi bien par les patients que par les chercheurs lors d'une phase expérimentale qu'est la nôtre.

- La seconde est semi-invasive, l’électrode servant à l'acquisition des signaux est implanté sous la surface de la boîte crânienne (ECoG : électrocorticogramme). Cette méthode permet d'augmenter considérablement la qualité des signaux qui sont beaucoup moins bruités que les signaux EEG. De plus, elle présente peu de risque puisque l’électrode est situé à l’extérieur de la dure-mère.

- La dernière est dite invasive, dans le sens où on vient placer des électrodes directement dans la masse cérébrale. Cette méthode a deja fait ses preuves : en 2005 un patient tétraplégique était capable de contrôler une prothèse robotique grâce à ce dispositif. Néanmoins, les électrodes ont une durée de vie limitée et les lésions cérébrales, dues à l’implantation des électrodes, sont irréversibles.

Une autre méthode consiste à détecter des signaux résultant de stimuli extérieurs connus (ERP : Event Related Potentials). Dans le cadre de notre projet, nous allons développer une interface graphique qui va être intégrer dans une interface BCI de type asynchrone basée sur l'analyse des signaux EEG acquis dans le cas de mouvements imaginés des pieds et des mains gauche ou droite. Les EEG considérés sont issus des activités ipsilatérales et contralatérales du cortex pré-moteur.

Traitement des signaux EEG

L'objectif du traitement des signaux EEG est de discriminer le mouvement imaginé par le patient (main droite, main gauche, pied). Pour cela, il est nécessaire d'extraire des signaux EEG un certains nombre d'attributs qui vont permettre de prendre une décision sur la commande à effectuer au sein de l'interface BCI en cours de developpement au LAGIS. Il est effectué par un logiciel d'analyse numérique comme MatLab, OpenVibe.

Les attributs extraits sont les amplitudes des signaux cérébraux dans certaines bandes de fréquence. Exemple, l'amplitude du rythme µ (entre 8Hz et 15Hz) disparait environ une seconde avant et pendant un mouvement des pieds ou des mains, mais aussi avant et pendant l'imagination de ce mouvement. Dans le même contexte on peut observer de grandes modifications d'amplitude du signal EEG dans la bande ß (entre 15Hz et 35Hz) occurrentes avant, pendant et juste après un mouvement. Ces signaux sont toujours très brefs mais la manière dont ils sont acquis (niveau d'invasivité) change complètement la manière dont ils seront traités. Les signaux mesurés à la surface du cerveau sont les plus problématiques car ils résultent de l'activité de millions de neurones.

Le pré-traitement a pour fonction l’élimination des artefacts (signaux induits par une autre activité corporelle que celle observée comme le clignement des yeux, la déglutition...) ainsi que l'amélioration du rapport signal sur bruit, bruit venant de tous les signaux à proximité, autant dire de tous les neurones à proximité donc quelques millions par point de mesure. Pour ce faire, différentes techniques sont mises en œuvre :

-Filtrage spatial : Combinaison linéaire des signaux des électrodes voisines. Par exemple le filtrage Laplacien, consistant à soustraire à un signal, la moyenne de ces voisins : très répandu car aussi simple qu’efficace pour éliminer le bruit.

-Filtrage fréquentiel : Sachant que nous cherchons à mesure l'amplitude des signaux dans les bandes de fréquence 8-35Hz il convient d'effectuer un filtrage fréquentiel éliminant toutes les fréquences hors de cette plage.

-Interface Synchrone : Une interface est dite Synchrone lorsque ce n'est pas l'activité spontanée du cerveau qui est analysée mais la réponse attendu à des stimulus générés par l'interface. Des signaux réflexifs sont générés de manière mécanique et inconsciente ce qui rend la phase d'apprentissage beaucoup plus simple.

-Interface Asynchrone : Une interface asynchrone à contrario analyse les signaux à tous moments. Et même si l'on peut sélectionner les zones du cerveaux à observer en choisissant l'emplacement des électrodes il n’empêche que les signaux observés sont le résultat de la somme de toutes les activités cérébrales avoisinante. Dans le cas de la réalisation ou de l'imagination de mouvements des mains (droite ou gauche) par exemple, il s'agit de reconnaitre dans les signaux cérébraux, le moment où un événement se produit et le type d'événement généré (droite ou gauche). Dans le cas de l'interface développée par le LAGIS les signaux EEG sont analysés en s'appuyant sur l'expertise des neurophysiologistes qui ont mis en évidence des modifications des signaux EEG dans certaines bandes de fréquence dans la zone moteur du cortex avant, pendant et après l'imagination ou la réalisation du mouvement.

Méthode d'exploitation des signaux cérébraux acquis (ou paradigme)

Afin de transformer les signaux acquis en commande d'un vas, d'un fauteuil roulant, ou autre, il est nécessaire de définir un paradigme expérimental. En d'autre termes : la manière dont les signaux cérébraux vont être exploités au sein de l'interface. Il est possible de distinguer deux grandes catégories d'interfaces BCI dans ce cas : les interfaces synchrones et les interfaces asynchrones.

Classification

A l'issue de la phase de traitement précédemment décrite, nous disposons d'un ensemble d'attributs mesurés sur les signaux à intervalles réguliers (tous les dixièmes de seconde). A partir de ces vecteurs d'attributs, il s'agit d'identifier le type de mouvement réalisé ou imaginé(dans le cas d'une interface asynchrone) ou de décider si le sujet a répondu positivement au stimulus ou non (dans le cas d'une interface synchrone).

Il s'agit donc de décider si le vecteur d'attributs considéré est caractéristique d'un mouvement ou d'une réponse positive au stimulus. Ceci est le propre de ce que l'on appelle la classification.

Il existe deux grandes familles de techniques de classification : la classification supervisée et la classification non supervisée. La classification non supervisée consiste à prendre une décision d'identification sans aucune connaissance à priori sur les vecteurs d'attributs (ou éléments) à classer.

La classification supervisée part de la connaissance à priori des éléments que l'on vise à identifier et se décline en deux phases successives :

Offline Une phase d'apprentissage basée sur l'analyse d'éléments connus et parfaitement identifiés. Il s'agit alors d'ajuster les paramètres du classifieur en fonction des éléments à priori identifiés

Online Une phase de classement des éléments inconnus en utilisant le classifieur paramétré dans la phase précédente.


Dans le domaine des interfaces BCI, les techniques de classification les plus utilisées sont de type supervisées. Les plus courantes :

-LDA

-Les réseaux de neurones

-La classification floue


Cette étape a pour but d'exploiter les éléments caractéristiques extraits précédemment. Les méthodes choisies dépendent du type d'interface, on distinguera deux types d'interfaces: synchrones ou asynchrones. Le logiciel remplissant cette fonction a été développé par l'INRIA, il s'agit d'OpenVibe.

Commande

Le résultat de la classification des attributs extraits des signaux cérébraux st généralement mise sous forme de décision binaire. Par exemple : "Y a t il imagination de mouvement de la main droite?" Résultat : "Oui ou Non". Nous pouvons alors relier ce résultat à la partie opérative de l'interface et piloter ainsi un actionneur. Le nombre d'actionneur devant bien sur être adapté à l'interface qui les exploitera.

Interfaces BCI Existantes

Interface Synchrone

Doc BoxAlgorithm P300SpellerVisualisation Snapshot.png

Des applications ont déjà été créées pour permettre à une personne complètement immobile de communiquer ou de se déplacer. En terme d'interface de communication, le P300 Speller qui est basé sur la détection de potentiels endogènes évoqués, signaux correspondant à une activité cognitive. Cette interface permet à un sujet entraîné d’écrire plusieurs caractères par minute. Le principe est simple: le sujet regarde une matrice de caractères dont les colonnes et les lignes sont mises en surbrillance de manière aléatoire, il doit alors se concentrer sur le caractère qu'il veut écrire et compter son nombre d'illuminations. A chaque fois que la lettre est comptée une modifications des signaux se produit 300ms plus tard. Il est ainsi possible de détecter la colonne et la ligne sur lesquelles se situe le caractère intéressant. Après plusieurs scintillement on peut donc connaître la lettre choisi par le patient.


Online-shooter.png
Il existe également tout un ensemble d'interface développées à partir de l'analyse et l'interprétation des signaux SSVEP (Steady-State Visual Evoked Potential). Ceux-ci ne sont pas générés par une action cognitive mais inconsciemment par notre cerveau. Lorsque nous regardons un objet clignotant sur l’écran, on retrouve la fréquence de ce clignotement sur notre lobe occipital. Ainsi, en créant une interface graphique constituée de plusieurs objets clignotants à différentes fréquences (de l'ordre de quelques dizaines de hertz), et en analysant les signaux évoqués, on peut reconnaitre l'objet observé par le sujet. Cette technique basée sur l'analyse de signaux reflexes s'avère très efficace et ne nécessite aucune phase d'apprentissage. L'exemple ci dessous pourrait représenter l'écran de saisie des commandes de pilotage d'un fauteuil roulant. Les deux carrés pourraient représenter une demande de rotation gauche ou droite tandis que le triangle représenterait une demande de marche avant.
MuseumImmersive1.jpg



Interface Asynchrone

La dernière technique est la plus complexe mais aussi celle avec le plus grand potentiel. Elle consiste à analyser les signaux cérébraux en vue de détecter la réalisation ou l'imagination de mouvements de différentes parties du corps. Dans notre cas, ce sont les mouvements des deux mains et des pieds qui sont exploités car plus présents au niveau du cortex moteur et donc plus faciles à détecter. L'identification de ces mouvements fournit donc un total de 3 commandes complètement indépendantes de toute stimulation extérieure. On ne peut prévoir à l'avance quand le sujet décidera d'imaginer un mouvement d'une des parties de son corps. Ce paradigme a déjà été exploité par l'INRIA de Rennes pour diriger un avatar dans un espace 3D virtuel matérialisant une visite virtuelle d'un musée. Les signaux correspondant aux mouvements de la main droite sont utilisés pour tourner à droite, ceux de la main gauche pour tourner à gauche et les mouvements des pieds pour avancer.


Des applications interfaces BCI ont aussi été développées pour commander des prothèses ou des fauteuils roulants. En effet, des expériences ont été menées avec succès sur un patient équipé d'une interface non invasive. Il a réussi à contrôler une main robotique grâce à l'analyse de ses rythmes sensorimoteurs, exploités pour détecter l'imagination de mouvement de la main. Ces essais ont été fais sur des personnes valides mais on peut imaginer les possibilités qui s'offrent à des personnes paralysées ou amputées.

Objectif :

Formulation des besoins

Main3d.jpg

Notre projet consiste au développement de l'interface graphique 3D d'une BCI, de type asynchrone basée su l'analyse de mouvements, réels ou imaginés, fournissant à l'utilisateur un feedback visuel ds commandes qu'il effectue. L'interface doit être composée de 2 couches graphiques dissociables :

- Une couche que nous appelons "la couche Feedback" : c'est la couche est au premier-plan. Elle affichera un avatar virtuel qui va exécuter le mouvement réel ou imaginé par le sujet. Par exemple, dans le cas d'un mouvement imaginé de la main, nous devons représenter graphiquement une main exécutant le mouvement imaginé par le sujet. Il peut s'agir d'une rotation du poignet, d'un mouvement de préhension, de mouvements des doigts etc. La visualisation du mouvement que le sujet imagine (le feedback) permettra peut-être un apprentissage de l'interface dit plus aisé pour le sujet mais on doit essayer de s'assurer qu'il ne soit pas un élément perturbateur. Nos inquiétudes sont fondées sur le même principe que l'instabilité des systèmes bouclés en général. On ne peut pas être certain qu'en observant son avatar à l'écran, le cerveau du sujet ne génère pas les sinusaux électriques correspondant au mouvement qu'il observe.

Piano 3d.jpg

- Une couche ludique : celle-ci se situe au second-plan. Elle présente un objectif à réaliser par l'utilisateur en cohérence avec l'action imaginée et représentée par l'avatar. On peut par exemple imaginer un clavier de piano dans le cas d'un mouvement des doigts, d'un ballon qui se gonfle dans le cas de mouvements de préhension répétés.L'objectif permet de créer une forte motivation de l'utilisateur qui facilitera inconsciemment sa concentration. Par exemple : Si le mouvement imaginé par le sujet est de fermer et d'ouvrir la main, on sélectionnera une interface montrant par exemple une main actionnant une pompe et un arrière plan, des ballons à gonfler. Ou encore, avec un mouvement de doigt tapoter sur une table, on choisira d'avantage un piano en arrière plan joué par cette/ces main(s), ou même, avec un mouvement de serrage de vis avec la main, un meuble à monter le plus rapidement possible.

Ces couches doivent être affichables une par une ou en même temps. Le but est de pouvoir analyser l'impact du feedback sur les performances du sujet lors l'utilisation de l'interface BCI. Ainsi que de fournir au sujet un feedback "réaliste" des mouvements qu'il réalise ou imagine plutôt qu'un curseur sur un graphique.

Piano main 3d.jpg

Spécifications

Au sein de l'équipe BCI du LAGIS, les outils de développement les plus utilisés sont  :

-MatLab : Pour le traitement des signaux.

-OpenVibe : Logiciel dédié BCI développé par l'INRIA de Rennes, pour la partie acquisition, traitement et feedback visuel.

-C++ : Pour le développement des blocs OpenVibe additionnels

Les contraintes à respecter dans le cadre de notre projet sont les suivantes :

-Respect et/ou compatibilité avec les technologies utilisées : Compatibilité de l'interface graphique avec OpenVibe. Compatibilité entre l'application et le nombre de signaux de commandes en sortie d'OpenVibe (main gauche, main droite, pieds, repos).

-Grande configurabilité : Ne connaissant pas l'utilisateur qui va utiliser le système, il doit être le plus personnalisable possible. Le but est que chacun puisse s'identifier à notre application pour obtenir les meilleurs résultats possibles. Cela implique donc d'assurer une grande configurabilité des objectifs pour l'utilisateur mais aussi de la manière d'afficher la complétion de ces objectifs et ses performances. Enfin il est important d'assurer une grande configurabilité du mouvement du feedback pour le rendre plus cohérent possible avec celui du sujet.

-Facilité de configuration : l'utilisateur doit pouvoir changer les options facilement et rapidement.

-Modulation du programme : le code source doit être le plus générique possible, documenté, commenté et le plus facilement modifiable possible.

Étude des différents moteurs graphiques 3D

Spécifications

Les contraintes de choix du moteur 3D sont les suivantes par ordre de priorités décroissantes :

-Compatibilité avec le VRPN de Openvibe

-Permettre le développement multiplateforme (Linux, Windows, MacOS)

-Simplicité de développement

-Ressources nécessaires pour le mettre en œuvre minimisées

-Rendu visuel de qualité

Choix d'un moteur

Moteur Jeux Vidéos Grand Public

Les moteurs suivants sont utilisés par les développeurs de jeux vidéos actuels. Leurs rendus graphiques sont les meilleurs, donc nous n'avons analysé en premier lieu que leurs autres caractéristiques :

-Anvil (Assassin's Creed) : License propriétaire privée d'Ubisoft, impossible d'acheter le DK

-CryEngine (Crysis) : Gratuit pour une utilisation non commerciale

-Dunia Engine (Farcry) : Non distribué

-Frostbite (Battlefield) : Non distribué

-Havok (Halo) :

-Hero Engine (Star Wars : Old Republic)

-Quest3D (Audiosurf)

-Source (Portal) : Non distribué

-Unreal Engine (Borderlands)

La plupart de ces moteurs sont très performants, ce qui implique l'utilisation de machines suffisamment puissantes pour les mettre en œuvre. De plus, certains sont conçus exclusivement pour du développement de jeu pour console de salon. Même si leur complexité de programmation est tout aussi abordable que les autres, nous ne pouvons pas choisir ces derniers.

Etude Comparative des Moteurs Graphiques

-Outerra : Ce moteur permet surtout la génération d'immenses espaces 3D jusqu'à des planètes entières. Le rendu global est effectivement très joli mais les détails de petits éléments sont assez simplistes. Ce moteur n'est donc pas du tout adapté à notre projet.

Engines.png


Choix final

Blender logo.jpg

Après cette étude nous avons retenus Blender car il permet un développement très performant et rapide de model 3D réalistes. Nous comptons utiliser son moteur de jeu BlenderGame qui permet des interactions avec les models pour faire fonctionner nos interfaces. La difficulté que cela soulève est l'absence de VRPN dans ce moteur. Outil qui permet la communication entre un système tier et une interface de réalité virtuel. La suite va donc consister à interfacer Blender et Openvibe

Développement d'une interface logicielle OpenVibe <-> Blender

Blender-Openvibe.png

Gestion de Projet et Sources

Planning

Gant PFE BCI.png

Présentation Mi-PFE

10/12/2013

Présentation

27/02/2014

Bibliographie

OpenVibe

http://openvibe.inria.fr/

http://openvibe.inria.fr/tag/vrpn/

http://openvibe.inria.fr/documentation-index/#User+Documentation

Moteur 3D

https://fr.wikipedia.org/wiki/Moteur_3D

http://www.desura.com/search?q=engine+3d&sa.x=0&sa.y=0

http://www.ogre3d.fr/

http://www.blender.org/education-help/tutorials/game-engine/


http://www.outerra.com/forum/index.php?topic=637.0

http://jeux.developpez.com/tutoriels/?page=prog-3d#ogre-3d

http://mycryengine.com/index.php?conid=70

http://www.havok.com/try-havok

http://www.desura.com/engines/unreal-development-kit/downloads/udk

http://www.truevision3d.com/downloads.php

http://hub.jmonkeyengine.org/

http://www.neoaxis.com/neoaxis/licensing

http://www.shivaengine.com/download.html

http://unity3d.com/unity/download

https://store.unity3d.com/

http://www.twinmotion.com/acheter.html

http://www.worldofleveldesign.com/categories/level_design_tutorials/recommended-game-engines.php

EEG

http://openeeg.sourceforge.net/doc/sw/

http://www.emotiv.com/store/app.php

Autres Projets BCI

http://air.imag.fr/index.php/Armind

Annexe

Journal

Entrée 1

Installation de OpenVibe (en deux fois pour le rendre fonctionnel)

Entrée 2

Réalisation de l'ensemble des tutoriels disponibles sur le site de l'INRIA mais malheureusement, cela ne nous a pas amené jusqu'à l'utilisation du VRPN. Nous Projetons maintenant d'étudier les moteurs graphiques 3D existant pour en choisir un pour notre développement.

Entrée 3

Installation de Ogre. Nécessite un IDE ainsi qu'un compilateur (Comblock + MinGW pour Windows)

Configuration : Installation de MinGW à la racine de C:/ Installation de Ogre Installation de Comblock Problème pour compiller