PARTIE IV : Interfaces cerveau-ordinateur

Chapitre 7 : BCI, EEG et neurofeedback pour le FullDive

7.1 Introduction : le rêve du FullDive

Le concept de FullDive, une immersion sensorielle totale où l’utilisateur ne perçoit plus la frontière entre le monde réel et le monde virtuel, est le Graal du projet LplKernel. Ce chapitre détaille les fondements scientifiques, le matériel, le logiciel et les algorithmes mathématiques nécessaires pour construire un système de neurofeedback capable de lire l’activité cérébrale et d’adapter l’expérience VR en conséquence.1

7.2 Fondements de neurophysiologie

7.2.1 L’électroencéphalogramme (EEG)

L’EEG mesure les potentiels électriques générés par l’activité synchronisée de millions de neurones corticaux. Les signaux sont captés par des électrodes placées sur le scalp, typiquement selon le système international 10-20 (21 positions standardisées : Fp1, Fp2, F3, F4, C3, C4, P3, P4, O1, O2, T3, T4, etc.).2

L’amplitude des signaux EEG est extrêmement faible : 10 à 100 µV (microvolts), soit 10510^{-5} à 10410^{-4} volts. Cette faiblesse impose :

  • Des amplificateurs à haut gain (×10 000 minimum) avec un bruit inférieur à 1 µV RMS.
  • Un blindage électromagnétique contre les interférences environnementales (50/60 Hz secteur, Wi-Fi, Bluetooth).
  • Des ADC (convertisseurs analogique-numérique) de haute résolution (24 bits) pour capturer la subtilité du signal.

7.2.2 Les bandes de fréquence

L’activité cérébrale se décompose en bandes de fréquence distinctes, chacune corrélée à un état cognitif :

BandeFréquenceÉtat Cognitif Associé
Delta (δ)0.5-4 HzSommeil profond, inconscience
Theta (θ)4-8 HzSomnolence, méditation profonde, créativité
Alpha (α)8-13 HzRelaxation éveillée, yeux fermés
Mu (µ)8-12 HzRepos moteur (sensorimoteur, C3/C4), clé pour le Motor Imagery
Beta (β)13-30 HzConcentration, activité cognitive, alerte
Gamma (γ)30-100+ HzTraitement cognitif élevé, liaison perceptive

Les bandes Mu et Beta sont les plus pertinentes pour les BCI basées sur l’imagerie motrice (Motor Imagery). Lorsqu’un sujet imagine un mouvement de la main droite, la puissance de la bande Mu diminue (désynchronisation, ERD, Event-Related Desynchronization) au-dessus du cortex moteur gauche (électrode C3). Cette asymétrie est la base de la classification des intentions motrices.3

7.2.3 Les artefacts

Le signal EEG est contaminé par des artefacts, des signaux non cérébraux qui polluent les mesures :

  • EOG (ElectroOculoGramme) : Mouvements oculaires et clignements. Amplitude : 50-100 µV. Fréquence : 0-5 Hz. Visible principalement sur les électrodes frontales (Fp1, Fp2).
  • EMG (ElectroMyoGramme) : Tension musculaire (mâchoire, cou, front). Amplitude : 20-200 µV. Fréquence : 20-300 Hz. Se superpose aux bandes Beta et Gamma.
  • 50/60 Hz : interférence du réseau électrique, éliminée par un filtre notch.
  • Mouvement d’électrodes : variations de l’impédance de contact, particulièrement problématiques avec les électrodes sèches.

La suppression des artefacts est un prérequis avant toute analyse spectrale. Les techniques incluent : filtrage passe-bande (0.5-45 Hz), ICA (Independent Component Analysis) pour isoler et retirer les composantes oculaires, et seuillage d’amplitude pour rejeter les segments contaminés.

7.3 Matériel : OpenBCI et alternatives

7.3.1 La gamme OpenBCI

CarteCanaux EEGFréquence d’ÉchantillonnageADCApplication
Cyton8250 HzADS1299 (24 bits)Recherche standard, Motor Imagery
Cyton + Daisy16125 Hz par canal2× ADS1299Couverture complète 10-20
Ganglion4200 HzMCP3912 (24 bits)Prototypage rapide, neurofeedback basique

