Skip to content

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

python
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.

python
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

ParameterTypeDefaultDescription
qlist[float] or NoneNoneJoint configuration in degrees. If None, the robot's current joint configuration is used.
tcp_offsetlist[float] or NoneNoneTCP offset [x, y, z, rx, ry, rz] to use for the FK computation. If None, the active TCP is used.

Return Value

FieldTypeDescription
poselist[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.