This is my opensource project for a transhumeral hand prosthesis, WML Bionic Arm. A transhumeral hand prosthesis aims to replace the arm lost above the elbow, so it comes with additional challenges - we must not only control the palm but also an albow joint. 

The overall design is quite simple—just one elbow joint and a claw with a fixed direction. The claw is two-finger with one moving finger.

For controlling the palm, I used this SichiRay Dry Electrode myoelectric sensor, which is secured to my bicep. Experiments showed that the sensor is extremely sensitive to even the slightest muscle movements. Because of this, the first challenge was to create a mounting system that would, first, ensure easy and consistent attachment of the prosthesis and, second, avoid direct pressure on the bicep while also offloading it by securing the forearm—so that the bicep wouldn’t have to work just to hold it in place.

I decided to divide the structure into two parts: a platform that is attached to the arm first, and the prosthesis itself, which is then mounted onto the platform. This decision was made because the prosthesis is quite heavy, and precisely aligning and securing it on the arm at the same time proved to be a difficult task.

The platform is made of plywood and is secured to the arm using a system of straps. Both the platform and the straps are equipped with synthetic foam pads to reduce pressure on the arm and improve wearing comfort.

The hand is also made of plywood, with all elements secured using screws. Beneath the elbow servo, there is a steel stopper that physically limits the forearm’s movement in case of a malfunction. Additionally, a stand is mounted on it so the hand can be placed on a table during programming and code testing.

The claw is assembled from steel plates and brackets. Its fingers consist of steel plates covered with plastic overlays, which were 3D-printed. One finger is fixed in place, while the other is directly attached to the servo motor shaft and moves with it. To improve grip, rubber strips are glued to the inner surfaces of the fingers.

The power source consists of four 18650 batteries connected in series, providing 14.8 volts and 20 amps of current. After a step-down converter, the voltage is reduced to 12 volts, which powers the Arduino Leonardo board and two DSservo DS51150 servomotors. These motors have a torque of 150 kg/cm, an operating voltage of 12V, and a maximum current draw of 8A.

The Arduino is connected to two sensors—a MPU6050 gyroscope and a myoelectric sensor controller. All electronics are housed in standard electrical enclosures.

Now let's move on to the myoelectric sensor. Its working is pretty basic - if i contract my bicep, the claw closes. In current version of firmware the claw stays closed until I contract the bicep again and then relax it - then the claw opens. This is needed to keep a claw closed during manipulating an object so that I don't need to keep a bicep contracted all the time. 

In previous version the same myoelectric sensor also controlled an elbow joint. By contracting a bicep stronger above some threshold the prosthesis entered an elbow adjustment mode. This was quite complicated and in the newer version I separated elbow control from a myoelectric sensor. Instead, I'm using the same principle as body-powered hook prosthesis - flexing a shoulder blade forward I enter an elbow adjustment mode. This is done via a special cable that under a tension pushes a button build into this cable. Also there is a small vibromotor that signals whether i'm in an elbow adjustment mode currently. 

This is how an elbow joint control works. At the moment of switching to elbow control, a plane passing through the head and palm is established, along which the palm then moves—that is, we pull or push the palm toward or away from the head along this plane. All the math is based on gyroscope readings.

The detailed description of the project can be found on project's GitHub page.