Pressure Myography
Meets Machine Learning
Velostat pressure cells measure forearm pressure patterns while machine learning predicts individual finger movements: no EMG, no electrodes, no patents.
How It Works
Sense
Velostat pressure cells in a flexible grid detect pressure changes on the forearm as muscles contract. The current band, FlexGrid V4, uses a 15×4 array of 60 cells capturing the full pressure distribution.
Predict
A random forest trained on paired sensor and label data predicts individual finger positions from raw sensor readings alone. No feature engineering, just 60 raw values in: 4 piston positions out with the LASK5, or 15 finger angles per hand with Quest hand tracking.
Move
Predicted finger positions can drive a prosthetic hand in real time; today the released system draws them as a live ghost hand. The LASK5 or Meta Quest hand tracking provides ground truth during training, then the model runs independently on new sensor data.
The Current Band: FlexGrid V4
Two bands, one per forearm, stream to a PC at the same time, and two labelers supply the ground truth.
The band
Two labelers
Meta Quest 3S hand tracking
Both hands as 25-joint poses at about 25 Hz, with nothing worn on the hand. This labeled the FlexGrid V4 recordings in the open dataset.
LASK5 handheld labeler
Four spring-loaded pistons, one per long finger, that the fingers press. Each piston position is a repeatable label. The LASK5 data was recorded in May 2026 on the earlier V3 band; no V4 recording is LASK5-labeled yet.
How well it works: the generalization ladder
One deliberately simple model (a random forest per hand, 60 raw cell values in, 15 finger targets out), tested four ways. Flexion MAE is the error as a fraction of full curl, so lower is better. Two wearers and four sessions, so the cross-wearer rung is directional, not definitive.
| Rung | Protocol | Flexion MAE |
|---|---|---|
| E1 | Within one session, random 80/20 split | 0.043 |
| E2 | Within one session, temporal split (train on the first 80% of the timeline) | 0.110 |
| E3 | Across sessions, same wearer (band re-donned) | 0.24 |
| E4 | Across wearers | 0.27 |
A random split flatters the model about 2.6×, because neighbouring frames at 17 to 19 Hz are near-duplicates. Taking the band off and putting it back on costs about as much as changing wearer.
Real Sensor Data → Finger Prediction
The 2025 prototype wraps 64 pressure sensors (4×16) around the forearm, detecting muscle topology changes. The ML model predicts finger positions from sensor data alone, replayed here on 683 holdout samples from one session: data the model never saw during training.
Sensor → ML → Finger Prediction
Actual (LASK5)
Predicted (ML)
Radial Polar View
Hexagonal Grid
Finger Prediction Accuracy
Blue is ground truth from the LASK5 pistons. Orange is what the ML model predicted from sensor data alone. Select a finger to compare.
2025 FlexGrid prototype: Actual vs Predicted
OM-12 SensorBand: Actual vs Predicted
Model Selection
Six algorithms evaluated on the same train/test split of the 2025 prototype data. ExtraTrees won with the best balance across all four fingers, especially the harder-to-predict pinky (label_3).
Model Comparison (2025 prototype)
R² score on held-out samples from one 2025 prototype session. Higher is better. ExtraTrees selected as best overall performer.
Devices
FlexGrid V4 (current)
A 15×4 grid of 60 Velostat pressure-sensing cells on a flexible sheet, read by a small ESP32-S3 board with a 6-axis IMU. V4 is the current board (fabricated June 2026): Wi-Fi setup from a phone, a status light, and a PC app that records, trains and predicts.
Have one? Getting started, kit cheat sheet, band reference.
2025 FlexGrid prototype
An early FlexGrid board with a 4×16 grid of 64 cells. Its single-session results are the ones plotted above.
OM-12 SensorBand (earlier generation)
3 SensorBand banks with 4 Hall-effect sensors each. Legacy wearable form factor, the original proof-of-concept device.
Methodology
Data Capture
Sensor packets received over UDP and paired by timestamp with labels from the LASK5 or Meta Quest hand tracking
CSV Export
Paired data saved with sensor columns and label columns (label_0 through label_3)
Train/Test Split
Holdout data kept completely separate — never seen during training
Model Training
Tree-based regressors trained on sensor-to-label mapping (raw values, no feature engineering)
Inference & Export
Trained model predicts labels from holdout sensor data; results exported as JSON for visualization