Example 08 · FC + EMG front end

Prosthetic Hand

Reading what a prosthetic hand’s wearer is trying to do from the muscles left in their forearm, and adapting to each new wearer on the device itself. We tested our 4,423-parameter network on real recordings from 19 people it had never seen, including 11 with below-elbow amputations.

Side view of a transradial myoelectric prosthesis: the socket over the residual forearm holds a ring of 8 dry electrodes and the controller (ADS1298 analog front end and STM32U585); a wrist rotator and a powered hand are attached at the end. A cross-section shows the 8 electrodes spaced evenly around the forearm, over the extensor muscles on top and the flexors below.
The prosthesis it's designed for. Electrodes in the socket pick up the forearm's muscle signals, and the controller turns them into commands for the wrist and hand.
people it had never seen, all real recordings, 11 of them amputees
19
of calibration to fine-tune it to a new wearer, on the device
Under a minute
of wrong movements removed by confidence-based rejection
Over half
parameters, and as many multiply-adds per decision
4,423

Where it's used

Control that reads the whole forearm

Most powered prosthetic hands still use two electrodes: one muscle opens the hand, another closes it, and switching to the wrist takes a special signal. It’s reliable but slow, and it gets slower with every movement a modern hand adds.

Pattern-recognition control reads a whole ring of electrodes instead. Even with the hand gone, the muscles that used to move it still contract, and every movement the wearer attempts leaves its own pattern around the forearm. The decoder has to work inside the prosthesis, on a battery, within about 100 to 150 ms, and it has to be calibrated to its wearer every time the prosthesis goes on.

  • Powered prosthetic hands and wrist rotators
  • A decision every 50 ms, from 8 electrodes in the socket
  • Built to run inside the prosthesis, on battery, with no network
  • Recalibrated each time it's put on

The data

Real recordings, including 11 amputees

We used Ninapro, a research database of forearm muscle signals recorded while people copied hand and wrist movements from a screen. The network decides between seven intents: rest, open or close the hand, rotate the wrist either way, or flex or extend it. Everything we report comes from people it never saw in training.

Training · 28 people
intact arms, the people the shared model learns from
Validation · 4 people
checked after each round of training, so we keep the best model
Test · 8 people
intact arms, never seen in training
Test · 11 people
below-elbow amputees, moving their phantom hand, never seen in training
Raw EMG on the 8 ring electrodes for four movements by one held-out subject: each movement activates a different subset of electrodes, for example channel 4 during wrist flexion and channels 6 to 8 during extension.
Raw muscle signals from the ring of 8 electrodes, for four movements by one person the model never trained on. It's the pattern across the ring, not any one signal, that identifies the movement.

How we built it

A shared start, finished for each wearer

Every 50 ms, the device looks at the last 200 ms on each electrode and computes four classic features: how hard the muscle underneath is contracting, and how quickly the signal is changing. That’s 32 numbers per decision, scaled to the wearer’s own calibration so electrode gain, skin contact and strength drop out.

  1. 01

    Start from a shared model

    Trained on 28 people, so a new wearer starts from the general shape of the problem.

  2. 02

    Calibrate to the wearer

    The wearer holds each movement once, in under a minute, and the device fine-tunes the network to them on the spot.

  3. 03

    Decide carefully

    Anything under 80% confidence counts as rest, and the hand follows the majority of the last five decisions.

Every movement has its own pattern

Flexing and extending the wrist light up opposite sides of the forearm, and a fist lights up the flexor side. An open hand and the two wrist rotations are much fainter, because spreading the fingers takes little force and the muscles that rotate the forearm lie deep. Those are the movements the network has to work hardest to tell apart.

