wikillm

Paper · 2024-11-29 · cs.RO

Grasping and Rolling In-plane Manipulation Using Deployable Tape spring Appendages

GRIP-tape is a two-arm gripper whose arms are bidirectional tape springs: two tape-measure blades bonded together. The arms roll into a compact spool and extend into beams. Seven motors set each arm's length and angle and the gap. Shows grasping, in-hand rolling, conveyance, base load-cell force sensing and automatic grip. Author-reported: 3.72 ± 0.35 mm mean tip error over 16 targets.

In-hand manipulationTeleoperationgrippersoft-roboticstape-springdeployable-structurein-hand-manipulationforce-sensing

arXivPDFMarkdown17 min read

AI-compiled by claude-haiku-5-5 on 2026-10-25, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Most robot arms are rigid. To reach farther they need longer, heavier links, and those links take up more room when the arm is packed away. This paper takes a different route. The "fingers" are strips of the curved steel used in a tape measure. Two strips are stuck together so they bend the same way in both directions. Such a strip can be flattened and rolled onto a spool when it is not needed, and pushed out straight to form a stiff beam when it is needed.

The beams are the gripping surfaces, so the whole length of each beam can hold an object, not just a tip. Feeding tape in or out at the base changes an arm's reach and shape. Moving the two arms in the same direction turns an object in place. Moving them in opposite directions carries an object toward the base. Where the beam bends, it is soft, so it touches delicate things gently. A load cell in the base lets the robot estimate the grip force.

The authors demonstrate grasping, rolling, twisting a tomato off its vine, moving several objects at once, and an automatic routine that finds, measures and grips an object without a person in the loop.

TL;DR

  • GRIP-tape has two arms. Each arm is made of a bidirectional tape spring: two spring-steel strips from a tape measure, bound together §Design.
  • Each arm is a triangle. The straight sections carry load and the buckled end is a rolling joint. Seven motors set the two tape lengths and the angle of each arm, plus the gap between the arms fig. 3 p. S2.
  • Kinematics assume rigid links and a constant-curvature arc at the joint. Forward kinematics needs three nonlinear equations. Inverse kinematics has a closed form §Kinematics p. S3 p. S4.
  • Author-reported: 3.72 ± 0.35 mm mean tip error over 16 targets with 6 trials each §Kinematics fig. 4. Object rotation and conveyance are shown, and grip force is estimated from a base load cell §Demonstrations §Sensing.
  • The paper leaves several values unstated: tape dimensions, the force-feedback gain, the units of the fitted curves and the solver for the forward kinematics. No official code was found.

Problem

Rigid multi-link arms trade reach against stowed volume. Longer links give more reach but add weight and need more room when stowed §Introduction. Deployable structures can change volume, but current deployable manipulators keep a separate end effector. That end effector adds weight, needs cables routed through the deployed structure, and limits where the system can grip §Introduction.

Tape-spring robots exist, but they use the tape as structure and add special end effectors for gripping §Introduction. The authors instead make the deployable structure the gripping surface, so no end effector is needed §Introduction §Demonstrations.

Assumptions and limits:

  • Manipulation is planar, with two arms opposing each other. The authors state that 3D motion is future work §Discussion.
  • Tape arms have limited reach because they sag under their own weight and flex the base. The bidirectional arm reached 5 ft horizontally, limited by weight and by the stiffness of the 3D-printed parts §Mechanics.
  • Kinematics treat the deployed beams as rigid. The bend radius is set to a constant 15 mm, measured near zero load §Kinematics.

Method

The paper is in Science format and has no numbered sections, so citations here name the section (for example §Design). Supplementary pages are cited as p. S2 and supplementary figures as fig. S1. Bibliography keys appear in the Lineage section where a reference is named.

Tape and appendage §Design. Two spring-steel strips from an off-the-shelf tape measure are aligned and bound along their length, forming a bidirectional tape. The bond was duct tape in the main build. Each appendage is a triangle. Its straight sections are structural, and the buckled end is a rolling hinge §Design fig. 3.

