Force-Torque Sensing in Robotics: Applications, Sensors, and Getting Started
Vision tells a robot where things are. Force-torque sensing tells it how hard it is pushing, pulling, and squeezing. For contact-rich manipulation -- assembly, insertion, polishing, collaborative tasks -- F/T sensing is not optional. It is what separates robots that can handle delicate assembly from robots that break everything they touch. This guide covers the applications, the hardware, and the integration steps to get F/T sensing working on your robot.
What Force-Torque Sensing Measures
A force-torque (F/T) sensor measures six components of mechanical load at a point on the robot: three linear forces (Fx, Fy, Fz) along each Cartesian axis and three torques (Tx, Ty, Tz) around each axis. Together, these six values form a wrench -- a complete description of the mechanical interaction between the robot and its environment at the sensor location.
Most F/T sensors are mounted at the wrist -- between the last arm link and the end-effector -- where they measure the forces and torques generated by the gripper's interaction with objects. This placement provides a clear signal of contact events: when the gripper touches an object, forces appear in the F/T data; when the robot pushes too hard, force magnitudes spike; when the gripper slips, the force profile changes characteristically.
This information is invisible to cameras and cannot be reliably inferred from joint motor currents alone. While some modern arms (Franka Emika, Kuka iiwa) provide joint torque estimates that give a coarse F/T-like signal, a dedicated wrist-mounted F/T sensor provides calibrated, high-bandwidth force data with significantly better accuracy and noise characteristics. For a deeper technical overview, see our force-torque sensing glossary entry.
Application 1: Peg-in-Hole and Precision Insertion
Peg-in-hole insertion is the canonical application for force-torque sensing. The task requires guiding a peg into a hole with clearances as small as 0.1-0.5 mm -- far tighter than most robot arms can achieve through position control alone. Without force feedback, the robot either misses the hole entirely or jams the peg against the edge with enough force to damage the parts.
With F/T sensing, the robot can execute a search pattern: move the peg across the surface while monitoring lateral forces. When the peg drops into the hole, the lateral force signature changes characteristically (contact forces decrease as the peg aligns). The robot then switches to a force-controlled insertion phase, pushing the peg downward while limiting lateral forces to prevent jamming. This approach reliably achieves insertion in tight-tolerance assemblies where pure position control fails.
The same principle applies to connector mating, snap-fit assembly, screw insertion, and any task where the robot must guide a part into a constrained geometry. F/T sensing transforms these from "impossible without submillimeter calibration" to "reliable with standard hardware."
Application 2: Surface Following and Polishing
Surface following requires the robot to maintain a constant contact force against a surface while tracing a path -- used in polishing, sanding, deburring, painting, and inspection. Without force control, surface curvature or position uncertainty causes the robot to either lose contact (ruining the finish) or press too hard (gouging the material).
With F/T sensing, an admittance or impedance controller maintains the desired normal force regardless of surface geometry. The controller reads the current force, computes the error relative to the desired force setpoint, and adjusts the robot position to reduce the error. At 500-1000 Hz control rates, this produces smooth, consistent contact even on curved or irregular surfaces. The force setpoint can be varied along the path to accommodate different surface requirements -- lighter force on thin sections, heavier force on thick sections.
Application 3: Human-Robot Collaboration
Collaborative robots (cobots) that share workspaces with humans must detect unintended contact and respond safely. F/T sensors enable two critical safety functions: collision detection (an unexpected force spike triggers an immediate stop or compliant retreat) and hand-guiding (the operator physically pushes the robot, and the F/T sensor detects the applied force to move the robot in the desired direction).
Hand-guiding is also used for kinesthetic teaching -- the operator physically moves the robot through a task trajectory while the system records the motion as a demonstration. The F/T sensor distinguishes between intentional guidance forces (smooth, directional) and incidental contact forces (sudden, random), allowing the system to filter the recorded trajectory for cleaner demonstrations.
Application 4: Teleoperation Force Feedback
In bilateral teleoperation systems, a wrist F/T sensor on the follower robot measures the interaction forces with the environment and transmits them back to the leader device, where they are rendered as haptic feedback to the operator. This force feedback dramatically improves teleoperation quality for contact-rich tasks: the operator can feel when the gripper contacts an object, how hard the robot is pressing during insertion, and when an assembly snaps into place.
F/T-enabled teleoperation produces higher-quality demonstration data for imitation learning because the operator has the sensory information needed to perform contact-rich tasks smoothly and confidently. Without force feedback, operators must rely on visual estimation of contact forces, leading to jerky, inconsistent demonstrations. Studies consistently show a 20-40% improvement in task success rate and demonstration quality when force feedback is available during teleoperation data collection.
Application 5: Grasp Quality Monitoring and Slip Detection
A wrist F/T sensor can monitor grasp stability in real time. After the gripper closes on an object, the F/T signal reveals whether the grasp is secure (stable force profile), slipping (oscillating or drifting forces), or about to fail (force approaching the friction cone boundary). This information enables reactive grasp adjustment -- tightening the grip when slip is detected, re-grasping when force profiles indicate instability.
Slip detection is particularly valuable for handling objects with uncertain friction properties (wet, oily, or slippery surfaces) and for manipulation tasks where the object is subjected to external forces during transport (stacking objects where the weight distribution shifts, assembling components where insertion forces act on the grasped part).
Sensor Selection Guide
Choosing the right F/T sensor requires balancing four factors: measurement range, resolution, bandwidth, and cost.
Measurement range defines the maximum force and torque the sensor can measure without damage. A sensor with too small a range saturates during normal operation, losing data at critical moments. A sensor with too large a range has poor resolution for delicate tasks. Match the range to your task: light manipulation (0-50 N force, 0-5 Nm torque), general manipulation (0-200 N, 0-20 Nm), heavy payload handling (0-500 N+, 0-50 Nm+).
Resolution determines the smallest force change the sensor can detect. For precision assembly tasks (peg-in-hole with tight clearances), you need resolution of 0.1 N or better. For collision detection and coarse force control, 1 N resolution is adequate. Higher resolution generally means smaller range -- this is the fundamental tradeoff in F/T sensor design.
Bandwidth determines how fast the sensor can report new readings. For contact detection and collision monitoring, 1 kHz or higher bandwidth is desirable -- contact events happen in milliseconds, and a 100 Hz sensor may miss transient impacts. For force-controlled surface following and steady-state tasks, 100-500 Hz is usually sufficient.
Cost varies widely. The ATI Mini45 and Mini85 (the research gold standard) cost $3,000-$7,000 depending on range and interface, but provide exceptional accuracy, 7 kHz bandwidth, and extensive documentation. The Robotiq FT 300-S costs $2,000-$3,000 with lower bandwidth but easier USB/Ethernet integration and native ROS support. The OnRobot Hex integrates F/T sensing directly into the gripper-arm interface at $2,000-$4,000. For budget-constrained research, newer sensors from Bota Systems ($1,500-$3,000) and Wacoh Tech offer solid performance at lower cost points.
F/T Sensor Specifications Comparison
| Sensor | Force Range | Resolution | Bandwidth | Noise (RMS) | Interface | Price |
|---|---|---|---|---|---|---|
| ATI Mini45 | +/-145 N (Fxy), +/-290 N (Fz) | 0.025 N | 7 kHz | 0.05 N | EtherCAT, Net F/T (Ethernet) | $4,000-5,500 |
| ATI Gamma | +/-65 N (Fxy), +/-200 N (Fz) | 0.0125 N | 7 kHz | 0.02 N | EtherCAT, Net F/T | $5,000-7,000 |
| Robotiq FT 300-S | +/-300 N | 0.2 N | 100 Hz | 0.5 N | USB, Ethernet, Modbus | $2,000-3,000 |
| OnRobot HEX-E | +/-200 N (Fxy), +/-500 N (Fz) | 0.2 N | 1 kHz | 0.3 N | Integrated (tool changer) | $2,500-4,000 |
| Bota Systems SensONE | +/-200 N | 0.1 N | 800 Hz | 0.15 N | EtherCAT, USB | $1,500-3,000 |
For research labs doing imitation learning data collection, the ATI Mini45 is the recommended default: its 7 kHz bandwidth captures contact transients that lower-bandwidth sensors miss, and its noise floor is low enough for precision assembly annotation. For production deployments on a budget, the Robotiq FT 300-S provides adequate performance with significantly easier integration. The Bota Systems SensONE offers a good middle ground between ATI-level performance and Robotiq-level pricing.
Calibration Procedures
Proper calibration is the difference between an F/T sensor that provides actionable data and one that adds noise to your control loop. Three calibration steps are required after mounting:
1. Zero-offset calibration: With nothing attached to the sensor (or with only the known end-effector), record the sensor output. This baseline reading should be subtracted from all subsequent measurements. Perform zero calibration at the beginning of each session, because sensor offset drifts with temperature (typically 0.01-0.1 N per degree C). Let the sensor warm up for 10 minutes before calibrating.
2. Gravity compensation: The weight of the gripper and any attached tooling creates a gravitational wrench that varies with arm orientation. To compensate: move the arm to at least 6 different orientations (ideally 10+) that span the orientation space, record the F/T readings and the corresponding arm pose at each orientation, and solve a least-squares fit for the tool mass, center of mass, and sensor offset. The result is a function that predicts the gravitational wrench at any orientation, which you subtract from raw readings to isolate interaction forces. Code for this is included in most F/T ROS2 packages.
3. Cross-talk verification: Apply a known force in each axis independently (using a calibrated weight on a string for Fz, and a spring scale for Fx/Fy) and verify that cross-axis readings are within the manufacturer's specification (typically <2% of applied load). If cross-talk exceeds specification, the mounting may not be rigid enough, or the sensor may need factory recalibration.
Signal Processing for F/T Data
Raw F/T sensor data contains noise from mechanical vibration, electrical interference, and quantization. Appropriate filtering is essential for both real-time control and offline data analysis.
Low-pass filtering: A second-order Butterworth filter at 20-50 Hz cutoff removes high-frequency noise while preserving the contact dynamics relevant for manipulation. For admittance control, set the cutoff at 5-10x the control loop frequency: if you are running admittance control at 100 Hz, filter the F/T data at 20-50 Hz. Lower cutoff frequencies reduce noise but add phase lag, which can destabilize the control loop.
Moving average: For applications where phase lag is unacceptable (collision detection), use a causal moving average with a 5-10 sample window instead of an IIR filter. The moving average introduces less phase distortion than a Butterworth filter at the cost of less aggressive noise rejection.
Contact detection thresholding: Detect contact events by monitoring the norm of the force vector ||F|| = sqrt(Fx^2 + Fy^2 + Fz^2). A threshold of 3-5x the noise floor RMS reliably detects contact while rejecting false positives from vibration. For the ATI Mini45 with 0.05 N RMS noise, a contact threshold of 0.5 N works well for most manipulation tasks.
Contact State Estimation
Beyond simple contact detection, F/T data enables estimation of contact state -- whether the gripper is in free space, making initial contact, in stable grasp, slipping, or jammed. Contact state estimation uses the time evolution of the F/T signal, not just instantaneous values.
- Free space: ||F|| below noise threshold. Robot can move at full speed.
- Initial contact: ||F|| rises above threshold with increasing derivative (dF/dt > 0). Robot should reduce velocity and switch to compliance control.
- Stable contact: ||F|| above threshold with near-zero derivative (|dF/dt| < epsilon). Safe to apply controlled forces for insertion, polishing, or manipulation.
- Slip: Oscillating lateral forces (Fx, Fy) with decreasing normal force (Fz). Indicates the grasp is failing. Increase grip force or abort and re-grasp.
- Jam: Force magnitude increasing rapidly (dF/dt >> 0) without corresponding robot motion. The end-effector is stuck. Reverse motion direction along the force vector to unjam.
A simple finite state machine implementing these contact states, driven by filtered F/T readings, provides a robust foundation for contact-rich manipulation. This state machine can be used as a safety layer on top of learned policies (override the policy if a jam state is detected) or as an observation for the policy itself (provide the current contact state as a categorical input).
ROS2 Code: Admittance Control with F/T Feedback
# admittance_controller.py — ROS2 node for basic admittance control
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import WrenchStamped, TwistStamped
import numpy as np
class AdmittanceController(Node):
def __init__(self):
super().__init__('admittance_controller')
# Admittance gains (compliance): higher = more compliant
self.M = np.diag([5.0, 5.0, 5.0, 1.0, 1.0, 1.0]) # virtual mass
self.D = np.diag([50.0, 50.0, 50.0, 10.0, 10.0, 10.0]) # damping
self.F_desired = np.array([0, 0, -5.0, 0, 0, 0]) # desired wrench (5N push in -z)
self.vel = np.zeros(6)
self.sub = self.create_subscription(
WrenchStamped, '/ft_sensor/wrench', self.wrench_cb, 10)
self.pub = self.create_publisher(
TwistStamped, '/servo_node/delta_twist_cmds', 10)
self.timer = self.create_timer(0.01, self.control_loop) # 100 Hz
self.current_wrench = np.zeros(6)
def wrench_cb(self, msg):
w = msg.wrench
self.current_wrench = np.array([
w.force.x, w.force.y, w.force.z,
w.torque.x, w.torque.y, w.torque.z])
def control_loop(self):
dt = 0.01
F_error = self.F_desired - self.current_wrench
# Admittance: M * a + D * v = F_error
acc = np.linalg.solve(self.M, F_error - self.D @ self.vel)
self.vel += acc * dt
# Publish velocity command
msg = TwistStamped()
msg.header.stamp = self.get_clock().now().to_msg()
msg.twist.linear.x = float(self.vel[0])
msg.twist.linear.y = float(self.vel[1])
msg.twist.linear.z = float(self.vel[2])
msg.twist.angular.x = float(self.vel[3])
msg.twist.angular.y = float(self.vel[4])
msg.twist.angular.z = float(self.vel[5])
self.pub.publish(msg)
This basic admittance controller reads the F/T wrench, computes a force error relative to a desired wrench, and outputs velocity commands that comply with the contact forces. The M (mass) and D (damping) matrices control the compliance behavior. Start with high damping and low mass (stiff, stable behavior) and gradually increase compliance by reducing damping. Test with the robot in free space before introducing contact.
Mounting Considerations
F/T sensors must be mechanically mounted between the arm flange and the end-effector. The mounting must be rigid -- any compliance between the sensor and the arm or between the sensor and the gripper introduces measurement error and reduces bandwidth. Use the manufacturer's recommended mounting hardware and torque specifications.
Cable routing is critical. The sensor cable must be routed along the arm with sufficient strain relief and without tension at the connector. F/T sensor cables are precision instruments -- pulling on them or allowing them to snag during arm motion will introduce noise and eventually damage the sensor. Use cable management clips rated for the arm's rotational range and route cables through the arm's internal conduit if available.
After mounting, perform a gravity compensation calibration: move the arm to several orientations and record the F/T readings to compute the gravitational wrench of the gripper assembly. Subtract this wrench from all subsequent readings to isolate the interaction forces. Most F/T ROS2 drivers include gravity compensation as a standard feature.
ROS2 Integration: Getting Started
The standard ROS2 interface for F/T sensors uses the geometry_msgs/WrenchStamped message type, published on a topic (typically /ft_sensor/wrench). The message contains the six-axis force-torque reading with a timestamp, which downstream nodes use for control and logging.
For ATI sensors, the ati_force_torque ROS2 package provides a hardware interface node that communicates over EtherCAT or the ATI Net F/T box (Ethernet). For Robotiq FT 300-S, the robotiq_ft_sensor package provides USB and Ethernet drivers. For OnRobot Hex, the onrobot_ros2 package includes F/T reading as part of the gripper interface.
A basic admittance control loop in ROS2 reads the F/T wrench, computes a velocity correction proportional to the force error (desired force minus measured force), and sends the corrected velocity command to the arm controller. The control law is: velocity = gain * (F_desired - F_measured). The gain matrix (6x6 for all axes) determines compliance -- higher gain means the robot moves more in response to force, lower gain means stiffer behavior. Start with low gains and increase gradually until you achieve the desired compliance without oscillation.
For learned manipulation policies, include the F/T wrench as an additional observation channel: a 6-dimensional vector appended to the observation at each timestep. This is straightforward to implement and allows the policy to learn force-dependent behaviors implicitly. For structured force control, use a hybrid architecture where the learned policy outputs a desired wrench or compliance parameters, and a classical admittance controller handles the low-level force regulation.
F/T Sensing and Data Collection
When collecting demonstration data for contact-rich tasks, logging F/T data is essential. The force profile during a successful insertion or assembly contains information that camera images do not capture -- the progression of contact forces, the moment of alignment, the force signature of a successful snap-fit. Policies trained with F/T observations consistently outperform vision-only policies on contact-rich tasks, often by 30-50% in task success rate.
SVRC's data collection stations include ATI Mini45 F/T sensors at the wrist of each robot arm, with F/T data logged synchronously alongside cameras and joint states at 500 Hz. This logging rate captures contact transients that are critical for learning contact-rich behaviors. F/T data is included in standard dataset exports in all supported formats.
Get Started with Force-Torque Sensing
For teams exploring contact-rich manipulation, F/T sensing is a high-leverage investment. The hardware cost is modest relative to the robot arm, the integration is straightforward with modern ROS2 packages, and the performance improvement on contact-rich tasks is dramatic. Start with a wrist-mounted sensor on your primary research arm, implement basic admittance control to get familiar with force-based interaction, and then expand to using F/T observations in your learned policies.
SVRC provides F/T-equipped robot stations through our robot leasing program, consultation on sensor selection and integration for custom setups, and data collection services with F/T-equipped hardware for contact-rich tasks. Contact the SVRC engineering team to discuss your force sensing requirements, or browse our hardware catalog for available sensor configurations.