In Progress
Device-Agnostic sEMG (open-sEMG-16 + Domain-General Pose Encoder)
Recent advances in surface electromyography (sEMG) decoding, such as Meta’s EMG2Pose, EMG2QWERTY datasets, and their associated pretrained models, have demonstrated high-accuracy hand-pose and typing reconstruction. However, these breakthroughs rely on Meta’s proprietary acquisition hardware (sEMG-RD), limiting reproducibility and broader utility for independent research and open development. This repo aims to make the hardware, data, model pipeline transparent, modifiable, and benchmarkable.
- Custom acquisition hardware (open-sEMG-16): a 16-channel, high-fidelity, wrist-wearable sEMG platform built from commercially available components, with design files + firmware to enable end-to-end reproducibility.
- A device-/domain-robust encoder model that maps multi-channel muscular activity to hand pose (joint angles / kinematic representation), with an explicit focus on out-of-domain generalization across:
- unseen users (anatomical variation),
- electrode shifts / rotations / contact changes,
- session-to-session drift,
- dataset / protocol mismatch.
High-level modules (see top-level folders):
Hardware/— open-sEMG-16 hardware stack (schematics/PCB, electrode layout, enclosure notes, firmware hooks, bring-up docs).src/— acquisition + preprocessing utilities (streaming, windowing, filtering, normalization, dataset I/O, evaluation harness).data/— dataset organization, conversion scripts, and format docs (raw → aligned → windowed → model-ready).hand-joint-labeling/— tooling for pose labeling / alignment (e.g., joint definitions, coordinate frames, annotation utilities).LUNA/— encoder model code (feature encoder + pose head) and training/eval entrypoints.
Status: still in active development; APIs and folder contents may shift. We aim to keep experiments config-driven and results reproducible as the codebase stabilizes.
Acquisition to Dataset to Model: End-to-End Pipeline
This repo is organized around a reproducible pipeline:
1) Acquisition & Streaming
- synchronized multi-channel sampling
- timestamping + packetization
- stream integrity checks (drop detection, reordering, CRC if available)
- host-side capture and persistent storage
2) Signal Processing
- band-pass filtering (and optional notch)
- per-channel normalization (robust stats recommended)
- windowing (fixed-length frames with overlap)
- optional time–frequency transforms (e.g., STFT / filterbanks) for encoder variants
- augmentation hooks to simulate electrode shift / noise / drift
3) Label Alignment (pose supervision)
- consistent hand model definition (joint ordering, DoFs, coordinate frame)
- alignment utilities for pose timestamps vs EMG timestamps
- split generation for cross-user / cross-session / cross-placement evaluation
4) Encoder + Pose Head
We focus on an encoder that learns a shift-tolerant representation of sEMG:
Input: X ∈ R^{C×T} (C channels, T samples)
Encoder: temporal feature extractor + cross-channel mixing
Head: regression to pose representation (joint angles / keypoints / low-dim hand state)
Contributors
- Katherine Lambert
- Emir Sahin
- Lia Brahami
- Karen Chen Lai
References
-
emg2pose: A Large and Diverse Benchmark for Surface Electromyographic Hand Pose Estimation (2024) https://arxiv.org/abs/2412.02725
-
emg2qwerty: A Large Dataset with Baselines for Touch Typing using Surface Electromyography (2024) https://arxiv.org/abs/2410.20081
-
A generic non-invasive neuromotor interface for human-computer interaction (Nature, 2025) https://www.nature.com/articles/s41586-025-09255-w
-
Meta blog: Advancing Neuromotor Interfaces by Open Sourcing sEMG Datasets (2024) https://ai.meta.com/blog/open-sourcing-surface-electromyography-datasets-neurips-2024/