Sleeve for spooling §Mechanics. A bonded pair cannot be wound on a spool, because the inner and outer strips need different lengths and the bond stops them sliding. The authors put a low-friction sleeve between the adhesive and the inner strips. The strips can then slide and the tape coils evenly §Mechanics.

Extruders and drives §Design p. S2. Each appendage has two tape extruders. Each extruder is a pair of rollers with the tape between them. One roller is driven by a servo and the other is passive. The outer extruder sets the outer length change δL1 and the inner extruder sets δL2. A servo on the base turns the angle beam that holds a guiding ring, which sets the outer angle θ1. One shared motor drives a rack and pinion that sets the gap w between the two arms §Design fig. 3.

Appendage modes fig. 3. The paper describes four motions:

  1. Changing δL1 or δL2 alone bends the inner section while the outer section keeps its angle.
  2. Changing θ1 sweeps the arm. Holding the total length constant makes the tip trace an ellipse.
  3. Changing the gap w changes the inner angle and side length, while the outer section stays fixed.
  4. Equal and opposite extrusion, δL1 = −δL2, moves the tape surface inward or outward while the arm shape stays the same. This is the conveyance motion.

Kinematics §Kinematics. Each appendage is two straight sections, L1 and L2, plus a constant-curvature arc of length L3 that is tangent to both. The rolling joint has radius r. The constants b, c, d and L4 are fixed by the frame. The width a varies. The paper gives no equation numbers, so equations are cited to their section.

Forward kinematics. Inputs are the total tape length L, the arm angle θ4 and the gap a. The output is the centre of the rolling joint, (x, y). The guiding-ring position relative to the outer extruder is v = (−d, c) + L4 (cos θ4, sin θ4). The outer arm angle is the direction of v. L1, L2 and θ2 then follow from three constraints. The total length is L = L1 + L2 + r(θ1 − θ2 + π). The horizontal and vertical joint closures are L1 sin θ1 + r sin(θ1 − π/2) = L2 sin θ2 + r sin(θ2 + π/2) − b, and L1 cos θ1 + r cos(θ1 − π/2) = L2 cos θ2 + r cos(θ2 + π/2) + a §Kinematics p. S4.

Inverse kinematics. Inputs are the target centre (x, y) and the gap a. The closed-form solution is in the pseudocode below p. S3 p. S4.

Grasp, roll and convey §Demonstrations p. S5 p. S6. To grasp, both arms move to contact and the contact sections are set parallel to the grip direction. The gap is then set to the object width. Rolling an object in place moves the two arms in the same direction at equal speed. The contact points then move in opposite directions and the object turns. To keep the object in place during rolling, one side extrudes and the other retracts by the same amount §Demonstrations. Conveyance moves the arms in opposite directions while the parallel alignment is kept. Rolling and conveying can be mixed by giving the two arms different speeds p. S6.

Translation p. S5. Translating an object uses all seven motors. Each arm gets a set of waypoints from its current position to the target. Constant motor speed between waypoints gives a path that is not straight. The authors reduce this by placing the waypoints closer together. They do not measure the residual error p. S5.

Force sensing §Sensing fig. S7. The load cell is built into the angle beam. Moment balance on each section converts the cell reading into a force at the tip. The bend torques τ1 and τ2 come from a spline fit to torque measured against bend angle on a bidirectional tape held in a pinch §Sensing fig. S7. The tip force is then estimated from the base reading.

Stiffness of the bent tip §Mechanics. A tape bent through 180° was compressed and the force-displacement curve was fitted with a cubic polynomial. The curves for the bidirectional tape and for the two unidirectional tapes are given in p. S2. Hysteresis was observed between loading and unloading §Mechanics fig. 5.

