Spring 2025
This was an individual project which I undertook to design a new robotic hand for use in the NU robotics club project which I have led for the past few semesters.
Previously, my project has used a design based on the open source InMoov hand, which had only 5 degrees of freedom. However, the goal of the project has always been to develop a teleoperated robot arm+hand and use it to interact with basic tools. To accomplish this, the InMoov design was insufficient, as it acts more as a complex gripper than a dexterous hand, so I took on this project to see what it would take to build a dexterous hand from scratch.
I developed the hand over approximately 6 months, starting with actuation methods, then experimenting with cable routing methods, and finally integrating all of the elements to form a complete hand.
The final design includes 12 total DoF with 11 actuated degrees of freedom and one underactuated joint in the thumb. Additionally there is a single wrist degree of freedom included in the scope of this build. The hand + forearm is intended to attach to the rest of the next generation arm for the NU robotics robot arm project, which is currently being developed.
Early development of 2-Dof linkage finger
One of my early efforts to develop the fingers for this hand was to design a linkage based design which could work with small geared DC motors housed in the palm and a differential gear set up. The gears for this needed to be quite small however, so even when printed on industrial SLA machines I found preventing skipping and breakage was a challenge. Skipping was the most common failure however, so it is possible that using more rigid machined parts for the frame could have eliminated this issue. Overall the design was promising, but was mechanically complex and required many parts per finger, so I switched over to developing a cable based design where motors could be housed in the forearm.
Initial cable actuator design, included a spring, input and output encoderders, and large geared Faulhaber DC motor
Cable path for initial design
I focussed my efforts on developing the actuator which would drive the cable for each finger degree of freedom, first attempting to use larger high-quality geared DC motors. At this stage, I was also interested in including series-elastic elements to hopefully allow the force applied at the fingertips to be measured and controlled. To accomplish this, I added a spring between the motor output and cable pulley as well as an additional output encoder beyond the motor's built in encoder.
Using an output encoder here was simple, but it caused problems later as I could not measure the offset between the motor and cable pulley at an instant, and instead would need to track the difference between the two based on their relative change in their positions over time. In theory this was possible, but I found I had difficulties accurately tracking this offset in software. I also ran into issues related to the spring, as in order to fit I needed it to be relatively small, but small springs are generally less stiff, which introduced more compliance in the system. My motor was also relatively slow, which limited how responsive it could be when attempting to maintain a certain spring tension.
I am very interested in implementing this sort of series elastic scheme in a finger in the future, but I eventually reduced the scope of this project to not include force controllable fingers.
SEA element with pulley and motor input (prior to switch to fully rigid pulleys)
Getting access to the internal potentiometer
Assembled actuator with encoder and servo position line (yellow)
Perhaps the largest downside to the original cable driver design was the size and weight. In order to save weight on the final hand, I switched to brushless servos designed for RC helicopters. These are are designed to be extremely light while delivering more power than my previous motors. For the weight of one of the original actuators, I could use almost 5 of the updated servo actuators. Additionally, they had a much smaller footprint and did not require a 90 degree bend of the cable like the originals.
At this stage I was still persuing the series elastic actuation, so I tapped into each servo's internal potentiometer to use as a second position input. Eventually I moved away from this scheme, but having access to the actual position of each finger joint, even across power cycles, was very convenient. This eliminated the need for additional encoders in the final build, and I also found that this signal was relatively stable even while the servo is running. An additional resistor is placed in line to help reduce the effect of reading this voltage with a microcontroller on the servo's own internal control loop.
11 fully assembled cable actuators
In order to experiment with cable routing and finger construction, I built a single 2 DoF finger based around a rolling joint at the base which decouples the motion of the 2 DoFs. Regardless of the angle of the first joint, the cable tension feeding into the second joint is unaffected. The rolling joint is slightly more difficult to actuate however, as the cable needs to actuate the third intermediate link that connects the two halves of the joint. The design allows for a constant cable tension when routing through the base joint however, which is makes it possible to maintain a high tension in the cables without worrying about them interfering with each other.
Test assembly of a 2 DoF cable driven finger with decoupled joints
Cable routing scheme for distal joint, rolling joint at the base of the finger decouples the motion of the distal and proximal joints, gear teeth synchronize the rolling
This cable routing scheme was convenient and allowed for closed cable loops which could all be tensioned in the forearm. Using this specific design information, it was possible to move on to the hand design. I replicated this rolling joint in the wrist and the base of each finger, including the thumb.
Using the test finger as inspiration, I began designing slimmer versions for use in the final hand. I attached these to a palm which was created from a scan of a real human hand and approximated final finger placement and size. I validated the kinematics of this hand in CAD along the way, tweaking and checking clearances and ensuring the thumb could make a pinch grasp with every finger.
With rough hand kinematics established, I began placing all of the cable drivers and determining how best to fit them compactly inside the forearm.
I settled on the actuator placement similar to what is shown above, with 11 servo-based cable drivers in two rows. The drivers have dovetail features which allow the to slot into each other and the side plates shown on the right, but still allow them to slide independently for cable tensioning.
To make the transition into the wrist joint, I used a series of PTFE tubes which press into aluminum plates. These tubes are also lubricated with a low viscosity oil to significantly reduce friction. The low viscosity helps the oil travel further into the tube despite the fact that it can only be applied at the entrance and the exit.
I chose the PTFE tube diameter to only slightly exceed the .7mm OD of the coated steel cable I used. This cable is rated up to about 50 lbs but its very flexible thanks to its small diameter. The coating around the steel also allows for a smoother contact with the outer PTFE tube, and the glossiness of both of these plastic surfaces seemed to lower the friction, especially when oil is applied.
The same tubes are pressed into channels which are designed into the palm of the hand. This helps in directing the cables to the appropriate joints and was necessary to manage the 22 individual cable paths (11 DoF x2 for there and back). These tubes also receive low viscosity oil after assembly.
This scheme is intended to act similarly to the tendons and tendon sheaths which are present in real human hands, as these tendon sheaths also produce synovial fluid, which lubricate the surface to allow the inner tendon to slide freely. However, the human hand has far more tendons than are present in this design, and does not have a simple 1:1 mapping of muscles to tendons.
The thumb is slightly more complex than the other fingers, as it is the only finger with an adduction/abduction DoF. This is driven with the gear and pulley shown above, as this allows another cable to pass through the center of the finger to actuate the most distal flexion/extension DoF on the thumb using a small linkage. The second most distal flexion joint is underactuated, and a spring maintains the finger in a straight position unless force is applied at the intermediate link. This allows for passive encompassing grasping while still allowing for pinch grasps since the actuation force is applied directly to the most distal link. The base of the thumb features another rolling joint to decouple these two DoF from the third, which moves the whole thumb and a portion of the palm, similar to the human hand.
Each cable loop is formed by crimping together the two ends after they have been threaded through the mechanism, and friction holds the cable to each driving spool.
The cables are tensioned using a long M3 screw which pulls each driver downward. The screw heads sit on a metal plate at the bottom of the hand. This plate was originally steel but changed to aluminum for significant weight savings.
The hand is driven by a custom PCB with a Teensy 4.1. The board provides power to all of the servos at 8.4V and separately provides 12V power for the Dynamixel servo which drives the wrist. The board also breaks out pins on the Teensy for encoder inputs and servo feedback lines. A custom board was required for this project as most existing boards which supply power to servos cannot handle the current required. With 11 servos capable of drawing over 1A each, large traces and thicker copper layers were needed.
This board sits at the bottom of the hand and requires separate power and USB connections to operate. This is anticipated to be somewhat inconvenient when it is eventually mounted at the end of an arm, but it also allows the hand to operate separately in the event that it is used for something else in the future.
First test
The image above shows the fully assembled hand with covers and a slightly resized thumb. Currently, each finger and the wrist has been tested, and all are working after some tweaks to the design. The next step in this project is to fully test the hand and determine if it is capable of some basic manipulation.