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
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.
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
| Parameter | Type | Default | Description |
|---|---|---|---|
pose | list[float] | — | Target TCP pose [x, y, z, rx, ry, rz]. Position in meters, orientation in degrees. |
qnear | list[float] or None | None | Seed joint configuration in degrees. Biases the solver toward a preferred elbow posture. |
max_position_error | float | 1e-10 | Maximum acceptable position error in meters. |
max_orientation_error | float | 1e-10 | Maximum acceptable orientation error in radians. |
Return Value
| Field | Type | Description |
|---|---|---|
q | list[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.

