Why Use Gloves? The Case for Finger-Level Control
Most manipulation tasks — pick-and-place, sorting, simple grasping — do not require gloves. A well-calibrated parallel jaw gripper driven by a leader arm or VR controller produces higher data collection throughput at lower cost. Use gloves only when your task genuinely requires individual finger control.
Tasks that benefit from gloves: in-hand reorientation (rolling a bolt, flipping a card), pinch grasps on irregular objects (crumpled paper, fabric folds), multi-finger coordinated manipulation (tying a knot, threading a needle), and dexterous grasp adaptation to object compliance. If your task requires fewer than 3 fingers to work, a parallel jaw will likely outperform a glove-driven dexterous hand in data quality per hour.
The full glove teleoperation pipeline adds complexity at every level: calibration per operator, higher latency than arm teleoperation, more failure modes, higher operator fatigue, and significantly higher hardware cost. Approach it with eyes open.
Glove Hardware Comparison
| Glove | Price/Hand | DOF Tracked | Force Feedback | Haptic Type | SDK | Weight | Best For |
|---|---|---|---|---|---|---|---|
| SenseGlove Nova 2 | $4,000 | 20 (5 finger flexion + abduction) | 5-DOF cable resistance | Vibrotactile + force | Python, ROS | 300 g | Research, imitation learning, best value |
| HaptX G1 | $10,000 | 20 | Yes (microfluidic) | Fluid pressure per fingertip | ROS, Unity | 500 g | Highest fidelity haptics |
| Inspire Glove | $3,000 | 15 (flexion only) | No | None | Python (custom) | 200 g | Budget, paired with Inspire RH56 |
| Dexmo (Dextarobotics) | $6,000 | 22 (11-DOF per hand) | Yes (5 DOF) | Mechanical brake | Unity, Python | 350 g | Full-hand exoskeleton feedback |
| ROKOKO Smartglove Pro | $500 | 18 (position only) | No | None | ROKOKO SDK, Live Link | 80 g | Motion capture only, not manipulation |
| OpenXR DIY | $200–$500 | Variable | No | Optional vibration | OpenXR | Variable | Experimental, low cost |
The SenseGlove Nova 2 is the recommended choice for most imitation learning research. Its force-resistance feedback allows operators to feel when the robot hand is in contact, improving grasp quality and reducing "floating hand" failures where the hand closes without engaging the object. The Python SDK with ROS2 wrapper has the most community support and is compatible with most robot hand interfaces.
The HaptX G1 provides the most realistic haptics via microfluidic actuators that create skin pressure corresponding to contact geometry. This fidelity is valuable for extremely delicate manipulation (electronics components, biological samples) but the $10K/hand price and 500 g weight limit its practical use.
Robot Hand Compatibility
| Robot Hand | Price | DOF Actuated | Payload | Glove Compatible | Notes |
|---|---|---|---|---|---|
| Shadow Dexterous Hand | $110,000 | 20 | 0.5 kg | SenseGlove, HaptX | Most capable, most expensive; compressed air |
| Inspire RH56 DFX | $8,000 | 6 (5 finger + thumb) | 2 kg | SenseGlove, Inspire Glove | Best price-performance; brushless motors |
| Unitree Dex3-1 | $5,000 | 7 (3 fingers, 2-DOF each) | 1.5 kg | SenseGlove | Unitree G1/H1 compatible; compact |
| Leap Hand (v2) | $2,000 | 16 | 0.3 kg | SenseGlove (community) | Open-source, 3D-printable; growing community |
| SAKE EZGripper | $800 | 1 (underactuated) | 0.9 kg | No (gripper, not hand) | Not for glove use |
The Inspire RH56 DFX is the most cost-effective path to dexterous manipulation at $8K. Six actuated DOF (individual finger flexion plus thumb opposition) covers the majority of household manipulation tasks. Paired with a SenseGlove Nova 2, total hand teleoperation cost is ~$12K/hand.
The Leap Hand at $2K is gaining momentum in the research community due to its open-source design and leaphand_ros2 driver. For labs exploring finger-level imitation learning on a budget, it is the entry point.
Calibration Procedure
Every operator requires individual calibration. Gloves do not fit all hands identically, and finger length, knuckle position, and max extension angles vary significantly between operators. Miscalibrated gloves produce systematic bias in all collected data.
- Step 1 — Hand geometry mapping: Measure each operator's finger segment lengths (proximal, medial, distal phalanx) with calipers. Enter into the glove SDK's hand model. SenseGlove provides a calibration wizard; allow 10 minutes per operator.
- Step 2 — Range of motion calibration: Record maximum and minimum flexion angles for each finger by having the operator open fully (0°) and close fully (~90° MCP, ~100° PIP). The SDK stores per-finger min/max and applies normalization.
- Step 3 — Force threshold calibration: With force feedback enabled, gradually increase resistance while the operator reports onset of perception. Set the "contact detected" threshold 20% above noise floor. This prevents false contacts from glove micro-vibrations.
- Step 4 — Robot hand mapping: Map glove DOF to robot hand joint commands. For Inspire RH56, map each finger flexion angle (0–100%) to motor position (0–1000 ticks). Test by commanding each finger independently and confirming visual correspondence.
- Step 5 — End-to-end latency test: Command a rapid finger close (100 ms duration). Measure time from glove sensor reading to observed robot finger motion via wrist camera. Target: <35 ms total.
Latency Analysis
| Stage | Typical Latency | Optimization |
|---|---|---|
| Glove sensor readout | 3–8 ms | Use USB 3.0; avoid hubs |
| Hand model IK | 5–15 ms | Precompute lookup table; GPU IK |
| ROS2 message publish | 2–5 ms | Zero-copy transport; DDS tuning |
| Robot hand command | 10–25 ms | Direct serial vs. ROS2; reduce QoS depth |
| Total round-trip | 20–53 ms | Target <35 ms for natural feel |
| Video feedback (wrist cam) | 33–66 ms (30–60 fps) | Increase frame rate; MJPEG compression |
Latency above 50 ms produces perceptible lag that degrades operator coordination. If your measured total exceeds 50 ms, diagnose by adding timestamps at each stage. The most common culprit is ROS2 QoS configuration — set depth=1 and reliability=BEST_EFFORT for sensor topics to eliminate queue buildup.
Common Failure Modes and Mitigations
- Glove slippage during extended sessions: Glove sensors drift when the glove shifts on the hand. Use non-slip glove liners and tighten straps before each session. Re-run calibration every 30 minutes for multi-hour collections.
- IK singularities in finger joint space: When commanded to extreme poses, the robot hand IK may fail or produce jerky motion. Add joint limit constraints 10° inside mechanical limits and velocity damping near limits.
- Force feedback drift after 2+ hours: SenseGlove cable tension mechanisms drift thermally. Baseline the force feedback at session start and re-zero every 60 minutes.
- Finger IK not matching operator intent: This usually indicates hand geometry miscalibration. Rerun Step 1 and Step 2 of calibration. Check that finger segment lengths in the SDK match physical measurements to within 5 mm.
- Robot hand overheating: Dexterous hands running at high duty cycle for 2+ hours can overheat motor controllers. Monitor motor temperatures (Inspire RH56 logs temperatures via SDK). Pause for 5 minutes if any motor exceeds 65°C.
Data Logging Format for Glove Teleoperation
- /glove/finger_angles: Float array [16] — 4 DOF per finger × 4 fingers + thumb (5 DOF). At 100 Hz.
- /glove/fingertip_forces: Float array [5] — estimated normal force at each fingertip tip in Newtons. At 100 Hz.
- /hand/wrist_pose: Float array [7] — 3D position + quaternion of wrist in robot base frame. At 50 Hz.
- /robot_hand/joint_positions: Float array [6–20 depending on hand] — actual commanded/measured joint positions. At 50 Hz.
- /observations/images/cam_wrist: RGB [480×640×3] close-range wrist camera at 60 fps for finger-object contact visibility.
- Store in HDF5 with per-episode grouping. For compatibility with ACT, extract /glove/finger_angles as the action vector and /robot_hand/joint_positions as the observation. See the data formats guide for conversion details.