Get Target TCP Pose
SUMMARY
Get Target TCP Pose returns the controller-commanded TCP pose [x, y, z, rx, ry, rz] - position in meters, orientation as Euler XYZ in degrees, expressed in the robot base frame.
Reads from the manipulator state - live controller setpoint when connected, mirrors the cached tcp_pose offline.
SUPPORTED ROBOTS
Available on all supported manipulators in offline mode. Live hardware readings are currently supported only on Universal Robots.
UNITS
Returns target TCP pose [x, y, z, rx, ry, rz] - translation in meters, orientation in Euler XYZ degrees.
The Skill
pose = robot.get_target_tcp_pose()The Code
"""
Read target (commanded) TCP pose example for the Synapse SDK.
Returns the target/commanded TCP pose ``[x, y, z (m), rx, ry, rz (deg)]``.
With ``--ip``, reads live hardware state. Without ``--ip``, reads from the
internal commanded cache (no connection made) and logs a warning.
Illustrated using Universal Robots (UR10e), supported on all robots.
Usage:
python get_target_tcp_pose.py [--ip <ROBOT_IP>]
"""
import argparse
from loguru import logger
from telekinesis.synapse.robots.manipulators import universal_robots
def main(ip: str | None = None):
"""Log the current target TCP pose [m, deg]."""
robot = universal_robots.UniversalRobotsUR10E()
if ip is not None:
robot.connect(ip=ip)
else:
logger.warning(
"No --ip provided; reading offline commanded-cache state, "
"not live hardware readings."
)
try:
logger.success(f"target_tcp_pose [m, deg]: {robot.get_target_tcp_pose()}")
finally:
if ip is not None:
robot.disconnect()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Read target TCP pose Synapse example")
parser.add_argument("--ip", type=str, default=None, help="UR robot IP address (optional)")
args = parser.parse_args()
main(ip=args.ip)The Explanation of the Code
from telekinesis.synapse.robots.manipulators import universal_robots
robot = universal_robots.UniversalRobotsUR10E()Create the robot. UR10e is used here for illustration; the same pattern works for every supported brand.
if ip is not None:
robot.connect(ip=ip)Connect to the robot at the given IP. When no --ip is passed, no connection is made and the getter returns from the offline commanded-cache (mirrors tcp_pose) instead of the live controller setpoint.
logger.success(f"target_tcp_pose [m, deg]: {robot.get_target_tcp_pose()}")Read the controller-commanded TCP pose [x, y, z, rx, ry, rz] in the base frame. When connected this is the live setpoint, distinct from the measured get_cartesian_pose; offline it mirrors the cached commanded pose.
finally:
if ip is not None:
robot.disconnect()Always release the controller link in a finally block so a failure mid-read still cleans up the connection.
Return Value
| Type | Description |
|---|---|
list[float] | Controller-commanded TCP pose [x, y, z, rx, ry, rz] in the robot base frame. Position in meters, orientation as Euler XYZ in degrees. Offline: same as the cached tcp_pose. |
Where to Use the Skill
- Cartesian tracking error - Compare against measured pose from Get Cartesian Pose.
- Motion monitoring - Observe the commanded TCP trajectory in real time.
When Not to Use the Skill
- You need the measured TCP pose - use Get Cartesian Pose instead.

