Recreating CRAFT: Hardware Lessons for Dexterous Manipulation

A hands-on walkthrough of my experience rebuilding CRAFT and its integration with a bimanual robot setup for complex real-world manipulation tasks.

Assembled CRAFT robot hand with fingers extended on a lab bench
Completed CRAFT hand with compliant fingers, routed tendons, and compact actuators.
CRAFT hand mounted on the left I2RT Yam arm in the bimanual tabletop setup
CRAFT integration with the I2RT Yam setup for tabletop bimanual manipulation.
Quest-based teleoperation for an orange pick-and-place task.

Most robot grippers serve as effective clamps: they open, close, and work well when the object’s shape and orientation are easy to work with. Dexterous hands support more complex forms of manipulation: in-hand rotation, using small, delicate, or thin tools (such as screwdrivers, wrenches, or tweezers), and recovering grasps when contact is imperfect. This blog documents my experience building the CRAFT hand at the UNVEIL Lab, originally developed by Leo Lin and team at UIUC. The design principle is simple and appealing: passive compliance helps contact-rich manipulation, while tendon-driven actuation keeps the fingers compact.

The Original CRAFT Hand

CRAFT stands out for its low-cost design and passive compliance. The hand costs under $600, weighs 800 g, and can be built using 3D-printed parts and off-the-shelf components. For compliance, CRAFT uses rigid PLA for the finger links and soft TPU at the joints to preserve the hand's structure while absorbing contact forces. This helps the hand handle fragile, deformable, or irregularly shaped objects without turning each finger into a fully soft, hard-to-control structure.

The hand provides a wide range of dexterous capabilities: each finger has base flexion/extension, base abduction/adduction, and coupled middle/fingertip flexion, giving the hand 15 active degrees of freedom plus 5 passive degrees of freedom. The motors sit in the forearm and pull the fingers through tendons, keeping the hand light and close to human scale. The original paper reports coverage of all 33 Feix grasp types and demonstrates teleoperation with delicate objects such as eggs, raspberries, chips, and wine glasses.

Original CRAFT hand, showing the compact tendon-driven layout and compliant fingers.

Step 1: Building the Compliant Fingers

I began by building the first finger. As shown in the images, each finger combines white PLA link shells with black TPU joint pieces. The white PLA parts provide the rigid finger links, and the black TPU pieces create the flexible joints between them. This gives the finger enough structure to move predictably while still bending under contact. During finger assembly, the main challenge was alignment: the pins, fasteners, and 3D-printed parts had to seat cleanly without compressing the TPU so much that it restricted bending motion.

Building one module first made it possible to test the PIP/DIP stack before repeating the process across all five fingers. The finger needed to bend smoothly, return without obvious binding, and minimize interference between the printed parts. Once this validation passed, I assembled the remaining finger modules and staged them around the palm for tendon integration.

Tendon routing turned the finger modules into actuated fingers. Pulling the flexion tendon curls the finger, and the rolling-contact geometry keeps the PIP/DIP joints moving together instead of letting the fingertip fold independently. The key requirement was to produce smooth, repeatable actions and reduce delayed or inconsistent fingertip motion from the same motor command.

Manual tendon test during assembly. The bottom row of motors shows side-to-side motion, the middle row shows forward/backward finger bend, and the top motor shows finger curl.
Initial teleoperation test using hand tracking to send CRAFT motor commands.

Step 2: Mounting CRAFT on the Existing Bimanual Setup

After assembly, the next step was integrating CRAFT with our lab’s existing bimanual I2RT Yam Ultra setup. The original setup used stock parallel-jaw grippers, which are reliable for simple pick-and-place tasks but reduce the end-effector command to opening and closing. Mounting CRAFT on the wrist turned the hand from a standalone build into part of the robot platform. As an initial sanity check, the payload budget was sufficient: the Yam Ultra is rated for 4 kg, while CRAFT is reported at about 800 g. This left enough margin for the adapter, fasteners, and wiring.

I2RT Yam robot arm with its original gripper before mounting the CRAFT hand
Yam Ultra arm with the stock parallel-jaw gripper before the CRAFT retrofit.

