Biomimetic Hand

tldr:

Designed and prototyped a mechanical hand controlled by servo motors that mimics the hand movement of the user wearing a glove embedded with slide potentiometers connected to an Arduino

What:

I built a mechanical hand that mimics the movement of the user's hand. The glove is embedded with 5 potentiometers which detect the movement of each finger. The potentiometer data is translated into a servo angle. There are 5 servo motors, each controlling one finger. The servo angle bends or extends the fingers.

The project is made using 3D printed and laser cut parts that were modelled by me on SolidWorks and AutoCAD, extension springs, strings, servo motors, slide potentiometers and an Arduino. 

The end goal is to replace the Arduino with two ESP32 boards to allow for wireless communication between the glove and motors.

Project Started: July 2022

Why:

During my co-op, I was introduced to the world of Arduino. I learnt a lot during the onboarding phase and what better way to test my new skills than to work on a side project involving an Arduino. 

I watched a video of a surgeon using a glove to control a surgical robot and I decided to make a very basic and rudimentary version where a user can control the movement of a mechanical hand using their own hand.

How:

This projects consists of 3 main components: The Hand, The Glove and The Code

THE HAND:

I broke down each finger into 4 segments: the top, middle and bottom section and a finger hinge that attaches the finger to the palm plate. I modelled all 4 parts on SolidWorks. each section has 3 holes, 1 for the anterior string and 2 for the posterior string. I customized the sizes of each section for all 5 fingers by scaling it in the x and y axis during slicing. I 3D printed all parts using ABS.

I laser cut the palm base and palm plate using 3mm thick acrylic. The palm base has 10 holes: 5 for the anterior string to pass through and 5 for eye screws for the posterior strings

The finger must move in two ways: Contract and Extend. In order to achieve two types of motion, I decided to use to strings: the anterior and posterior strings

The anterior string is responsible for contracting i.e. bending the finger. The end of the anterior string will be connected to a servo horn. As the servo rotates, the finger will bend due to the string being pulled downwards.

The posterior string is responsible for extending the finger. The ends of the posterior string is connected to an extension spring which is mounted on the palm base using eye screws. The springs creates tension in the strings that allows the fingers to remain straight. The springs play an integral role in making sure that the finger returns back to its default position after the servo stops pulling on the anterior strings.

Next, I worked on the forearm of the hand. I designed the layout of the forearm on AutoCAD. I made 5 slots for MG995 servos to fit in. I had to cut out a small rectangle from the bottom of each slot so that the wires could slide in and out easily. 

I made sure to point all the wires downwards for easy access to the power supply and Arduino. The forearm was laser cut using 6 mm acrylic. The extra thickness was required to ensure that the forearm was sturdy.

I 3D printed 4 mounts that is used to attach the hand to the forearm. The anterior strings were then connected to each respective servo.

THE GLOVE

**The glove is still under construction**

The glove consists of 5 top caps, 5 zip ties and several zip tie guides. I modelled the top cap and zip tie guide on SolidWorks. The top cap was printed using TPU and has a hole that snugly fits the zip tie knob. The guides are printed using PLA to minimize warping as the dimension of the slot is important. The zip ties should be able to move in and out of the guide freely

The zip ties were inserted into top caps which were glued onto the glove finger tips. I then wore the glove and marked the position of each knuckle. I placed a guide below and above each knuckle and along the back of the glove.

Unfortunately, I ran out of guides and I wont have 3D printer access till next year. The glove is now on a pause

As for the potentiometers, I am using slide potentiometers from here. I soldered the potentiometers to wires for ease of use. The knob of the slider will be attached to the zip tie. As the fingers movie, the slider will be pulled upwards. I need to model and print a mount for each slide potentiometer that will be attached to the wrist area of the glove

THE CODE

The Arduino code is pretty simple. It takes input from 5 slide potentiometers whose value is mapped to a servo angle value. The respective servo turns to the specified angle. The refresh rate is 15 ms.

You can check out the hand in motion to the left and check out the code available on my GitHub!

My goal was to replace the Arduino with 2 ESP32 boards so that the glove could wirelessly communicate with the servo motors. Unfortunately the ESP32 boards I bought turned out to be faulty :(


What did I learn:

What's next:

Last Updated : September 01, 2023