Skip to content

Get On-Robot Inverse Kinematics

SUMMARY

Get On-Robot Inverse Kinematics computes a joint configuration for a target TCP pose using the robot controller's own built-in IK solver.

The result is a joint configuration vector in 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
q = robot.get_on_robot_inverse_kinematics(pose=[0.5, 0.0, 0.5, 0.0, 0.0, 0.0])

The Code

Example: Compute Inverse Kinematics On the Controller

Compute a joint configuration for a target TCP pose using the controller's built-in IK 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)

pose = [0.5, 0.0, 0.5, 0.0, 0.0, 0.0]
q = robot.get_on_robot_inverse_kinematics(pose, qnear=None)
logger.success(f"Inverse kinematics result: {q}")

# Disconnect
robot.disconnect()

The Explanation of the Code

get_on_robot_inverse_kinematics sends the target Cartesian pose to the robot controller and retrieves the joint configuration computed by the controller's built-in IK solver. pose is [x, y, z, rx, ry, rz] in meters and degrees. qnear is an optional seed configuration (in degrees) that biases the solver toward a specific elbow posture. max_position_error and max_orientation_error set convergence tolerances.

How to Tune the Parameters

ParameterTypeDefaultDescription
poselist[float]Target TCP pose [x, y, z, rx, ry, rz]. Position in meters, orientation in degrees.
qnearlist[float] or NoneNoneSeed joint configuration in degrees. Biases the solver toward a preferred elbow posture.
max_position_errorfloat1e-10Maximum acceptable position error in meters.
max_orientation_errorfloat1e-10Maximum acceptable orientation error in radians.

Return Value

FieldTypeDescription
qlist[float]Joint configuration in degrees that achieves the target pose.

Where to Use the Skill

  • Compute joint targets for Cartesian goals when using the controller's native solver.
  • Verify IK solutions for grasp poses before executing motion.

When Not to Use the Skill

Use a different skill when:

  • You need offline IK, collision-free IK, or when a live connection is not available — use the Synapse Inverse Kinematics skill (which uses Pinocchio with multi-start CLIK) instead.