To create an adapter, I used Autodesk Fusion and the available I2RT STL files as the starting geometry for a printable wrist mount. The design requirements were mostly mechanical: match the Yam wrist pattern, interface cleanly with the CRAFT mount, keep the fingers oriented toward the workspace, preserve wrist clearance, and leave a usable path for wiring. I checked the wrist motion in MuJoCo before printing, then mounted the hand on the left arm and staged the workspace for teleoperation. The image shows our bimanual teleoperation stack with one dexterous hand.

Step 3: Quest-Based VR Teleoperation

With the hand mounted, the next requirement was a control interface for collecting demonstrations. We used Quest-based VR teleoperation, where the headset tracks the operator's hand pose and a retargeting layer maps that motion into CRAFT's motor limits. The thumb needed extra calibration because small tracking or frame errors created large changes in the commanded thumb motion.

For arm motion, we used an Open-TeleVision-style setup: the operator's wrist pose commands the robot wrist and guides the arm. Once the wrist frame was aligned, the arm and hand could be controlled together instead of as two separate systems. The early demonstrations started with simple pick-and-place tasks and then moved to a wine-pouring setup assisted by GLIDE guardrails. In that setting, GLIDE filters unstable commands around the glass grasp and pour while the operator still provides the task-level motion.

Pick-and-place with a white cup, where compliance helps the fingers conform without over-squeezing the object.

Pi0.5 Policy Rollout

We also tested a rollout using pi0.5 with GLIDE assistance using the collected human demonstrations. This setup changes the role of the operator: instead of directly commanding every motion, the learned policy attempts the wine-serving behavior while GLIDE filters unstable commands around the grasp and pour.

Pi0.5 wine-serving policy rollout with GLIDE guardrails filtering unstable commands.

Challenges and Lessons Learned

As a beginner, some lessons were obvious only after the fact. The hard part was turning a printed hand into a dependable robot system: parts, assembly, calibration, contact, and real-robot debugging.

  • Spares matter more than expected. The parts list was not the issue; my assumption was that exact quantities would be enough. A broken motor, missing screw, or failed print can turn into a one- or two-week delay without extra screws, bearings, tendons, inserts, and at least one spare actuator.
  • Retargeting was not plug-and-play. The Quest gave us a usable hand pose, but the mapping to CRAFT still needed calibration. Thumb motion needed more useful side-to-side control, and even a small wrist-frame mismatch could make the robot feel unintuitive.
  • Camera views matter for debugging. The initial setup did not have a wrist camera, which made it harder to see contact from the hand’s perspective. Adding a wrist camera helped, but the current video still does not give the clearest view of grasps, slip, and contact during manipulation.
  • Contact was more than closing the fingers. The hand could wrap around a bottle and still slip during pouring, which made it clear that enclosing an object is not the same as gripping it. Friction tape helped temporarily, but better fingertip pads or coatings would make contact more reliable.
  • Motor torque became a real hardware limit. The small DYNAMIXEL servos keep CRAFT compact and affordable, but they limit grasp strength during stronger holds, slip recovery, and tasks where the object applies a moment to the fingers.
  • Simulation stopped short of the full system. Once CRAFT was mounted on the Yam arm with the adapter and tendon routing, many issues only appeared on hardware. A better Yam + CRAFT simulation would make it easier to test retargeting, wrist alignment, and policy rollouts before real-robot trials.

Next Steps

The next goal is to turn the build from a working prototype into a repeatable experiment platform. That means reducing the amount of manual adjustment needed between runs and making failures easier to diagnose.

  • Standardize maintenance. Keep a small spare-parts kit for screws, bearings, tendons, inserts, and actuators, then document the assembly order and common failure points so repairs do not depend on memory.
  • Make tendon routing more repeatable. Cleaner exits, better retensioning points, and less rubbing would make finger motion more consistent. Finger modules should also be easier to remove without disturbing the rest of the hand.
  • Improve fingertip contact. Replace the temporary friction tape with pads or coatings that provide repeatable grip without making the fingers too stiff. This would make pouring and heavier grasps less sensitive to slip.
  • Turn calibration into a procedure. Thumb retargeting and wrist-frame alignment should use a short routine with saved parameters, rather than being adjusted by feel each session.
  • Build an integrated Yam + CRAFT simulation. The simulation should include the adapter, wrist limits, approximate hand geometry, and task objects, so retargeting and simple policy changes can be tested before hardware trials.
  • Add contact feedback. Fingertip tactile sensing, or even simpler slip/contact indicators, would make it easier to understand why a grasp fails instead of relying only on camera views and visual inspection.

Citations