2026-08-22XLeRobot dual-arm Fin-Ray gripper

Compliant gripper rebuild

Thanks for taking a look. This is a write-up of a Fin-Ray compliant gripper I have been rebuilding so a dual-arm robot can reliably pick up a Ø70 mm cup. Two rounds of parts have been printed and tested on the robot. Below is what I did and what I measured; there are two things at the very end I am not sure about, if you have time.

The part

Fin-Ray blade, isometric
Fin-Ray blade, isometric — 89.4 mm long, 23.0 mm wide. Two per gripper, one on each finger mount
Side
Side
Tip
Tip — the raised pad is copied from the OEM blade: 1.95 mm step, 90° hook face 15.25 mm back from the tip
Root
Root — two Ø2.8 screw holes, 10.00 mm apart, calipered on the real robot

It replaces the gripper's OEM rubber blade. The whole thing is generated from a parametric script rather than modelled by hand, so length, wall thickness, rib pitch and the tip profile are all numbers I can move and re-verify.

What I changed, and why

DecisionEvidence behind it
Abandoned splicing the scanned OEM mesh; rebuilt fully parametrically Measured 4.1 mm and 1.1 mm jumps in the outer contour at the two splice seams
The cup-wrapping curvature is added as a layer, never carved into the load-bearing blade Cutting a 4.59 mm cradle into the grip face dropped mid-blade section height from 15.66 to 11.89 mm — bending stiffness to roughly 58%. All four reference grippers I had access to add a layer instead
Length is a free parameter; RAIL_SLOPE is back-solved so the mount fit survives Left as a constant, the 120 mm version's tip drifts 4 mm outward and the fit to the mount is void. Back-solved, the tip rail x holds to 0.02 mm across 89.4 / 100 / 120 mm
A longer blade must not buy thinner walls Wrapping a cup imposes curvature 1/R, so the required moment is M = EI/R — independent of blade length. Confirmed on hardware: the 120 mm thick-wall part was too stiff, the 89.4 mm thin-wall part had about the right compliance
Friction pattern changed from transverse teeth to a diamond lattice, extended over the raised pad The old teeth measured out as stopping 21.5 mm from the tip while the pad starts at 15 mm — the primary contact patch against the cup was entirely smooth

Geometry: calipered, with a self-check

Origin at the centre of the fixed jaw's inboard bolt, x along the line between that jaw's two bolts, everything measured fully closed with blades installed:

QuantityReadingNote
Right jaw inboard bolt R_in(27, 2.5)
Right jaw outboard bolt R_out(36.7, 5.0)
Angle between the two bolt lines, θ14.45°derived from the two points
OEM blade: outboard bolt to pad face22 – 23 mmfirst read as 19, later corrected; 19 is void
OEM blade: bolt centre to underside2.5 mmif this is off it will not seat in the mounting bracket

Self-check: back-computing the right jaw's bolt spacing from those two points gives 10.017 mm against a known 10.0 mm — 0.017 mm error, so the points, the frame and the caliper technique all hold up.

One thing I could not reconcile: the URDF's Jaw joint at q=0 works out to a long-axis angle between the jaws of 10.79°, against the calipered bolt-line angle of 14.45° — a 3.66° gap. My working explanation is that the bolt line is not perpendicular to the jaw's long axis, so the URDF number cannot be used to predict bolt geometry and the measurement wins. That is an explanation, not a verification.

Ribs

ParameterValueMeaning
RIB_PITCH4.0 mmrib spacing along the arc
RIB_T1.6 mmrib thickness
WALL_T2.0 mmmeasured perpendicular to the rails
RIB_INCL0° → 50° parallel to the base at the root, progressively steeper toward the tip
DEPTH27.42 → 1.0 mm truss depth, TAPER_POW = 1.6

The pitch value itself is the one number I went back and forth on. What settled it for me was the resulting spacing measured off the generated body:

Measured median rib spacing
pitch 4.0 (current)4.58 mm
pitch 3.6 (proposed)4.24 mm
OEM blade, measured4.337 mm

Only 3.6 reproduces the OEM blade's actual rib spacing. Measured spacing exceeds nominal pitch because the ribs are inclined. The cost is more ribs, so a stiffer blade.

Friction

The contact face carries a recessed diamond lattice — crossing ridges, the diamonds are the pits — covering the tip and extending over the raised pad. The earlier transverse-tooth version had a measured defect: the pattern stopped 21.5 mm from the tip while the pad starts at 15 mm, so the real primary contact patch against the cup was entirely smooth.

Also: changing the shell's perimeter count does nothing. Four versus six perimeters are literally identical for a 2.0 mm beam, and dropping to two softens it by 0.4%, because everything removed sits on the neutral axis. The real knob is WALL_T, which goes as t³.

Material, and where I got stuck

The design reference is the OEM blade, presumed 82A, whose feel works. What actually arrived is TPU 98A, which is far harder. I have been compensating by thinning walls. The table below puts the softening the geometry needs to supply next to what it can actually deliver:

Shore AE (MPa)Softening needed Geometry deliversWALL_T Extrusion lines
82A (reference)111.00× 1.01×2.005.0
85A141.27× 1.01×2.005.0
90A222.00× 1.01×2.005.0
95A403.64× 2.17×1.604.0
98A (what I have)706.36× 6.14×1.203.0

E values are from a materials table. Above 95A the empirical correlation degrades badly, so the 70 MPa for 98A is a conservative vendor-typical figure, not measured.

Printed in 98A at the thin-wall setting (WALL_T 1.2) and tested by hand, the result was: compliance about right — so on that axis the geometric compensation worked — but not enough friction and poor resilience, slow rebound. Overall it grips worse than the OEM blade it replaces.

My reading is that the geometry fixed the one thing it can fix and the part is still no good, which would mean the two remaining symptoms are material properties that geometry cannot touch. Thinning further should make rebound worse rather than better, since 3 extrusion lines is already where a slicer starts dropping thin walls. I also have a small leftover roll of what looks like 85A, and the table says 85A and 82A both land on baseline geometry.

A second line I am trying

Since friction alone will not hold the cup, hold it by shape instead: a Π-shaped leaf spring that slips over the tip of an already-printed blade, lying in the blade's own plane. The cup presses the free leg inward toward the blade, and that compression is the spring.

Hook turned inward
Hook turned inward — the tip catches over the cup
With corrugation and transverse ridges
With corrugation and transverse ridges — the corrugation flattens under load, turning point contact into line contact, and absorbs cup-diameter variation
Centre section
Centre section — the step inside the cavity is the pocket that captures the raised pad on the blade

The mount cavity is generated from the blade's own surface functions rather than measured, so the 1.95 mm pad becomes an undercut that locks the cap on. Estimated tip lateral stiffness at E = 70 MPa: 3 mm leaf 0.11 N/mm, 5 mm leaf 0.51 N/mm, 7 mm leaf 1.41 N/mm. This part is one place where 98A may actually be the right material, since a spring wants modulus.

Two things I am not sure about — if you have the time

No obligation at all, and no rush. These are the two calls I keep going back and forth on:

  1. Is further geometry tuning on 98A wasted effort? My argument is the one above — compensation restored compliance, but friction and rebound are still bad and geometry cannot move either of them. If that holds, I would stop and switch to the 85A I already have. If it does not hold, I would rather know before ordering more filament.
  2. Is rib pitch 4.0 → 3.6 the right fix? 3.6 is the only value that reproduces the OEM blade's measured 4.337 mm rib spacing, but it does make the blade stiffer, and I am not certain that trade is worth it.

Happy to send the source, the STLs or the raw measurements for anything here.