wikillm

Paper · 2024-12-19 · cs.RO

Vibration-based Full State In-Hand Manipulation of Thin Objects

Vibrates a thin object held by a parallel gripper with an eccentric-mass motor on a rotating finger. Moving the centre of mass on a circle rotates the object, then a radial move reaches the goal position. Duty-cycle vibration cuts orientation error (author-reported: 1.5 deg vs 3.8 deg for constant frequency on a disk). Position error is about 1.9 mm.

In-hand manipulationStick-slip frictionroboticsin-hand-manipulationvibrationstick-slipparallel-gripper

arXivPDFMarkdown9 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

A simple two-finger gripper can grab a thing but can barely turn it in the grip. This paper adds a small vibrating motor to one finger. When the finger shakes, a thin object alternately sticks to and slips over the finger, so the vibration can push the object in a chosen direction.

The trick is to make the object's centre of mass travel around a small circle centred on the grip point. Because it is held there, the object turns as it goes around. Once it has the right angle, the controller moves the object straight through the grip point, which keeps the angle fixed while the position changes. Turning first and then moving is the order the method uses.

Pulsing the motor on and off, rather than running it continuously, makes the object settle between pulses. The authors report that this keeps the angle steadier while the object moves.

TL;DR

Thin objects held by a parallel gripper can be driven to a full goal state (2-D position and orientation) with an off-the-shelf eccentric-mass vibration motor on one finger and a rotary actuator that steers the vibration. The method rotates the object by making its centre of mass circle the grip point, then translates it radially. Duty-cycle vibration during translation is the main accuracy gain. All accuracy figures are author-reported on a disk and a rectangular plate with a camera-based state estimate.

Problem

Parallel-jaw grippers can grasp but cannot reorient an object in the grip. The earlier vibration-finger mechanism controlled position but not orientation, because it is underactuated: one steering input cannot control both §1 §2.2.4. Constant vibration also keeps breaking static friction, so the object can drift in angle during translation §2.3.3.

For the analysis, the paper assumes the grasping axis is vertical and the object is nearly horizontal, and it tracks a planar state (r, \phi, \psi) §2.2.1 §2.2.2. A grip point away from the COM creates a tilt torque, which the model includes eq. 6.

Method

The mechanism has an eccentric rotating mass (ERM) motor inside a 3D-printed shaft on one finger. A rotary actuator with an encoder sets the direction of the vibration. A passive finger with a roller bearing presses against it to form the initial grasp §2.1.

Model. The object's centre of mass (COM) is written in polar coordinates about the centre of the vibration module, and the object angle is \psi. The state is \mathbf{s} = (r, \phi, \psi) §2.2.1 eq. 1 eq. 2. The vibration force has tangential and normal parts that rotate with the motor, with amplitude ml\omega^2 and steering angle \theta §2.2.2 eq. 3 eq. 4. The normal force adds the grasp force, gravity and a tilt term that depends on where the COM sits relative to the grip point eq. 5 eq. 6. Stick mode holds while |f_v| \le \mu_s |f_N|; slip occurs otherwise, giving kinetic friction f_k = \mu_k f_N eq. 7 eq. 8. The slip condition is written out as eq. 9.

Dynamics. With the net force f_v - f_k treated as constant, the equations of motion in r, \phi and \psi are eq. 10 eq. 11 eq. 12. Torsional friction at the contact is assumed negligible §2.2.3. With steering \theta = \pm\pi or 0, the angular acceleration \ddot{\psi} is zero eq. 13. The COM then moves radially with no change in \psi, which is the existing radial-move behaviour §2.2.3.

Rotation by circular motion. Holding the COM at constant radius r_c (so \dot{r} = \ddot{r} = 0) gives eq. 14 eq. 15 eq. 16. Dividing the tangential equation by the radial one gives the steering rule \tan\theta = -\ddot{\phi} / \dot{\phi}^2 eq. 17. Measuring \dot{\phi} and \ddot{\phi} in real time is usually infeasible, so the paper uses \theta = \pm\pi instead, which gives \ddot{\phi} = 0 and \dot{\phi}^2 = (f_v - f_k) / (M r_c) eq. 18. A non-zero r_c is required §2.2.4. The COM then circles the origin at radius r_c while \psi changes, provided the object already has a non-zero \dot{\psi} §2.2.4.

Position control. The controller in eq. 19 steers the vibration toward the goal (r_g, \phi_g) using k_1, k_2 defined in eq. 20 and eq. 21. The paper cites prior work for its partial stability: it drives the position to the goal but leaves \psi uncontrolled. Motion along the line through the COM keeps \psi constant §2.3.2.

