Get On-Robot Forward Kinematics
SUMMARY
Get On-Robot Forward Kinematics computes the TCP pose corresponding to a given joint configuration using the robot controller's own built-in forward kinematics solver.
The result is a Cartesian pose [x, y, z, rx, ry, rz] in meters and degrees.
SUPPORTED ROBOTS
This skill is currently supported on Universal Robots only. Calling this method on other robot brands will raise a NotImplementedError.
The Skill
pose = robot.get_on_robot_forward_kinematics(q=[0.0, -90.0, -90.0, 0.0, 90.0, 0.0])The Code
Example: Compute Forward Kinematics On the Controller
Compute the TCP pose for a known joint configuration using the controller's built-in FK solver.
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)
q = [0.0, -90.0, -90.0, 0.0, 90.0, 0.0]
pose = robot.get_on_robot_forward_kinematics(q, tcp_offset=None)
logger.success(f"Forward kinematics result: {pose}")
# Disconnect
robot.disconnect()The Explanation of the Code
get_on_robot_forward_kinematics sends the joint configuration to the robot controller and retrieves the corresponding TCP pose from the controller's built-in FK solver. q is expressed in degrees; tcp_offset is an optional 6-element pose vector [x, y, z, rx, ry, rz] that overrides the active TCP for this computation. When tcp_offset=None, the currently active TCP is used.
How to Tune the Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
q | list[float] or None | None | Joint configuration in degrees. If None, the robot's current joint configuration is used. |
tcp_offset | list[float] or None | None | TCP offset [x, y, z, rx, ry, rz] to use for the FK computation. If None, the active TCP is used. |
Return Value
| Field | Type | Description |
|---|---|---|
pose | list[float] | Resulting TCP pose [x, y, z, rx, ry, rz]. Position in meters, orientation in degrees. |
Where to Use the Skill
- Validate IK solutions by checking the resulting FK pose.
- Compute the TCP pose for a planned waypoint without moving the robot.
When Not to Use the Skill
Use a different skill when:
- You need faster, offline FK computation that does not require a live robot connection — use the Synapse Forward Kinematics skill (which uses Pinocchio) instead.

