BCI : Interface Cerveau Ordinateur

De Wiki de Projets IMA
Révision datée du 5 novembre 2013 à 16:05 par Cmonteir (discussion | contributions) (Formulation des besoins)

Présentation

Contexte :

Ce projet est réalisé en collaboration avec l'équipe du LAGIS. Le but premier 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 n'affectant en aucun cas les fonctions cérébrales, cette technologie semble pouvoir devenir LA solution pour pallier au handicap.

Voilà ce que fait la machine cerveau ordinateur (BMI : Brain Machine Interface) de façon détaillée : Les signaux électroencéphalographiques (EEG) sont récupérés, numérisés et traités pour pouvoir ensuite les transformer 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

Les signaux EEG peuvent être récupérés différentes manières :

- La première est non intrusive, 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é sur la tête on peut récupérer les faibles signaux cérébraux passant à travers la boite crânienne. L'ordre de grandeur de ces signaux électriques ne dépassant pas le microvolt, cette méthode n'est pas la plus fiable mais ce dispositif est plus simple à mettre en œuvre et peut être utilisé sur n'importe qui et notamment lors d'une phase expérimentale qu'est la notre.

- La seconde est semi-intrusive, l’électrode servant à l'acquisition des signaux est implanté sous la surface de la boite crânienne (ECoG : électrocorticogramme). Cette méthode permet d'augmenter considérablement la qualité des signaux qui sont fortement dégradé par leur traversée de la dure-mère. Et elle présente assez peu de risque contrairement à la prochaine.

- La dernière est intrusive, cette fois-ci on vient placer des implants directement dans la masse cérébrale. Cette méthode a deja fait ses preuves, en 2005 un patient tétraplégique avait été capable de contrôler une prothèse robotique grâce à ce dispositif.

On récupère dans notre cas les activités ipsilatérales ainsi que contralatérales du cortex pré-moteur. Les signaux électriques du coté du cerveau opposé à celui du mouvement (contralatéraux) sont généralement plus francs mais il est préférable d'analyser le plus d'informations possible. Une autre méthode consiste à détecter des signaux résultant de stimuli extérieurs connus (ERP : Event Related Potentials)


Traitement des signaux EEG

L'objectif du traitement est d'extraire un certains nombre d'attributs qui pourront ensuite servir de commandes pour une quelconque interface. Il est effectué par un logiciel d'analyse numérique comme MatLab.

Les données nous intéressant sont les amplitudes, fréquences ou phases des signaux cérébraux transmettant l'information aux parties du corps à mouvoir. Exemple, l'amplitude du rythme µ (entre 8Hz et 15Hz) varie fortement lors d'un mouvement d'une partie du corps, mais aussi pendant l'imagination de ce mouvement. Dans le même contexte on peut observer des impulsions dans la bande ß (entre 15Hz et 35Hz) occurrentes juste après un mouvement. Ces signaux sont toujours très bref 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 induit par une autre activité corporel que celle observée) ainsi que l'amélioration du rapport signal sur bruit, bruit venant de tous les signaux a proximité autant dire de tout les neurones à proximité donc quelques millions par point de mesure. Pour ce faire, différentes techniques sont mise en œuvre :

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

-Filtrage fréquentiel : Sachant que les signaux nous intéressants sont situés dans la bande 8Hz à 35Hz il convient de filtrer les fréquences parasites.

Classification

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.

-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. Donc pour pouvoir détecter, par exemple, l'imagination du mouvement de la main droite, on procède à une longue phase d'apprentissage. Cette apprentissage sert autant à l'utilisateur qu'à la machine. L'utilisateur se concentre sur le mouvement qui nous intéresse en essayant de ne pas disperser son activité cérébral. Et la machine peut ainsi identifier le motif récurent correspondant au mouvement.

Commande

De l'étape précédente, nous avons donc à notre à disposition une information binaire par observation. Par exemple : "Y a t il imagination de mouvement de la main droite?" "Oui ou Non". Et nous pouvons donc relier cette information à l'interface en tant qu'actionneur. Le nombre d'actionneur devant bien sur être adapté à l'interface qui les exploitera.

