Get Actual TCP Force
SUMMARY
Get Actual TCP Force reads the generalized forces at the Tool Center Point, returned as a 6-element wrench vector [Fx, Fy, Fz, Tx, Ty, Tz].
Forces are in Newtons; torques are in Newton-meters.
SUPPORTED ROBOTS
This skill is currently supported on Universal Robots only. Calling this method on other robot brands will raise a NotImplementedError.
The Skill
tcp_force = robot.get_actual_tcp_force()The Code
Example: Read and Log TCP Force
Connect to the robot and read the current TCP wrench.
from loguru import logger
from telekinesis.synapse.robots.manipulators import universal_robots
robot_ip = "192.168.1.2" # replace with your robot's IP
robot = universal_robots.UniversalRobotsUR10E()
# Connect
robot.connect(ip=robot_ip)
tcp_force = robot.get_actual_tcp_force()
logger.success(f"Actual TCP force: {tcp_force}")
# Disconnect
robot.disconnect()The Explanation of the Code
get_actual_tcp_force reads the actual_TCP_force field from the RTDE data stream. This wrench is the generalized external force acting at the TCP, expressed in the robot base frame. Forces are in Newtons; torques are in Newton-meters. The values are payload-compensated on supported controllers.
How to Tune the Parameters
This skill takes no input parameters.
Return Value
| Type | Description |
|---|---|
list[float] | TCP wrench [Fx, Fy, Fz, Tx, Ty, Tz]. Forces in N, torques in N·m. |
Where to Use the Skill
- Contact detection — Detect unexpected contact by monitoring force magnitude
- Compliant control — Use force feedback to implement admittance or hybrid force-position control
- Assembly verification — Confirm insertion force profile matches expected values
When Not to Use the Skill
Do not use Get Actual TCP Force when:
- You need raw sensor data — use Get FT Raw Wrench for the uncompensated F/T sensor reading
- You need TCP velocity — use Get Actual TCP Speed instead