Duty cycle. The motor's normal operation is constant voltage at a frequency \omega_o. The paper instead drives it with a duty-cycle function \Omega(t), which gives pulses with pauses between them so the object can re-stick §2.3.3.

Algorithm 1 (paraphrased from alg. 1 and §2.3.4). Input: goal \mathbf{s}_g = (r_g, \phi_g, \psi_g). Moves the COM to the origin, rotates to \psi_g, returns to the origin, then moves to (r_g, \phi_g). Duty-cycle vibration is used in the translation steps. Constant frequency \omega_o is used in the rotation steps.

Pseudocode
# Full-state manipulation to a goal  [alg. 1] [§2.3.4]
# Input:  goal (r_g, phi_g, psi_g)
# Output: |r - r_g| <= eps_r and |psi - psi_g| <= eps_psi

def manipulate(goal):
    # Move the COM to the origin along the radial direction,
    # with steering +-pi and duty-cycle vibration  [alg. 1]
    while r > eps_r:             # re-read the state on every tick
        steering = pi            # theta = +-pi; sign not stated
        frequency = duty_cycle(t)  # Omega(t)  [§2.3.3]
    vibration_off()              # omega = 0; orientation is held

    # Set the orbit radius to r_c and kick the object into rotation
    # [alg. 1] [§3.2]
    set_frequency(omega_o)       # constant frequency  [§2.3.3]
    steering = theta_kick        # in [pi/6, pi/4] for dt  [§3.2]
    wait(dt)                     # dt = 0.1 s  [§3.2]

    # Rotate until the angle error is within eps_psi  [alg. 1]
    do:
        steering = pi            # theta = pi, rotate toward psi_g
        set_frequency(omega_o)   # constant frequency for rotation
    while abs(psi - psi_g) > eps_psi
    vibration_off()

    # Return the COM to the origin so that the translation is
    # radial and does not rotate the object  [alg. 1] [§2.3.4]
    while r > eps_r:
        steering = pi            # return to COM
        frequency = duty_cycle(t)

    # Translate along r-hat to (r_g, phi_g)  [alg. 1] [§2.3.4]
    while abs(r - r_g) > eps_r:
        if r is zero:            # written "r(t) = 0" in the algorithm
            steering = phi_g     # first leg: aim along phi_g
        else:
            steering = 0         # relative to r-hat: feedback control
        frequency = duty_cycle(t)
    vibration_off()

Hyperparameters

NameValueWhereNotes
Duty-cycle setting \Omega(t) in translation50%§3.2Period and on/off durations not stated.
Rotation frequency \omega_o168 Hz§3.2Stated for the rotation (cyclic) steps.
Constant-frequency baseline \omega_o240 Hz§3.2Used as the non-duty-cycle baseline for translation. Conflicts with 168 Hz; see Pitfalls.
Kick angle \theta_{\Delta t}range [\pi/6, \pi/4]§3.2Hand-calibrated; any value in range is said to work.
Kick duration \Delta t0.1 s§3.2
Position tolerance \epsilon_r1 mm§3.2
Orientation tolerance \epsilon_\psi1°§3.2
Orbit radius r_c7.75 mm in the cyclic demo§3.2Rule for choosing r_c for the algorithm runs not stated. Per-object maxima in tab. 2.
Grasp force f_b3 N§3.1FEM only. Grasp force in the physical experiments not stated.
Vibration motorPololu ERM, 10 × 3.4 mm§3.2Eccentric mass m and link length l not stated. Operating voltage not stated.
GripperRobotiq 2F-85§3.2
Pose sensingArUco markers, 60 Hz§3.2Error about 1.5 mm and 1°, per the paper.
Friction coefficients \mu_s, \mu_knot stated§2.2.2
Object mass M, inertia Inot stated§2.2.3Test objects described in §3.2 and tab. 2.
Test objects100 mm radius, 2 mm thick PLA disk; 80 × 110 mm plate§3.2
Trials100 per object (algorithm); 10 (cyclic demo); 10 per task§3.2 §3.3

Results

Author-reported. Setup: a Robotiq 2F-85 gripper with the vibration module and ArUco tracking at 60 Hz. The algorithm was tested on a disk and an 80 × 110 mm plate over 100 random goal states. Each run started where the last one ended §3.2. The comparison is between the duty-cycle function and a constant frequency.

SettingMetricConstant freq. \omega_oDuty cycle \Omega(t)Source
DiskOrientation error3.8 ± 1.2°1.5 ± 1.02°tab. 1
DiskPosition errornot reported1.88 ± 0.87 mmtab. 1
Plate (80 × 110 mm)Orientation error4.5 ± 1.5°2.7 ± 1.3°tab. 1
Plate (80 × 110 mm)Position errornot reported1.92 ± 0.90 mmtab. 1

