Back to Guides

Force/Torque Sensor Selection Guide for Robot Arms and Manipulation

How to choose the right force/torque sensor — wrist vs. fingertip, measurement range, resolution, and integration guide for robot manipulation.

← Guides

Most manipulation failures are contact failures. The right force/torque sensor tells your robot what its fingers are feeling — here is how to choose one.

Why Force/Torque Sensing Matters for Manipulation

Vision-only manipulation policies fail predictably on contact-sensitive tasks: peg insertion, drawer opening, screw fastening, and any task where the robot must apply a controlled force rather than simply move to a pose. The fundamental reason is that vision cannot directly measure force — it can only infer contact from appearance, which is unreliable for small contact areas, deformable objects, or occluded grasps.

Force/torque (F/T) sensing adds the sense of touch. A 6-axis wrist F/T sensor measures three force components (Fx, Fy, Fz) and three torque components (Tx, Ty, Tz) at the robot wrist. This allows policies to detect contact, regulate applied force, detect slip, and recognize task completion events (e.g., peg fully seated when insertion force drops).

The cost-benefit of adding F/T sensing is high. A $1.5K–$3K sensor can be the difference between a policy that works in the lab and one that works in production. For any task involving contact, insertion, or force regulation, budget for F/T sensing from the start.

The trade-off: F/T sensors add weight (100–400 g), reduce payload, add a potential failure point, and require careful integration. They are not necessary for free-space pick-and-place — only for contact-rich tasks.

Sensor Types: Wrist 6-Axis vs. Fingertip Tactile

Wrist 6-axis F/T sensors mount between the robot arm flange and the gripper/end-effector. They measure all forces and torques at the wrist, regardless of gripper type. They are the workhorse choice for most manipulation applications.

Sensor Price Type Force Range (Fz) Resolution Bandwidth Interface Best For
ATI Gamma SI-32-2.5 $3,200 Wrist 6-axis 32 N 6.25 mN 7 kHz EtherCAT/USB Precision assembly, highest accuracy
Robotiq FT 300-S $1,950 Wrist 6-axis 300 N 0.1 N 100 Hz RS-485/USB UR arms (native), general manipulation
Bota SensONE $1,500 Wrist 6-axis 200 N 0.1 N 2000 Hz EtherCAT/USB High-bandwidth contact tasks
OnRobot HEX-E QC $2,800 Wrist 6-axis 200 N 0.2 N 100 Hz UR Tool I/O UR arms, quick-change mount
FANUC F-200iA (built-in) Included Wrist 6-axis 200 N 0.5 N 1000 Hz Proprietary FANUC arms only
GelSight Mini $500 Fingertip tactile ~5 N normal 0.01 N 30 fps USB Grasp slip detection, texture sensing
uSkin (XELA Robotics) $800 Fingertip tactile (3×4 array) ~20 N 0.05 N/cell 100 Hz USB/SPI Distributed contact sensing

Fingertip tactile sensors (GelSight, uSkin) provide spatially distributed contact information at the fingertip surface. They answer "where is the contact and what is its shape" rather than just "how much force at the wrist." They are used for slip detection, grasp quality estimation, and tasks requiring contact localization.

For most manipulation tasks, start with a wrist 6-axis sensor. Add fingertip sensors if you need slip detection or grasp texture information. Running both simultaneously is viable on a workstation-class compute platform.

Key Specifications Explained

Specification What It Means Practical Implication
Force range Maximum measurable force before saturation Must exceed peak task forces including collision; overload safety is separate
Resolution Smallest detectable force change Determines delicacy threshold; 0.1 N resolution detects contact at 0.1 N
Bandwidth (Hz) Fastest signal updates per second Control loops running at 1 kHz need sensor bandwidth >1 kHz
Overload rating Maximum survivable force (not measurement range) Must be 5–10× rated range for collision safety
Crosstalk (%) Effect of one axis on another axis's reading ATI <1%, budget sensors 3–5%; matters for precision tasks
Thermal drift Signal change per °C without load Re-zero after warm-up; compensate in long sessions
Weight Sensor mass added to payload chain 100–400 g; subtract from arm's rated payload

Overload Protection: The Critical Safety Requirement

F/T sensors are precision instruments that can be permanently damaged by forces exceeding their rated range. During robot programming, debugging, and unexpected collisions, the arm can easily generate forces 10–50× the sensor's rated range. This is the most common cause of expensive F/T sensor failure.

Minimum overload protection requirements:

  • Select a sensor with overload rating ≥10× rated force range. ATI Gamma (32 N rated, 900 N overload) meets this. Robotiq FT300-S (300 N rated, 800 N overload) is borderline — the 2.7× overload ratio is lower than ideal. For collision safety, prefer ATI.
  • Software force limit: Configure your robot controller to abort motion when wrist force exceeds a threshold (e.g., 20 N for a delicate task, 50 N for robust manipulation). This is separate from the physical overload protection but catches programming errors.
  • Mechanical overload protection: Some F/T sensors include mechanical slip clutches or fuses that protect the sensing element during hard collisions. ATI offers this as an optional module. For high-speed applications or collaborative robots, mechanical protection is worth the added cost.
  • Gravity compensation at startup: After mounting an end-effector, the sensor reads a constant offset equal to the gripper weight × gravity vector. Run bias compensation (zero the sensor with the gripper in a known orientation) at the start of every session. Failing to do this adds a constant bias to all force readings that corrupts contact detection.

ROS2 Integration Guide

All major F/T sensors have ROS2 drivers. The integration pattern is standard:

  • Driver installation: Robotiq: apt install ros-humble-robotiq-ft-sensor. ATI: ati_force_torque ROS2 package on GitHub. Bota: rokubimini ROS2 package. All publish to /ft_sensor/wrench as geometry_msgs/WrenchStamped.
  • Bias compensation node: Run at startup with gripper in reference pose. Call the /ft_sensor/bias service with the gripper hanging vertically downward. This removes gravity offset. Re-run after any gripper change or at the start of each session.
  • Low-pass filter: Raw F/T data contains high-frequency noise from motor vibration and encoder quantization. Apply a Butterworth low-pass filter at 50 Hz for contact detection, 200 Hz for impedance control. In ROS2: ros2_control provides filters, or use scipy.signal in Python.
  • Force torque topic to action topic: For policy training that uses F/T data as observation, publish the filtered wrench alongside joint states on the same timer callback to ensure synchronized timestamps.
  • Contact event detection: Implement a simple threshold detector: when |Fz| > contact_threshold (e.g., 1.0 N) for more than 5 consecutive samples, publish a /contact_detected Bool topic. This enables event-triggered state machines for assembly tasks.

F/T Sensor Use Cases with Specific Parameters

Task Key Force Requirement Sensor Setup Control Strategy
Peg-in-hole assembly Detect 5 N insertion resistance, stop at 20 N Wrist 6-axis, 0.1 N resolution Force stops at 5 N threshold; search spiral until Fz drops
Surface following (wiping) Maintain 1–3 N normal force Wrist 6-axis, 0.1 N resolution, 200 Hz Impedance control maintaining Fz = 2 N
Delicate grasp (eggs, produce) Contact at 0.5 N, max grasp 3 N Fingertip tactile or wrist 6-axis with 50 mN resolution Grasp until contact, increase to target, stop
Screw insertion Detect 0.1 Nm torque onset, 0.5 Nm strip limit Wrist 6-axis with torque sensitivity Rotate until Tz = 0.4 Nm, then stop
Door handle operation Detect knob engagement at 2 N Wrist 6-axis, 200 N range Force-guided approach; impedance follow through rotation
Deformable object grasp Grip force 0.5–5 N, slip detection Wrist + fingertip tactile Maintain target grip force; increase if slip detected

Recommendation Summary

  • Best value for UR arms: Robotiq FT 300-S ($1,950). Native UR Tool I/O connector, plug-and-play with UR polyscope, no additional wiring. Adequate for most manipulation tasks.
  • Best accuracy for precision assembly: ATI Gamma SI-32-2.5 ($3,200). 6 mN resolution is unmatched in this price range. Required for tasks with sub-1 N force thresholds.
  • Best bandwidth for high-speed control: Bota SensONE ($1,500). 2000 Hz bandwidth enables kHz-rate impedance controllers. Price-performance leader.
  • Best for slip detection: GelSight Mini ($500) at fingertip. Gel-based optic sensor provides contact geometry and slip direction — far more information than a wrist sensor for grasp quality tasks.
  • For new labs starting out: Buy a Robotiq FT 300-S if you have a UR arm; buy a Bota SensONE for non-UR arms. Add a GelSight only if your task specifically requires slip sensing. Do not skip F/T sensing for contact tasks — it will cost you months of debugging failed policies.