Automatic gripping §Automatic. The routine uses only the force estimate at the tip and a contact threshold of 0.25 N. It has five steps:

  1. sweep the left arm inward until contact is detected;
  2. sweep the right arm inward until contact is detected;
  3. open the arms and align the contact sections parallel to the grip axis;
  4. close the arms until contact again; the remaining gap is the object width;
  5. retract the left arm until contact is lost. Forward kinematics then gives the object's position in the workspace.

Feedback during rotation §Feedback. A proportional controller sets the grip width from the difference between the desired force and the measured force. A reading below the target narrows the width, and a reading above it widens it. The paper compares open-loop and closed-loop rotation of an ellipse. Open loop drops the object and closed loop keeps the grip §Feedback fig. 8.

Pseudocode
# Forward kinematics of one appendage  [§Kinematics] [p. S4]
# Input:  total tape length L, arm angle theta4, gap a
# Output: rolling-joint centre (x, y), arm angle theta1

def forward_kinematics(L, theta4, a):
    # Guiding-ring position relative to the outer extruder  [§Kinematics]
    ring_x = -d + L4 * cos(theta4)
    ring_y = c + L4 * sin(theta4)
    # Outer arm angle from the ring direction; quadrant not stated  [p. S4]
    theta1 = atan2(ring_y, ring_x)
    # Solve for L1, L2 and theta2 from the three constraints  [§Kinematics]
    # The paper does not name a solver for these equations
    L1, L2, theta2 = solve_constraints(L, theta1, a, b, r)
    # Rolling-joint centre from the outer arm  [§Kinematics]
    x = L1 * cos(theta1) + r * cos(theta1 - pi / 2)
    y = L1 * sin(theta1) + r * sin(theta1 - pi / 2)
    return x, y, theta1
Pseudocode
# Inverse kinematics of one appendage  [p. S3] [p. S4]
# Input:  target centre (x, y), gap a; constants b, c, d, L4, r
# Output: L1, L2, L3, theta4

def inverse_kinematics(x, y, a):
    # Hypotenuses from each extruder to the target centre  [p. S3]
    dist1 = sqrt(x**2 + y**2)
    dist2 = sqrt((a - x)**2 + (y + b)**2)
    # Angles of the two hypotenuses  [p. S3]
    theta11 = atan(y / x)
    theta21 = -atan((y + b) / (a - x))
    # Tangent-point angles at the rolling joint  [p. S3]
    theta12 = asin(r / dist1)
    theta22 = asin(r / dist2)
    # Straight-section lengths  [p. S3]
    L1 = dist1 * cos(theta12)
    L2 = dist2 * cos(theta22)
    # Arc angle and arc length  [p. S3]
    theta31 = theta11 + theta12
    theta32 = (pi - theta21) + theta22
    L3 = (theta31 + theta32) * r
    # Guiding-ring angle from the fixed frame geometry  [p. S4]
    theta_c = atan(c / d)
    theta_f = pi - theta_c - (theta11 + theta12)
    e = sqrt(d**2 + c**2)
    theta5 = asin(e * sin(theta_f) / L4)
    theta4 = (theta11 + theta12) - theta5
    return L1, L2, L3, theta4
Pseudocode
# Tip-remain transform, one control step  [p. S4] [p. S5]
# Input:  inverse-kinematics targets L1_target, L2_target, L_target;
#         current total length L_now and inner length L2_now
# Output: outer extruder move, inner extruder move

def tip_remain_step(L1_target, L2_target, L_target, L_now, L2_now):
    # Inner extruder moves so the tangent point on L2 stays put  [p. S5]
    delta_e2 = L2_target - L2_now
    # Outer extruder takes the rest of the total-length change  [p. S5]
    delta_e1 = (L_target - L_now) - delta_e2
    return delta_e1, delta_e2
Pseudocode
# Contact force at the tip from the base load cell  [§Sensing] [fig. S7]
# Input:  load-cell reading f_read, angles, lengths, bend torques tau1, tau2
# Output: force at the tip of the contact section, f_tip

