Skip to content

Move Cartesian Path

SUMMARY

Move Cartesian Path commands the robot to move its Tool Center Point through an ordered list of Cartesian poses, executing each segment as a Cartesian-linear move.

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
robot.move_cartesian_path(
    path=[[x1, y1, z1, rx1, ry1, rz1], [x2, y2, z2, rx2, ry2, rz2]],
    asynchronous=False,
)

The Code

Example: Move Through a 2-Point Cartesian Path

Move the TCP through two waypoints offset from the current pose.

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)

current = robot.get_cartesian_pose()

waypoint_1 = current[:]
waypoint_1[2] -= 0.05

waypoint_2 = current[:]
waypoint_2[0] += 0.05

path = [waypoint_1, waypoint_2]
robot.move_cartesian_path(path=path, asynchronous=False)
logger.info(f"Cartesian path complete: {path}")

# Disconnect
robot.disconnect()

The Explanation of the Code

move_cartesian_path commands the robot controller to execute a sequence of Cartesian-linear moves through the given waypoints. Each element of path is a 6-element pose [x, y, z, rx, ry, rz] with position in meters and orientation as Euler angles in degrees. When asynchronous=False (default), the call blocks until all waypoints have been reached.

How to Tune the Parameters

ParameterTypeDefaultDescription
pathlist[list[float]]Ordered list of Cartesian waypoints. Each is [x, y, z, rx, ry, rz].
asynchronousboolFalseIf True, return immediately without waiting for the path to complete.

Return Value

ValueDescription
NoneThis skill returns nothing.

Where to Use the Skill

  • Multi-point TCP trajectories (e.g., scanning, polishing, or assembly sequences) where each segment must follow a straight-line path.

When Not to Use the Skill

Use a different skill instead in these cases: