In Progress Robotics Hardware AmazingHand SO-101

AmazingHand: Building an Open-Source Robotic Hand

Pollen Robotics' open-source 8-DOF, four-finger robotic hand. I printed the shells, built it finger by finger, and wrote my own control code, working through servo ID conflicts, serial port mix-ups, and jerky gestures. The first hand now switches smoothly between 12 gestures; next it goes on a robot arm.

An assembled white AmazingHand on a black base, making a gesture

AmazingHand is an open-source four-finger robotic hand. I assembled and calibrated it from parts and wrote my own gesture control code; the first hand now switches smoothly between 12 gestures. The goal is to mount it on an SO-ARM101 arm so Anvil can move from grippers to fingers.

The build and its problems in under two minutes. The photos and clips are my own (the last scene uses an official Pollen Robotics demo video and illustration); the narration is an AI voice (Gemini TTS).

Printing and parts#

In late May I bought a kit for each hand from Seeed Studio. The black internal parts come with the kit; the white finger shells and palm shell I printed on my own 3D printer.

Two Seeed Studio Amazing Hand kits stacked together An open kit box full of bags of small parts and a black base

One kit per hand; on the right, a kit opened up — a whole box of small parts.

Building it finger by finger#

I started building in mid-June. Each finger is two small servos, linkages, and printed parts — tiny pieces and lots of screws. I built one finger first and got its calibration process working, confirmed it moved correctly, then repeated the same process for the other three.

Holding one assembled finger with an SCS0009 servo at its base

The first finished finger, and a single-finger motion test.

With all four fingers calibrated, the 8 servos got numbered labels. At the end of June I mounted the palm on its base, wired it up, and closed the front shell — about two weeks for the first hand.

One finished finger and three half-built fingers on the desk, with an electric screwdriver and small parts Four assembled fingers lined up, servos labeled 1 to 8

Fingers in progress; on the right, all four done with the 8 servos numbered in order.

Four fingers mounted on the palm, servos labeled, cables running down to the controller Four fingers on the palm and black base with the front shell off, showing the linkages and cables inside

Palm wiring, and the hand on its base before the front shell went on.

Problems and fixes#

  • Supports on the printed base wouldn’t come off: I switched to the black base included in the kit.
  • Duplicate servo IDs: factory servo IDs collide, so the bus can’t tell them apart. I set IDs one finger at a time (index 1–2, middle 3–4, ring 5–6, thumb 7–8) and labeled each servo.
  • Serial port confused with SO-101: the AmazingHand and SO-101 controller boards both show up as ttyACM0, which makes it easy to send commands to the wrong device. Fixed /dev/serial/by-id/ paths solved that.
  • Power: the servos draw from a separate 5V/5A supply, not the Raspberry Pi, so they can’t drag the host down.
  • Per-finger checks: each finger returns to neutral, then gets checked for binding, noise, and heat, with round-trip error kept under 2.5°.
  • Very little side-to-side travel: because of the differential mechanism, fingers only swing near neutral, about ±20° at the tip. So I moved the swinging gestures (wave, fan, spock) to a half-bent position, and rebuilt the 10 official gestures from my own measurements.
  • Abrupt gesture changes: jumping straight to a position looked stiff, so I wrote an interpolating player with three speeds: safe, natural, and snappy.
  • Safety: simulation runs by default; on hardware, everything starts slow and supervised.
The assembled hand on its black base, servo number labels visible on the palm

The finished hand, servo labels still in place.

Control and results#

The hand has 8 SCS0009 servos, two per finger: turning in opposite directions flexes the finger, turning the same way swings it side to side.

A Raspberry Pi 5 sends commands over a USB serial bus. After assembly all 8 servos respond, the 12 gestures have a maximum error under 3°, and the servos run at about 35°C. I also built a MuJoCo simulation to try motions on the computer before running them on hardware.

The day the first hand was finished, cycling through the preset gestures.

Where it’s headed#

Next I’ll build the second (left) hand and mount the hands on the SO-ARM101 arms in place of the grippers. This official diagram is exactly the look I’m going for:

Official diagram: AmazingHand mounted on the end of an SO-ARM arm

AmazingHand mounted on an SO-ARM (source: pollen-robotics/AmazingHand, CC BY 4.0).

The official project also shows MediaPipe tracking a real hand so the robot hand and the MuJoCo simulation follow along. I want to bring that hand tracking to my own build, then combine it with Anvil’s dual-arm teleoperation.

Official hand-tracking demo: a real hand, the MediaPipe detection, and the robot hand in MuJoCo side by side

MediaPipe hand tracking synced to the real hand and the simulation (source: pollen-robotics/AmazingHand, CC BY 4.0).

For how dexterous the finished fingers can get, the official demo video is a great reference:

Official AmazingHand demo video (source: pollen-robotics/AmazingHand).

Reference projects#

pollen-robotics
/
AmazingHand
Code and model to control the AH!
2.4K
274
Apache-2.0

A low-cost open-source hand from Pollen Robotics. Each of the four fingers is driven by two SCS0009 servos in a parallel mechanism, for 8 degrees of freedom. It weighs about 400 g, costs under €200 in parts, and was originally designed for Reachy2’s wrist. The repo includes 3D models, build guides, a MuJoCo simulation, and an example that tracks a real hand with MediaPipe. Code is Apache-2.0; the mechanical design is CC BY 4.0.

roy4222
/
Roy-AmazingHand-SO101
Code and model to control the AH!
0
0
Apache-2.0

My own control code and calibration notes, including a gesture library, an interpolating player, and the setup for sharing one Pi with the SO-101 arms.