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

1

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.

2

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.

3

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

Sensing 15 x 4 grid, 60 Velostat pressure cells on a flexible PCB, about 12-bit readings
Controller ESP32-S3 on a small rigid board
Rate and link 17 to 19 Hz per band, streamed over Wi-Fi UDP
Motion 6-axis IMU on the band
Status Validated, fabricated June 2026

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.

Earlier results: The charts below replay the 2025 FlexGrid prototype and the older OM-12 band, not the current FlexGrid V4. They demonstrate that finger movement data can be extracted from pressure myography sensors using machine learning. These models were trained on very small datasets (1,669 samples from one session for the prototype) in controlled conditions. Prediction accuracy is limited. Since then the project has published an open dataset of 75 captures (603.9 minutes) and a report with honest baselines across splits, sessions and wearers (see Research). This is early-stage research, not a finished product.

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

0 / 0

Actual (LASK5)

Predicted (ML)

Radial Polar View

Hexagonal Grid

Low Pressure
High Pressure

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 64 sensors (4×16), ExtraTrees, R² = 0.660, one session

2025 FlexGrid prototype: Actual vs Predicted

Actual (LASK5) Predicted (ML)
OM-12 SensorBand (earlier generation) 12 Hall-effect sensors, RandomForest, R² = 0.264

OM-12 SensorBand: Actual vs Predicted

Actual (LASK5) Predicted (ML)
Why the difference? The 2025 prototype has about 5× more sensors (64 vs 12) and captures full hand pressure distribution. The OM-12 uses 3 separate SensorBand banks with only 4 Hall-effect sensors each, so there is less spatial resolution and less signal for the ML model to work with.

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.

Sensors60 (15×4)
Rate17 to 19 Hz per band
Flexion MAE (temporal split)0.110
Analysis Data~22,300 frames, 2 wearers

2025 FlexGrid prototype

An early FlexGrid board with a 4×16 grid of 64 cells. Its single-session results are the ones plotted above.

Sensors64 (4×16)
Best R²0.660
ModelExtraTrees (300)
Training Data1,669 samples

OM-12 SensorBand (earlier generation)

3 SensorBand banks with 4 Hall-effect sensors each. Legacy wearable form factor, the original proof-of-concept device.

Sensors12 (2×6)
Best R²0.264
ModelRandomForest (100)
Training Data~6,400 samples

Methodology

1

Data Capture

Sensor packets received over UDP and paired by timestamp with labels from the LASK5 or Meta Quest hand tracking

2

CSV Export

Paired data saved with sensor columns and label columns (label_0 through label_3)

3

Train/Test Split

Holdout data kept completely separate — never seen during training

4

Model Training

Tree-based regressors trained on sensor-to-label mapping (raw values, no feature engineering)

5

Inference & Export

Trained model predicts labels from holdout sensor data; results exported as JSON for visualization

Key finding: Sensor baselines shift between sessions (mean values drift by ~300), making cross-session prediction unreliable. All training and test data must come from the same session until calibration/normalization is solved. The V4 report shows the same effect: flexion error rises from 0.110 within a session to 0.24 across sessions of the same wearer.