Interfaces

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. Pour exemple le P300 Speller qui est basé sur la détection de potentiels endogènes évoqués, signaux correspondant à une activité cognitive, permet à un sujet entraîné d’écrire plusieurs caractères par minutes. Le principe est simple, le sujet regarde une matrice de caractère 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'illumination. A chaque fois que la lettre est compté des signaux peuvent être détectées 300ms plus tard. Après plusieurs scintillement on peut donc connaître la lettre choisi par le sujet


Online-shooter.png
Une autre technique est 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 observons un objet clignotant sur l’écran, on retrouve la fréquence de ce clignotement sur notre lobe occipitale. Ainsi, en créant une interface constituée de plusieurs objets clignotants à différentes fréquences, et en observant les signaux évoqués, on peut connaitre l'objet observé par le sujet. Aujourd'hui, cette technique est encore très jeune est n'en est qu'à sa phase expérimentale mais on peut imaginer cette technique mise en œuvre pour diriger un fauteuil roulant avec trois commandes : rotation gauche, rotation droite et marche avant.
MuseumImmersive1.jpg




La dernière technique est la plus complexe mais aussi celle avec le plus grand potentiel, elle consiste à analyser les signaux de volonté ou d'imagination de mouvement de différentes parties du corps. Dans notre cas, ce sont les mouvements des deux mains et des pieds qui seront exploités car plus présent et donc plus facile à récupérer. Ceux ci fournissent 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. Cette option a été exploitée pour diriger un avatar virtuel dans un espace 3D virtuel en exploitant les signaux correspondant aux mouvements de la main droite pour tourner à droite, de la main gauche pour tourner à gauche et des pieds pour avancer.


Il existe aussi des interfaces physiques comme des prothèses ou des fauteuils roulants. Des expériences ont été menées avec succès sur un patient équipé d'une interface non intrusive. Il a réussi à contrôler une main robotique grâce à l'analyse de ses rythmes sensorimoteurs, donc sur des signaux permettant de détecter l'imagination de mouvement de la main. Ces essais ont été fais sur des personnes valides mais on peut imaginer les possibilité qui s'offre à des personnes paralysés ou amputés.


Objectif :

Formulation des besoins

Notre projet consiste au développement de l'interface graphique d'une BCI. L'interface doit être composée de 2 couches graphiques dissociables :

- Une couche Feedback : c'est la couche supérieure, elle affichera un avatar virtuel du 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. Ce feedback permet un apprentissage plus aisé pour l'utilisateur mais ne doit pas être un élément perturbateur.

- Une couche ludique : cette couche se situe derrière la précédente. Elle présente un objectif à réaliser par l'utilisateur en cohérence avec l'action imaginé et représenté par l'avatar. L'objectif permet de créer une forte motivation de l'utilisateur qui facilitera inconsciemment sa concentration.


Le but est de pouvoir observer dans quel cas on obtient les meilleures résultats et ainsi de pouvoir les exploiter plus tard. Par exemple, on peut imaginer un mouvement de serrage de vis avec la main. En paramétrant l'interface, on affiche donc ce mouvement sur l'avatar. Et sur l'arrière plan, l'objectif et de monter un meuble le plus rapidement possible.

Spécifications

Les contraintes à respecter sont les suivantes :

-Respect et/ou compatibilité avec les technologies utilisées : Compatibilité de l'interface graphique avec OpenVibe. Compatibilité entre l'application et les signaux EEG utilisés, dans notre cas, principalement les électrodes C3 C4 et CZ correspondant respectivement aux mouvements de la main droite de la main gauche et des pieds mais aussi les signaux du lobe occipitale correspondant à la vision pour l'utilisation de SSVEP (Steady-State Visual Evoked Potential)

-Grande configurabilité : Ne connaissant pas l'utilisateur qui viendra 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. Configurabilité des objectifs pour l'utilisateur ainsi que la manière d'afficher la complétion de ces objectifs et ses performances. ET configurabilité du mouvement du feedback pour le rendre plus cohérent avec celui de l'utilisateur.

-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

Ogre logo.jpgBlender logo.jpg

Après cette étude nous avons retenus seulement Ogre3D et Blender car ils sont les seuls à satisfaire suffisamment nos critères. Il semblerait qu'une cohabitation entre les deux moteurs soit possible mais nous ne savons pas encore exactement dans quelle mesure. Nous avons donc décider d'utiliser ces deux moteurs graphiques pour la réalisation de notre projet.

Gestion de Projet et Sources

Planning

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

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