--- id: wiki-2026-0508-neuroergonomics title: Neuroergonomics category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Neuro-Ergonomics, Brain at Work, Cognitive Ergonomics] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [neuroergonomics, hci, cognitive-load, fnirs, eeg] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: python framework: mne-python --- # Neuroergonomics ## 매 한 줄 > **"매 brain at work — 매 neural signals 의 measure, 매 system 의 adapt"**. 매 2003 Parasuraman 의 coin, 매 fNIRS/EEG/eye-tracking 의 mature. 매 2026 의 closed-loop adaptive systems (cockpits, surgery, AR work) 의 deploy. ## 매 핵심 ### 매 measurement modalities - **EEG**: 매 ms-level temporal resolution. 매 cognitive load 의 alpha-suppression / theta-Fz 의 marker. - **fNIRS**: 매 cortex hemodynamics. 매 portable, motion-tolerant — 매 real-world 의 work. - **Eye tracking**: 매 fixation duration, pupil dilation — 매 mental effort 의 proxy. - **HRV / GSR**: 매 ANS arousal — 매 stress / engagement. ### 매 cognitive states 의 detect - **Workload**: 매 over-load → 매 error spike. 매 under-load → 매 vigilance drop. - **Vigilance / fatigue**: 매 P300 amplitude decline + theta increase. - **Engagement / flow**: 매 mid-frontal theta + alpha asymmetry. ### 매 응용 1. 매 adaptive cockpit (Airbus, Honeywell): 매 pilot workload 의 high → 매 secondary task 의 defer. 2. 매 surgical training: 매 trainee fNIRS prefrontal 의 over-activation = novice marker. 3. 매 driver-state monitoring (Tesla v13, Mercedes Drive Pilot): 매 EEG drowsiness 의 detect. ## 💻 패턴 ### EEG workload index (theta/alpha ratio) ```python import mne, numpy as np raw = mne.io.read_raw_brainvision('subj.vhdr', preload=True) raw.filter(1, 40) psd = raw.compute_psd(fmin=4, fmax=12, picks=['Fz', 'Pz']) freqs = psd.freqs power = psd.get_data() # (channels, freqs) theta = power[:, (freqs >= 4) & (freqs < 8)].mean(axis=1) alpha = power[:, (freqs >= 8) & (freqs < 13)].mean(axis=1) workload_index = theta / alpha # higher = more load ``` ### fNIRS prefrontal activation (MNE-NIRS) ```python from mne_nirs.experimental_design import make_first_level_design_matrix from mne_nirs.statistics import run_glm raw_haemo = mne.preprocessing.nirs.beer_lambert_law(raw_od, ppf=0.1) design = make_first_level_design_matrix(raw_haemo, drift_model='cosine') glm = run_glm(raw_haemo, design) # beta for HbO in PFC channels = task-evoked activation pfc_activation = glm.to_dataframe().query("ch_name.str.contains('S1_D1') & Chroma=='hbo'") ``` ### Pupil-based effort (PsychoPy + Pupil Labs) ```python import zmq, msgpack ctx = zmq.Context(); sub = ctx.socket(zmq.SUB) sub.connect('tcp://127.0.0.1:50020'); sub.setsockopt_string(zmq.SUBSCRIBE, 'pupil') while True: topic, payload = sub.recv_multipart() msg = msgpack.unpackb(payload) if msg['confidence'] > 0.8: diameter_mm = msg['diameter_3d'] # baseline-corrected pupil dilation = effort proxy ``` ### Closed-loop adaptive UI (workload-triggered) ```python class AdaptiveDashboard: def tick(self, workload_idx: float): if workload_idx > 1.5: # high load self.hide_secondary_widgets() self.enlarge_primary_alert() elif workload_idx < 0.6: # under-load → boredom self.inject_status_check() else: self.restore_default() ``` ### Drowsiness detector (real-time EEG) ```python from scipy.signal import welch def is_drowsy(eeg_window, fs=256): f, P = welch(eeg_window, fs=fs, nperseg=fs*2) theta = P[(f>=4)&(f<8)].mean() beta = P[(f>=13)&(f<30)].mean() return (theta / beta) > 4.0 # KSS-validated threshold ``` ### NASA-TLX subjective + neural fusion ```python def fused_workload(neural_idx: float, tlx_score: float) -> float: # weight neural higher when within-subject calibrated return 0.6 * neural_idx_z + 0.4 * (tlx_score / 100) ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Lab, high precision needed | EEG (32-64ch) + eye-track | | Field / mobile work | fNIRS + wearable HRV | | Driver / pilot | Webcam-pupil + steering-entropy + PERCLOS | | Long shift fatigue | Actigraphy + HRV + PVT | **기본값**: fNIRS + eye-tracking — 매 real-world ecological validity 의 best. ## 🔗 Graph - 변형: [[Affective-Computing]] · [[Brain-Computer-Interface]] ## 🤖 LLM 활용 **언제**: 매 study design review, 매 GLM script generation, 매 multimodal-feature engineering, 매 paper synthesis. **언제 X**: 매 raw artifact rejection, 매 individual-subject calibration — 매 expert review 의 require. ## ❌ 안티패턴 - **Single-modality reliance**: 매 EEG-only 의 motion artifact 에 fragile. 매 fusion 의 require. - **No baseline**: 매 absolute power 의 between-subject 의 noisy. 매 within-subject z-score 의 use. - **Open-loop dashboard**: 매 measure-but-not-act → 매 value 의 zero. 매 closed-loop 의 design. - **No personalization**: 매 group-mean threshold 의 50% individuals 에 wrong. ## 🧪 검증 / 중복 - Verified (Parasuraman & Rizzo 2007 *Neuroergonomics*; Ayaz & Dehais 2019). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — modalities + closed-loop adaptive patterns |