L’ADS1299 de Texas Instruments est le composant clé : un ADC sigma-delta 24 bits à 8 canaux, conçu spécifiquement pour le biopotentiel. Son rapport signal-bruit (SNR) de 120 dB permet de capturer les signaux EEG de l’ordre du microvolt avec une résolution suffisante pour l’analyse spectrale fine.4

Détails d’acquisition LplKernel (Cyton)

Pour l’intégration bare-metal sans dépendre de bibliothèques de haut niveau, le pilote LplKernel communique avec le dongle RFduino de l’OpenBCI via le bus UART émulé (puce FTDI). Le baudrate doit impérativement être fixé à 115200 bauds. L’émission du caractère ASCII b déclenche le flux binaire. Chaque trame de 33 octets (cadencée à 250 Hz) est interceptée par l’ISR matériel et insérée instantanément dans un SPSC Lock-Free Ring Buffer pour éviter l’écrasement du FIFO matériel du contrôleur 16550A.

7.3.2 Traitement du signal et état FPU (AVX)

Le traitement brut de ces trames EEG par des frameworks mathématiques fait massivement appel au calcul vectoriel pour exécuter des algorithmes de filtrage spatial (comme le CSP, Common Spatial Pattern). Ces calculs exploitent les registres étendus AVX/AVX-512 (YMM/ZMM).

Dans un OS classique, le changement de contexte gère cela. Dans LplKernel, il faut bien voir que l’instruction historique FXSAVE ne sauvegarde que les registres x87 et SSE. Lors de la préemption du thread BCI par l’ordonnanceur EDF, LplKernel doit donc utiliser l’instruction XSAVE (activée en positionnant le bit CR4.OSXSAVE et en configurant le masque XCR0) pour préserver l’intégrité des calculs vectoriels, sous peine de corrompre la classification des états cognitifs.

7.3.3 Le casque Galea

Le Galea (OpenBCI) est un casque intégré qui réunit EEG, EMG, EOG, EDA (activité électrodermale) et PPG (photopléthysmographie) dans un facteur de forme VR. C’est la convergence la plus aboutie entre le hardware BCI et la VR, et la cible matérielle principale du système FullDive de LplKernel.

7.3.4 Électrodes : sèches ou gel

  • Électrodes à gel (Ag/AgCl) : référence clinique. Impédance : 1-10 kΩ. Qualité de signal excellente. Préparation longue (~30 min) et inconfortable pour une utilisation quotidienne.
  • Électrodes sèches : impédance 50-200 kΩ. Signal plus bruité, mais mise en place instantanée : c’est ce qu’il faut pour une adoption grand public du BCI en VR.

7.4 Stack logiciel

7.4.1 BrainFlow

BrainFlow est une bibliothèque C++ multi-plateforme qui fournit une API unifiée pour l’acquisition de données BCI depuis de nombreux dispositifs (OpenBCI, Muse, NeuroSky, etc.). Elle gère :

  • La connexion matérielle (Bluetooth, série, Wi-Fi)
  • Le streaming en temps réel des échantillons
  • Le filtrage de base (bandpass, notch)
  • La sérialisation vers Lab Streaming Layer (LSL)5

7.4.2 Lab Streaming Layer (LSL)

LSL est un protocole de transport réseau conçu pour la synchronisation de flux de données physiologiques multi-modaux. Il résout un problème critique : synchroniser temporellement des flux provenant de sources différentes (EEG à 250 Hz, eye-tracking à 120 Hz, capteurs de mouvement à 90 Hz) avec une précision sub-milliseconde.

7.4.3 OpenViBE

OpenViBE est un environnement de développement visuel pour le BCI, développé par l’Inria. Il fournit :

  • Des boîtes de traitement du signal chaînables (filtres, CSP, classifieurs)
  • Un designer visuel pour construire des pipelines BCI sans programmation
  • Un format de plugin extensible en C++ pour l’intégration de traitements personnalisés

7.5 Métriques avancées de neurofeedback

7.5.1 Relaxation musculaire : la métrique de Schumacher

La métrique de Schumacher quantifie la tension musculaire résiduelle de l’utilisateur en analysant la puissance EMG haute fréquence dans les canaux EEG. Elle se calcule comme la moyenne de la densité spectrale de puissance (PSD) dans la bande 40-70 Hz (dominante EMG) sur tous les canaux :6

