Real time stress classification
Fonctionnement:
Utilisation d'un passe-bande d'ordre 4 avec comme fréquences de coupures [0,8 Hz; 4 Hz], ce qui correspond à des fréquences cardiaques de 48 à 240 battements par minute 1) Filtrage du signal avec un passe-bande de butterworth
2) Détection des piques (pulsations cardiaques)
3) Extraction des intervalles de temps entre chaque pulsation (intervalle R-R)
4) Calcul des mesures de la variabilité cardiaque à partir des R-R
3 mesures temporelles:
BPM : nombre de battements par minutes
1 mesure fréquentielle:
Obtenue par transformée de fourier du tachogramme : la balance sympato-vagale (BSV)
BSV = LF/HF avec :
- LF: De 0.04 Hz à 0.15 Hz, reflète l’activité sympathique du système nerveux autonome.
- HF: De 0.15 Hz à 0.4 Hz, reflète l’activité parasympathique du système nerveux autonome
5) Injecte les mesures chaque seconde dans le modèle de classification
Les 4 mesures de la VFC sont les features de notre modèle de classification
Matériel:
- Raspberry pi 3B+ sous Raspbian
- Capteur ppg : pulse sensor
- Convertisseur analogique numérique MCP3008
Librairies:
- spidev==3.3
- numpy==1.13.3
- scipy==1.0.1
- matplotib==2.2.2
- Keras==2.0.5
- h5py==2.8.0
- Theano==1.0.2
- tensorflow==1.1.0
Codes:
- MCP3008.py: Code du convertisseur analogique numérique du même nom
- get_pulse.py: Code du capteur photopléthysmographique
- Stress_classification.py: Contient le code des mesures de la variabilité de la fréquence cardiaque en temps réel, mesures qui sont injectés dans un modèle de classification précédemment construit avec un réseau de neurones
- bandpass.py: Filtre passe bande de butterworth
- detect_peak.py: Algorithme de détection de piques