def tip_force(f_read, theta1, theta4, L1, L1_prime, L2, L2_prime,
              tau1, tau2):
    # Load-cell force resolved onto the outer arm  [p. S6]
    f_1_prime = f_read / cos(theta1 - theta4)
    # Moment balance on the outer section  [p. S6]
    f_1 = (f_1_prime * L1_prime + tau1) / L1
    # The paper sets the contact-section force equal to f_1  [p. S6]
    f_2 = f_1
    # Moment balance on the contact section  [p. S6]
    f_tip = (f_2 * L2 + tau2) / L2_prime
    return f_tip
Pseudocode
# Automatic search, measurement and grip  [§Automatic]
# Input:  contact threshold 0.25 N
# Output: object position in the workspace, object width
# Helper names below are ours; the paper describes these steps in prose

def auto_grip(threshold):
    # Step 1: sweep the left arm inward until contact  [§Automatic]
    sweep_until_contact(left_arm, threshold)
    # Step 2: sweep the right arm inward until contact  [§Automatic]
    sweep_until_contact(right_arm, threshold)
    # Step 3: open, then align the contact sections parallel  [§Automatic]
    open_and_align_parallel(left_arm, right_arm)
    # Step 4: close until contact; the gap is the object width  [§Automatic]
    width = close_until_contact(threshold)
    # Step 5: retract the left arm until contact is lost  [§Automatic]
    distance = retract_until_contact_lost(left_arm, threshold)
    # Forward kinematics gives the object position  [§Automatic]
    position = forward_kinematics_of(left_arm, distance)
    return position, width
Pseudocode
# Proportional grip-width update during rotation  [§Feedback]
# Input:  desired force, measured force, current width, gain (not stated)
# Output: new grip width

def grip_width_step(desired, measured, width, gain):
    # Positive error means too little force, so the width narrows  [§Feedback]
    error = desired - measured
    return width - gain * error

Hyperparameters

NameValueWhereNotes
Tape materialspring steel from an off-the-shelf tape measure§Designtape width, thickness and length: not stated
Tape bondtwo strips bound along their length§Designduct tape in the main build; heat-sealed fabric pouch in an earlier build used for the rotational-base test §Design
Low-friction sleevebetween adhesive and inner strips§Mechanicsmaterial and thickness: not stated
Rolling-joint radius r15 mm§Kinematicsmeasured at near-zero load; held constant
Gap avaries§Kinematicsset by the rack and pinion
Constants b, c, d, L4not stated numerically§Kinematics p. S2 fig. S1fig. S1 shows dimension labels that the text does not map to these symbols
Constant b, per arm setdiffers between the two arm setsp. S2the text gives no separate value
Guiding ring offset115 mm from the motor axisp. S2whether this equals L4 is not stated
Base plate450 mm × 200 mm acrylicp. S2
Rack and pinionpinion radius 14 mm; two 8 mm guide rodsp. S2
Extruder bearings5 × 10 × 4 mm; four M3 screws per roller housingp. S2
Motors5 × XL430-W250-T (1.5 N·m stall); 2 × XM540-W270-T (10.60 N·m stall)p. S2
Motor controlextended position mode with built-in PIDp. S4PID gains: not stated
SoftwareMATLAB with Dynamixel Protocol 2.0p. S4
App default speed30 degree/sfig. S5from the app screenshot
Gamepad stepat most 10 mm per loop cyclep. S6
Contact threshold0.25 N§Automaticrise in the tip-force estimate that counts as contact
Force-feedback gainnot stated§Feedback
Bend torque τ(angle)spline fit to data at 5° steps from 0° to 50°fig. S7read from plot: about 64 N·mm at 10°, plateau about 44–46 N·mm above 20°
Stiffness fitscubic in displacementp. S2units of force and displacement: not stated
Buckling fitsF = M / (x − offset); M from 22.08 to 120.21, offset from 2.55 to 8.73p. S2units and test lengths: not stated
Fatigue test4000 cycles; load cell 20 cm from the start point§Designarm stops at 16.5°
Tip-load testL2' = L2§Sensing
Motion-capture setupOptiTrack Motive with 13 Primex cameras§Kinematicscamera calibration: not stated

