07 · Case Study

Underactuated Robotic Finger

Mechanism DesignSolidWorksArduino

A single servo curls a three-jointed finger through a routed tendon, recreating a full finger curl from one input. The mechanism was modeled in SolidWorks and carried through to a full set of fabrication drawings.

1.0

Objective & Constraints

A human finger has three joints but no muscle of its own; a single muscle in the forearm pulls a tendon that flexes all three at once. Reproducing that behavior with one actuator is a problem of underactuation: there are more joints than motors, so the way the joints move together has to be built into the mechanism rather than commanded joint by joint.

The objective was a natural curl from base to tip from a single servo, with three articulated joints and one source of motion.

2.0

Mechanism

The finger is built from three rigid segments joined by a pin joint at each knuckle. A tendon string runs from the servo horn, through a series of guides and pulleys, to the fingertip; as the servo pulls the cable, rising tension draws the segments inward and the finger curls from the base joint outward. The path the tendon takes through the guides sets the order and proportion in which the joints close.

Since one servo drives the entire chain, every joint shares the same torque budget, and friction or interference at any knuckle would stall the whole curl. The segment geometry and joint clearances were therefore resolved in SolidWorks before fabrication, so the linkage articulates freely through its full range without binding.

Drag to rotate · scroll to zoom
Fig. 1 · The SolidWorks parts, live. Switch between the segmented finger, the actuator test housing, the servo pulley, and the tendon guide ring; drag to rotate each one.
3.0

Documentation

The SolidWorks model was treated as a deliverable in its own right. A complete drawing package was produced from it: toleranced part drawings and an assembly drawing with a bill of materials.

Everything is dimensioned so the mechanism can be reproduced from the documentation alone, and so tolerances hold across the mating parts and the tendon path.

Drawing package
Fig. 2 · The fabrication drawing set, paged sheet by sheet: toleranced part drawings, the assembly, and its bill of materials.
4.0

Actuation & Control

An Arduino drives the servo in C++, with commanded positions mapped to a set of discrete grip angles. This turns a continuous servo command into a small number of repeatable grip states, so the finger returns to the same poses on demand rather than being driven by hand.

Fig. 3 · The bench rig: an Arduino UNO drives the servo, whose horn winds the green tendon that curls the printed finger.
Fig. 3 · The bench rig: an Arduino UNO drives the servo, whose horn winds the green tendon that curls the printed finger.
The finger curling under tendon tension as the servo steps through its commanded grip angles.
finger_control.inoC++
#include <Servo.h>

Servo servoindex;            // index-finger servo
int pos = 0;                 // current servo position

void setup() {
  servoindex.attach(3);      // servo signal on digital pin 3
}

// ---- Discrete grip states: one commanded angle each ----
void handOpen()  { servoindex.write(0);   }   // fully extended
void handRest()  { servoindex.write(90);  }   // relaxed mid-curl
void handClose() { servoindex.write(180); }   // full curl

// ---- Sweep the extremes for a smooth grab-and-release ----
void grab() {
  for (pos = 0; pos <= 180; pos += 2) {        // curl in
    servoindex.write(pos); delay(50);
  }
  for (pos = 180; pos >= 0; pos -= 1) {        // release out
    servoindex.write(pos); delay(25);
  }
}

void loop() {
  handOpen();  delay(5000);
  grab();
  handClose(); delay(5000);
  handRest();  delay(1000);
}
The control sketch: three discrete grip states (open, rest, close) each map to one commanded angle, with a sweep routine for a smooth grab.