Heatmap of mean standardized electrode activity for each intent across the training subjects: rest is uniformly low, wrist flexion peaks on channels 3 to 5, extension on channels 6 to 8 and 1, a fist on channels 1 to 3; open hand and the two rotations are faint.
How active each electrode is, on average, for each movement across the 28 training subjects. Red is more active than average, blue less.
Pipeline: 8 surface electrodes around the forearm sampled at 2 kHz by an ADS1298, into Hudgins features per electrode every 50 ms over the last 200 ms, standardized with the wearer's calibration mean and spread. Calibration at each donning also fine-tunes the network. The input layer takes 32 values, then FC 64 GELU, FC 32 GELU, 7-way softmax output, then the motor command: rest if confidence is below 0.8, majority of the last 5 decisions, speed from contraction effort.
The whole decoding pipeline, all of it on the microcontroller. Calibration, in yellow, supplies the scaling and fine-tunes the network.

It learns on the device. Unlike our other examples, this firmware keeps training after it ships. Each fitting fine-tunes the network to its wearer from under a minute of calibration, right there in the prosthesis, with no computer or cloud involved.

Results

Measured against the commercial standard

We compared our fine-tuned network with LDA, the linear classifier commercial pattern-recognition controllers use, on the same calibration data. For people with intact arms it came out 3 to 8 points ahead. For the amputees it matched LDA after one calibration, and pulled about 2 points ahead with more.

More calibration, more accuracy

Calibration time is the biggest lever a wearer has. A second pass through the movements, about 50 seconds more, adds 5 to 7 points, and the curve is still climbing at four. A shared model with no fine-tuning at all does far worse, which is exactly why calibrating on the device matters: no two people’s muscle patterns are alike.

Line charts of window accuracy against 1, 2 and 4 repetitions of calibration. Intact subjects: LDA 64, 69, 71 percent; network from scratch 65, 73, 77; shared model fine-tuned 67, 74, 78; shared model as is about 52. Amputees: all three calibrated decoders between 44 and 57 percent; shared model as is about 25.
Accuracy against how much calibration each decoder gets, for intact subjects and amputees. The dashed line is the shared model with no fine-tuning.
Line charts of the share of decisions that are correct, a wrong movement, or movement during rest, as the rejection threshold rises from none to 0.9. Intact: wrong movements fall from 27 to 9 percent, correct from 60 to 45 percent. Amputees: wrong movements fall from 48 to 14 percent, correct from 40 to 21 percent. Response time rises with the threshold.
What confidence rejection trades, over all 19 held-out people, as the threshold rises. Below each threshold, how long the hand takes to respond.

A hand that pauses beats one that guesses

Accuracy on clean windows isn’t what a wearer feels, so we also streamed every held-out session through the firmware decoder, transitions and all. Treating low-confidence decisions as rest cut wrong movements by more than half for intact subjects, from 26.5% to 11.9%, and by almost two-thirds for the amputees.

The trade is a more cautious start, and the threshold is a per-wearer setting a clinician can tune.

On the device

Calibration and control on one microcontroller

The firmware targets an STM32U585 with TI’s ADS1298 8-channel biopotential front end, and cross-compiles for its Cortex-M33. Each decision takes 4,423 multiply-adds every 50 ms, and quantizing the fine-tuned model cost nothing measurable.

Calibration is the heavy part: the device holds under a minute of feature data and fine-tunes the network on it, using about 200 KB of the U585’s 786 KB of RAM. Once that’s done, it settles to about 60 KB.

of flash for the shared model
17.8 KB
of RAM during calibration, out of 786 KB
~200 KB
of RAM once calibration is done
~60 KB
between decisions, each 4,423 multiply-adds
50 ms

Medical devices are what we do. We design IEC 60601-compliant electronics and safety-critical firmware under IEC 62304, inside our clients’ ISO 13485 systems, with ISO 14971 risk work.

See our medical device work

Muscle signal recordings from the Ninapro database: M. Atzori et al., “Electromyography data for non-invasive naturally-controlled robotic hand prostheses”, Scientific Data, 2014.

Ready to build your next intelligent device?

Let's discuss your project and how Cole Design & Development can bring your idea to life.

Founded in 2008 · Hudson, Ohio · info@coledd.com