Results

Author-reported. Setup: bend and fatigue tests on tape-measure strips §Design; extension tests with the arm horizontal §Mechanics; position tracking with motion capture §Kinematics; demonstrations by teleoperation §Demonstrations. The baseline is the unidirectional tape, or the averaged double-stacked tape, where the paper gives one.

SettingMetricBaselineThis paperSource
3-point bend, bidirectional vs unidirectionalpeak buckling forceunidirectional tapehighest peak; no number givenfig. 2 (B)
Rotational-base testpeak buckling forceunidirectional tapedouble-stacked is about 2× unidirectional; bidirectional exceeds the average of the two double-stacked casesfig. 2 (D)
Fatigue, 4000 cyclesbuckling force4.97 N4.915 N§Design fig. 2 (E)
Fatigue, 4000 cyclesbuckling angle1.28°1.16°§Design fig. 2 (F)
Extension, arm horizontalreachunidirectional: 3.5 ftbidirectional: 5 ft§Mechanics
Tip position, 16 targets × 6 trialsmean position errornot stated3.72 ± 0.35 mm§Kinematics fig. 4 (C)
Path following, 4 polygons × 3 cyclestrackingnot statedgood tracking; no error figure given; no calibration between paths§Kinematics fig. 4 (D)
Compression, bent tipforce at a given displacementunidirectional tapesbidirectional exceeds the sum of the two unidirectional curves; hysteresis observed§Mechanics fig. 5 (A, B)
Effective modulus of bent tipYoung's modulussilicone elastomers (qualitative)"broadly similar"; value not given in text§Mechanics fig. 5 (D)
Tip force estimateagreement with tip load cellnot applicable"very good agreement"; no error given§Sensing fig. 8 (C)
Rotation of an ellipsegrip retainedopen loopopen loop drops the object; closed loop keeps it§Feedback fig. 8 (J)

Other results without numbers: stable grasp of a rubber ball, a tomato vine, cherry tomatoes and a lemon; a lightbulb screwed in; obstacle deflection and self-recovery after a strike §Demonstrations fig. 6 fig. 7.

Paper vs code

No official code.

I searched in this order. The arXiv abstract and the paper's text contain no code or project-page link. GitHub search for "GRIP-tape" and "tape spring gripper" returned no matching repository. A search for "tape" inside the gravish-lab organisation returned nothing. A search for "GRIP tape" under the account of author Nicholas Gravish (nickgravish) returned nothing either.

The supplement describes MATLAB and Dynamixel code, but no repository was found that could be used.