R(t)=1Nchi=1Nch4070PSDi(f,t)dfR(t) = \frac{1}{N_{ch}} \sum_{i=1}^{N_{ch}} \int_{40}^{70} PSD_i(f, t) \, df

Où :

  • NchN_{ch} est le nombre de canaux EEG
  • PSDi(f,t)PSD_i(f, t) est la densité spectrale de puissance du canal ii à l’instant tt
  • L’intégrale est calculée sur la bande EMG (40-70 Hz)

Un R(t)R(t) élevé indique une tension musculaire (l’utilisateur serre les mâchoires, fronce les sourcils, contracte le cou). Un R(t)R(t) faible indique une relaxation. Le système de neurofeedback peut encourager la relaxation en modifiant l’expérience VR (éclairage plus doux, musique apaisante, réduction de la complexité visuelle).

7.5.2 Stabilité EEG : la métrique de Sollfrank

La métrique de Sollfrank quantifie la stabilité temporelle du signal EEG en mesurant la distance statistique entre les matrices de covariance calculées sur des fenêtres temporelles successives. Si l’état cognitif de l’utilisateur est stable, les matrices de covariance varient peu ; s’il est distrait ou stressé, elles fluctuent.

La distance de Mahalanobis entre deux distributions multivariées sert de mesure de dissimilarité :7

DM(x,μ,Σ)=(xμ)TΣ1(xμ)D_M(\mathbf{x}, \boldsymbol{\mu}, \Sigma) = \sqrt{(\mathbf{x} - \boldsymbol{\mu})^T \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu})}

x\mathbf{x} est le vecteur de features courant, μ\boldsymbol{\mu} la moyenne d’une distribution de référence (calibration), et Σ\Sigma la matrice de covariance de cette distribution.

7.5.3 Géométrie riemannienne : AIRM

L’approche la plus avancée pour le BCI, c’est la géométrie riemannienne appliquée aux matrices de covariance spatiale des signaux EEG. Ces matrices de covariance sont des matrices symétriques définies positives (SPD), qui forment un espace géométrique non euclidien : une variété riemannienne.

La distance AIRM (Affine-Invariant Riemannian Metric) entre deux matrices SPD C1C_1 et C2C_2 est définie par :8

δR(C1,C2)=log(C11/2C2C11/2)F=i=1Nln2(λi)\delta_R(C_1, C_2) = \left\| \log\left(C_1^{-1/2} C_2 C_1^{-1/2}\right) \right\|_F = \sqrt{\sum_{i=1}^{N} \ln^2(\lambda_i)}

λi\lambda_i sont les valeurs propres de C11C2C_1^{-1} C_2, et F\|\cdot\|_F est la norme de Frobenius.

Pourquoi est-ce supérieur ? Les classifieurs BCI traditionnels (LDA, SVM) appliqués directement aux features spectrales opèrent dans un espace euclidien. Or les matrices de covariance ne vivent pas dans un espace euclidien : la moyenne arithmétique de deux matrices SPD n’est pas nécessairement SPD. La distance AIRM respecte la géométrie naturelle de l’espace des données, ce qui améliore la classification des états cognitifs de 10-20 % par rapport aux méthodes euclidiennes.8

Implémentation C++ avec Eigen :

#include <Eigen/Dense>
#include <Eigen/Eigenvalues>
#include <cmath>

using MatrixXd = Eigen::MatrixXd;

double RiemannianDistance(const MatrixXd& C1, const MatrixXd& C2) {
    // Calculer C1^{-1} * C2
    MatrixXd product = C1.inverse() * C2;

    // Décomposition en valeurs propres
    Eigen::EigenSolver<MatrixXd> solver(product);
    auto eigenvalues = solver.eigenvalues().real();

    // Distance = sqrt(sum(ln^2(lambda_i)))
    double sumLogSq = 0.0;
    for (int i = 0; i < eigenvalues.size(); ++i) {
        double logLambda = std::log(eigenvalues(i));
        sumLogSq += logLambda * logLambda;
    }
    return std::sqrt(sumLogSq);
}

7.6 Paradigmes d’entrée BCI

7.6.1 Motor Imagery (imagerie motrice)