Signal Processing: Gravity Compensation and Filtering

Raw F/T sensor readings are not usable for control or policy training without processing. Two essential steps must be applied in real-time:

Gravity compensation: The sensor measures the weight of the end-effector (gripper + any held object) as a constant bias. This bias changes with arm orientation because gravity's direction relative to the sensor changes. Compensate with:

import numpy as np

def compensate_gravity(wrench_raw, R_sensor_world, mass_ee, com_ee):
    """Remove gravity bias from F/T readings.

    Args:
        wrench_raw: [Fx, Fy, Fz, Tx, Ty, Tz] raw sensor reading
        R_sensor_world: 3x3 rotation matrix, sensor frame to world
        mass_ee: end-effector mass in kg
        com_ee: center of mass [x, y, z] in sensor frame
    Returns:
        wrench_compensated: gravity-free wrench
    """
    g_world = np.array([0, 0, -9.81])
    g_sensor = R_sensor_world.T @ g_world
    F_gravity = mass_ee * g_sensor
    T_gravity = np.cross(com_ee, F_gravity)
    bias = np.concatenate([F_gravity, T_gravity])
    return wrench_raw - bias

Run this compensation at sensor rate (100-2000 Hz). The rotation matrix comes from the arm's forward kinematics. Calibrate mass_ee and com_ee once by recording sensor readings at 10 different arm orientations and solving the least-squares system.

Low-pass filtering: Motor vibration and encoder noise create high-frequency content that obscures contact signals. Apply a 2nd-order Butterworth filter:

  • Contact detection: Cutoff at 30-50 Hz. Preserves contact onset timing while removing vibration noise.
  • Impedance control: Cutoff at 100-200 Hz. Higher bandwidth needed for stable force feedback loops.
  • Data logging for policy training: Cutoff at 20-30 Hz. Policies running at 10-50 Hz do not benefit from higher-frequency force data. Aggressive filtering produces cleaner training signals.

Calibration Schedule and Drift Management

  • Session start re-zero: At the beginning of every data collection session, move the arm to a known calibration pose (gripper pointing straight down) and call the sensor's bias service. This takes 10 seconds and eliminates thermal drift accumulated since the last session.
  • Every 2 hours: Re-zero during a scheduled break. Sensor drift over 2 hours is typically 0.05-0.2 N depending on ambient temperature changes. For tasks with contact thresholds below 1 N, this drift matters.
  • After any gripper change: Changing the gripper changes the mass and center of mass parameters. Re-run gravity calibration (10 poses, 5 minutes) and update the compensation parameters.
  • Annual factory calibration: Strain gauge sensors (ATI, Robotiq) should be sent for factory recalibration annually. Cost: $300-$600. The calibration matrix that converts raw strain readings to force/torque values drifts over time due to strain gauge aging.

OpenArm 1 Compatible F/T Sensors

The OpenArm 1 uses a standard ISO 9409-1-31.5-4-M5 flange. These sensors mount directly:

  • Bota SensONE ($1,500) -- recommended for OpenArm. Matching 31.5 mm bolt circle, 2000 Hz bandwidth, ROS2 driver included. Total added weight: 120 g.
  • ATI Gamma ($3,200) -- highest accuracy, available with ISO 9409 adapter. Overkill for most OpenArm tasks but required for sub-0.1 N contact detection.
  • Robotiq FT 300-S ($1,950) -- designed for UR arms but compatible via adapter plate. Good choice if your fleet includes both UR and OpenArm arms and you want sensor interchangeability.

For fingertip sensing on OpenArm's default parallel jaw gripper, mount a GelSight Mini ($500) on each finger pad using the included adhesive mount. This provides contact geometry for slip detection without adding a wrist sensor.

Related Guides

Work with RCSV

RCSV stocks F/T sensors and provides integration support for all major arm platforms.

  • Hardware Store -- purchase ATI, Robotiq, Bota, GelSight, and Paxini sensors with integration support
  • Data Collection Services -- we collect force-rich demonstration data with F/T-equipped arms for contact-sensitive tasks
  • Repair and Maintenance -- F/T sensor calibration, mounting, and ROS2 driver integration services
  • Contact Us -- request sensor selection guidance for your specific manipulation tasks

Browse F/T Sensors and Gripper Accessories in the RCSV Store

RCSV stocks ATI Gamma, Robotiq FT 300-S, Bota SensONE, and GelSight Mini sensors, with integration support for all major robot arms.

Visit the Store