Emg Controlled Hand Exoskeleton

Embedded Control, Machine Learning, EMG, Feedback Control, C, Python

Overview

The goal of this project was to design an EMG controlled hand exoskeleton that would aid stroke patients in playing the piano.

Stroke patients are often paralyzed, often on one side of the body or in only the face, an arm, or a leg. The idea behind this project is to allow patients to play the piano using a paralyzed hand, controlled by their other hand (read more about a non-actuated exoskeleton hand - GQ article). I designed a 3D printable hand exoskeleton (inspired by Alex Czech’s Elysium exoskeleton) which can be controlled using four Myoware EMG sensors and an Arduino Uno. The sensors give readings of the electrical activity of the active muscle fibers during contraction which I used machine learning to classify into an index finger, middle finger, fourth finger, and pinky. See the code in my GitHub repository.

Actions

The exoskeleton is controlled through a Feedback Loop implementing PID control and classified EMG sensor readings. When a user pushes down with any of the four fingers, the signals are classified to the correct finger and the motors move the corresponding finger of the exoskeleton.

Design

Exoskeleton

The 3D printed exoskeleton without any wiring. The mini DC gearmotors are contained in the box and velcro is used to contain the wrist and fingers.

Basic Movement

Basic Movement

An Arduino Uno was used for speed of development. When the signal is received by the controller, the motors are moved. In this stage encoders were not yet implemented so the motors ran forward then backward.

Thresholding

Thresholds

Prior to machine learning classification, manual thresholds were found in a lookup table format which enabled moderately well predictions of which fingers were being moved.

Finished Product

Realtime

Sped up 2x to hear the song

With machine learning classification and position control I am able to play some of You Are My Sunshine, if a little slowly. The hand responds slowly due to the speed at which serial data is being set and classification occurs. These are both areas that can be improved upon. In addition, the Arduino can be replaced with a better controller which would help considerably in the frequency everything can be run. I also hoped to augment the design of the exoskeleton itself to make it more comfortable and add joints for the fingers to enable greater lateral movement.

For the full code see my GitHub repository.

See my next project FlipIt Pancake Maker Robot.