L’utilisateur imagine un mouvement (main droite, main gauche, pieds) sans l’exécuter physiquement. Le système détecte la désynchronisation ERD dans les bandes Mu/Beta au-dessus du cortex moteur controlatéral. Taux de classification typique : 70-85 % pour un contrôle binaire (gauche/droite).

7.6.2 SSVEP (Steady-State Visually Evoked Potentials)

Des stimuli visuels clignotant à des fréquences différentes (par exemple, 10 Hz, 12 Hz, 15 Hz) induisent des réponses oscillatoires à ces mêmes fréquences dans le cortex visuel. En analysant le spectre des électrodes occipitales (O1, O2), le système détermine vers quel stimulus l’utilisateur regarde. Taux de classification : 90-99 %, le plus fiable des paradigmes BCI.

7.6.3 P300

Un stimulus rare (oddball paradigm) parmi des stimuli fréquents provoque une onde positive à ~300 ms dans les régions pariétales. Utilisé pour les claviers BCI (spellers) : l’utilisateur se concentre sur la lettre souhaitée parmi une grille de lettres clignotantes.

7.7 Stimulation sensorielle

7.7.1 GVS : stimulation vestibulaire galvanique

La GVS applique un courant électrique faible (1-2 mA) entre les mastoïdes (derrière les oreilles) pour stimuler le système vestibulaire. Effet : le sujet perçoit une inclinaison ou une accélération artificielle. Application FullDive : induire une sensation de mouvement dans l’environnement VR sans déplacement physique, la clé pour réduire le motion sickness.9

7.7.2 tDCS : stimulation transcrânienne à courant direct

La tDCS module l’excitabilité corticale via un courant continu faible (1-2 mA) appliqué entre deux électrodes. Application : faciliter l’apprentissage des paradigmes BCI en augmentant l’excitabilité du cortex moteur pendant les sessions d’entraînement.

7.7.3 tFUS : ultrasons transcrâniens focalisés

La tFUS utilise des ultrasons focalisés pour stimuler des régions cérébrales profondes avec une précision millimétrique, inaccessible à la tDCS qui ne pénètre que le cortex superficiel. Le protocole ITRUSST (International Transcranial Ultrasonic Stimulation Safety and Standards) définit les limites de sécurité.

7.8 Synthèse : architecture du pipeline BCI

graph TD
    A["OpenBCI (Cyton / Galea)
250 Hz"] --> B[BrainFlow] --> C[LSL] --> D["OpenViBE / Plugin C++"] D --> E["Filtering (0.5-45 Hz)
ICA (EOG removal)
CSP (Common Spatial Pattern)
PSD Extraction (FFT)"] E --> F["Metrics
Schumacher R(t) → Relaxation
Sollfrank D_M → Stability
AIRM δ_R → Classification"] F --> G["Ring Buffer SPSC Lock-Free"] G --> H["LplKernel Engine → VR Adaptation"]

Notes de bas de page du chapitre 7


Footnotes

  1. Le terme « FullDive » provient de l’anime Sword Art Online (2012), où les personnages s’immergent totalement dans un monde virtuel via un casque neural appelé NerveGear.

  2. H. Jasper, « The ten-twenty electrode system of the International Federation », Electroencephalography and Clinical Neurophysiology, 1958.

  3. G. Pfurtscheller & F.H. Lopes da Silva, « Event-related EEG/MEG synchronization and desynchronization: basic principles », Clinical Neurophysiology, 1999.

  4. Texas Instruments, « ADS1299 Low-Noise, 8-Channel, 24-Bit Analog Front-End for Biopotential Measurements », datasheet.

  5. BrainFlow documentation, brainflow.readthedocs.io.

  6. Schumacher et al., « Assessing muscle relaxation during neurofeedback », méthodologie de calcul de la tension EMG résiduelle.

  7. Sollfrank et al., « The effect of multimodal and enriched feedback on SMR-BCI performance », utilisation de la distance de Mahalanobis pour quantifier la stabilité du signal BCI.

  8. A. Barachant et al., « Multiclass Brain-Computer Interface Classification by Riemannian Geometry », IEEE Transactions on Biomedical Engineering, 2012. 2

  9. Fitzpatrick & Day, « Probing the human vestibular system with galvanic stimulation », Journal of Applied Physiology, 2004.