Pitfalls

  • Figure panel letters differ between text and captions. The text cites the lemon lifting as fig. 6 (D), but the caption puts lifting at (C). The text cites the test setup of the rotational-base test as fig. 2 (C), but the caption puts the fatigue test at (C). Use the caption letters when you read the figure, and check which one a figure reference points to.
  • Supplementary figure numbering is off. The bend-torque figure is cited in the text as Fig. S6, but the supplement PDF labels it Fig. S7 and has no Fig. S6. Its cover page lists "Figs. S1 to S6".
  • Fatigue angle values conflict with the stop angle. The text says the arm stops at 16.5° during the fatigue test. It then reports a buckling angle that falls from 1.28° to 1.16°. The paper does not say how these two angles relate, so do not use either as a setpoint without checking.
  • The forward kinematics solver is not named. The paper states three nonlinear constraints for L1, L2 and θ2 and does not say how to solve them. The supplement uses a plain arctangent for θ1. The paper does not say which quadrant is intended. An implementation needs a quadrant-aware form, such as atan2. This is our inference from the formula, not a statement in the paper.
  • The inverse kinematics does not produce the total length. The supplement says the target step needs L1*, L2* and L* p. S4. The inverse-kinematics block returns only L1, L2, L3 and θ4. How L* is computed is not stated.
  • Units of the fitted curves are not given. The cubic stiffness fits and the buckling fits p. S2 have no units for force or displacement. The test lengths for the buckling fit are not stated in the text, although the fit uses them.
  • The buckling model is a fit, not a derivation. The text says the buckling moment is approximately constant, which gives F = M / (x − offset). The offsets and moments come from the fitted data only §Design p. S2.
  • Early and final tape builds differ. The rotational-base test used an earlier build with a heat-sealed fabric pouch instead of duct tape. The paper says the early build has no duct-tape stiffness, so results from the two builds should not be mixed §Design.
  • The friction explanation is not measured. The paper suggests that friction on the test platform explains the unidirectional results, and that the bidirectional tape avoids it. This is offered as a likely cause, not a measured result §Design.
  • Bend torque depends on an unstated angle. The torque curve is measured on a bidirectional tape and used for both arms §Sensing fig. S7. The text does not say which bend angle (θ1, θ2 or another) is fed into each torque lookup.
  • Force sensing needs geometry not in the text. L1' and L2' appear in the force equation, but their definitions are only in fig. 8 (B), which is not described in words. The tip-load test uses L2' = L2 §Sensing.
  • Contact force assumed equal across sections. The estimate sets the contact-section force equal to the outer-section force p. S6. The paper does not test this assumption.
  • Force feedback has no gain. The controller is described as proportional, but the gain, the sign convention and the filtering are not stated §Feedback.
  • Automatic gripping has no timing. The 0.25 N threshold is given, but not the sweep speed, the step size or the timeout §Automatic.
  • Open-loop rolling works only for round objects. The authors say open-loop rotation works for round objects and fails for irregular ones §Feedback.
  • Translation is not straight. Constant motor speed between waypoints gives a curved path. Closer waypoints are the stated fix. No residual error is reported p. S5.
  • Load and gravity are approximated. The bend radius r is set to 15 mm, the value at near-zero load. The paper does not model how r changes under load §Kinematics.
  • Stiffness of the tip is not quantified. The effective Young's modulus is computed for a 15 mm × 25.4 mm × 30 mm cube, but the value and the formula are not given in the text §Mechanics.
  • Gripping-force map uses a tip-load assumption. The force map assumes the external load acts at the tip, using the minimum arm length, although the authors note that the arm can touch objects along its inner length §Kinematics.
  • Arms sag at full extension. The bidirectional arm sags under its own weight and bends the base and extruder assembly. No sag figures are given §Mechanics.
  • Heavy hardware, cheap strips. The tape strips are cheap, but the arms need seven Dynamixel motors, 3D-printed parts and an acrylic base. No cost figures are given p. S2 §Discussion.
  • Teleoperation is the default control. Demonstrations used a joystick app, and the gamepad moves the target by at most 10 mm per loop cycle p. S6 §Demonstrations.

Lineage

  • Builds on: tape springs as deployable booms and their bistable buckling §Introduction; symmetric shell designs for composite booms (bibliography key Fernandez2017-by) §Design; antagonistic tape-spring arms for reaching into tight spaces (keys Quan2022-un, Quan2023-ee) §Introduction.
  • Compared against: belt-driven and active-surface grippers (keys Kakogawa2016, Morino2020, Tincani2012, Krug2014-dj, Ma2016-hn) §Discussion; telescoping and scissor deployable arms (keys Kemp2022-xy, Suthar2021-uw, Teshigawara2019-ra) §Introduction.
  • Superseded by: none known from this wiki.

Source and license

Adapted from “Grasping and Rolling In-plane Manipulation Using Deployable Tape spring Appendages” by Gengzhi He, Curtis Sparks, Nicholas Gravish (arXiv:2412.00268), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.