Final Project: Hands
The goal of my final project was to create a robotic hand which could be used to grasp things.
Initial Plan
Ideally, the hand would be human like in shape, size, and motion, but all of those might tbe too much to hope for. The most impressive mechanism I've seen is described in the following paper. Unfortunately, it's a PhD thesis project. It also uses bones which are 3D printed from a scanned skeleton, silicone cast around the joints, crocheted tendon sheaths, and a slightly ridiculous number of motors to actuate the tendons.
Design and Control of an Anthropomorphic Robotic Hand: Learning Advantages From the Human Body & Brain
That system and some variants are explained further in a number of additional papers. As impressive as that work is, it is beyond my abilities to replicate and is only useful to me as a source of inspiration.
Design of a Highly Biomimetic Anthropomorphic Robotic Hand towards Artificial Limb Regeneration
Mechanisms of the Anatomically Correct Testbed (ACT) Hand
Design of an Anthropomorphic Robotic Finger System with Biomimetic Artificial Joints
Design, optimization, calibration, and a case study of a 3D-printed, low-cost fingertip sensor for robotic manipulation
A Low-cost and Modular, 20-DOF Anthropomorphic Robotic Hand: Design, Actuation and Modeling
The choices for the hand mechanism are mostly focused around how the joints work and how the motors interact. The main options for the joints are hinge joints and ball socket joints. The design from the papers above uses a strange saddle joint, but that requires elastics to keep the joint together and makes the actuation difficult. Ball socket joints would be nice because they provide additional range of motion like twisting at the base knuckle of each finger. They actually provide more freedom than is needed, so the other joints can just be hinges.
Beyond the mechanics of the hand, the control mechanism also needs some thought. An attractive option would be a glove which could be worn. By using the glove to measure the position of that hand, we can record positions to morph between or just provide input for the hand to mimic. There might be some issues with syncing up the motion between the two sides. The difficulty here is that there are 15 obvious joints which need to be measured. I'll ignore the wrist joint and the flexing of the palm for now. Many solutions like rotary encoders or potentiometers are available, but managing the space available would be difficult.
First Simplification
The first simplification reduced the complexity of the mechanical components. To make everything easier to design and build, all 15 joints will be hinge joints, and the palm is just a fixed block. I'll actuate the joints using servos and tendons. One set of tendons will handle contraction for all the joints in each finger. Those tendons are just attached to springs or weights. Each joint will get a tendon for extension which is pulled by a servo. Instead of making a glove for the control, I decided to switch to making a duplicate hand. That duplicate will have no motors or tendons, and it is only used for measuring position. That is probably easiest done with rotary potentiometers on each joint. This should be easier than the glove because even though I'll have to make the entire structure of the duplicate, I'll have access the axis of rotation for each joint. I also chose to increase the size to give me more space on the inside of the fingers.
Second Simplification
To have a reasonable number of pins available, I decided to use the ATmega328. Unfortunately, that only has 8 pins with ADC. So I'll need two boards to measure all 15 joints. Unfortunately, this means that one of the fingers will be split across the two boards. Since the motors controlling the joints aren't perfectly independent, this probably means that the two boards will need synchronization on the input and output sides. The output board has enough pins to control 15 servos, so that side is not a limitation. As a reasonable compromise, I've decided to drop to four fingers. This way, each input board can measure its own set of fingers without having to synchronize with the other input board. So the output board only needs to talk to each input board separately.
At this point, I tried to wire up a finger using magnet wire for the tendons and thicker colored wires for the potentiometers. Unfortunately, the thicker wires are very difficult to work with in such a small space. There simply isn't much space for them to fit into the finger and go around the bends. Thus, I have to switch over to using magnet wire for both the tendons and the power, ground, and data lines. This has the disadvantage of individual wires no longer being obviously separable. But with some knots tied in the ends of the wires, I can at least identify the different types of strings.
Third Simplification
I tried to manually actuate the fingers with all the segments assembled, and it's very difficult. This is probably due to some combination of the segments being oversized, the tendons threading through the center of each segment, and the wires getting mixed up. By adding spacers around the stem of the potentiometers, I increased the lever arm for the tendons which helped a bit. The tension needed is still very high, so I'm reducing it to two joints per finger so I have some hope of being able to actuate them. I'm also running out of time, so I'm reducing the number of fingers to two. Now, the inputs and the outputs can all be handled by a single board. So I'm combining the control copy and the motorized copy. This way, the chip can measure the position of the joints as it commands them. If I had the time to work on a more sophisticated control algorithm, this capability would be very useful. More importantly, dropping down to a single board removes a whole host of synchronization issues.
Now that I'm down to only two fingers, I don't really need a palm anymore. To save time, I lasercut a frame to mount everything on just to try to get something working. I put it together using superglue. Acrylic solvent glue would be a little better, but the EDS lab is not equipped to handle that from a ventilation perspective.
Final State
At the end, I got two fingers assembled and mounted to the frame. Unfortunately, the tension required to actuate them is too high. While that could possibly be reduced by sanding everything nicely, adding lubricant, straightening the wires, and drilling out the segments, there are other problems with the design. Once the fingers fall below horizontal, since the tendonfor contraction runs through the center of each segment, it has really poor leverage for contracting the first joint. The tension needed to actuate these joints is definitely well above the strength of the servos I have. The position sensing and the servo control is working separately. But since the servos are too weak, I can't test them in conjunction with the entire system.