Task demonstrations, 10 trials each, with random initial states and predefined goals §3.3 tab. 2:

ObjectThickness (mm)Weight (g)Max. r_c (mm)Success
Credit card0.761450100%
Steel ruler0.60172070%
Cellphone7.851727590%

Other reported values: the cyclic motion succeeded in 10 of 10 trials §3.2. One example trajectory ended with 0.76 mm position error and 2° orientation error §3.2. The FEM results are qualitative only §3.1.

Paper vs code

No official code. Searched the paper and the arXiv metadata for links (none). Searched GitHub for "vibration in-hand manipulation thin objects", "vibratory finger manipulator", "VFM sintov", "vibration gripper" and "Nahum Sintov gripper". No matching repositories. Checked the public repositories of the author accounts (avishais, sintov) for vibration, gripper, in-hand or stick-slip topics; none matched.

Pitfalls

  • Two values of \omega_o. The rotation runs use 168 Hz §3.2. The constant-frequency baseline for translation uses 240 Hz §3.2. The paper does not say which value the baseline row in tab. 1 used for rotation. Treat the frequency for each step as unresolved.
  • Position error missing for the baseline. tab. 1 reports position error only for the duty-cycle rows. The text says the position errors "match" the earlier VFM work §3.2, so that claim cannot be checked from this paper.
  • Equation 9 does not follow from eqs. 3–5 as written. From |f_v| > \mu_s |f_N| with f_N = f_b + f_n + Mg + f_d, the f_n term sits in the normal force. eq. 9 instead puts \mu_s \sin(\omega t) inside the absolute value and leaves f_n out of the \mu_s term. Implement the threshold from the force definitions and check it against the experiments.
  • Constant-force assumption. The model treats f_v - f_k as constant even though both are sinusoidal §2.2.3. Errors from this approximation are not quantified. The FEM is described as qualitative §3.1.
  • Torsional friction. The paper assumes it is negligible and says this is validated in experiments §2.2.3. No number is given for that check.
  • Equality test in the algorithm. The radial-leg step tests "r(t) = 0" alg. 1. A real state is never exactly zero, so implement this as a tolerance check against \epsilon_r. (Inference: the paper does not say how it handled this.)
  • Rotation direction. The sign of \pm\pi is not stated alg. 1. The sign of \dot\psi produced by the kick is not stated either. The kick angle is described as arbitrary within the range. Expect the rotation direction to depend on the chosen sign and the kick angle.
  • Non-zero starting angular velocity. Circular motion requires a non-zero \dot\psi §2.2.4. The kick is the only mechanism that creates it. If the kick fails, the orbit does not start.
  • Radius must be non-zero. Circular motion about the origin is impossible at r = 0 eq. 18 §2.2.4. The method first moves the COM to r_c, but the paper does not give a rule for choosing r_c beyond the per-object maxima in tab. 2.
  • Steering rule not measurable directly. The exact steering law eq. 17 needs \dot\phi and \ddot\phi, which the paper says are usually not measurable. It switches to \theta = \pm\pi §2.2.4. Plan for this approximation.
  • Duty cycle definition. The paper calls \Omega(t) both a "duty cycle" and a "frequency function" §2.3.3 alg. 1. The period and pulse length are not stated. Only the 50% setting is reported §3.2.
  • Tolerances near sensor noise. The stop tolerance \epsilon_r is 1 mm §3.2, and the reported tracking error is about 1.5 mm §3.2. (Inference: the stop test can trigger on noise, and the reported error is close to the tolerance.)
  • Underactuation order. Orientation must be controlled first, then position §4. The method is built this way and cannot correct position and orientation together.
  • Ruler case. The ruler has the lowest success rate, 70% tab. 2. The paper attributes this to its narrow shape and small maximum r_c, which raises the chance of dropping the object during the orbit §3.3.
  • Table typo. tab. 1 writes "+-" in one cell. Read it as ±.

Lineage

  • Builds on: Nahum and Sintov's vibration force module (VFM), cited in this paper as [Nahum2022]. This paper adds full-state control. The arXiv id of that work is not stated here. The position controller comes from that work §2.3.2.
  • Uses concepts from: partial stability [Vorotnikov1995] for the position controller; torsional friction [Sintov2016tro]; stick-slip vibration effect [Gao1994] §1.
  • Compared against: constant-frequency vibration within this paper tab. 1.
  • Superseded by: not stated.

Source and license

Adapted from “Vibration-based Full State In-Hand Manipulation of Thin Objects” by Oron Binyamin, Guy Shapira, Noam Nahum, Avishai Sintov (arXiv:2412.14899), 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.