Move Joint Path
SUMMARY
Move Joint Path commands the robot to move through an ordered list of joint configurations, executing each segment as a joint-space interpolated move.
This skill is the joint-space equivalent of Move Cartesian Path — it is efficient for multi-waypoint joint-space trajectories such as homing sequences, configuration resets, and teach-in playback.
SUPPORTED ROBOTS
This skill is currently supported on Universal Robots only. Calling this method on other robot brands will raise a NotImplementedError.
The Skill
robot.move_joint_path(
path=[[j1, j2, j3, j4, j5, j6], [j1, j2, j3, j4, j5, j6]],
asynchronous=False,
)The Code
Example: Move Through a 2-Point Joint Path
Read the current joint positions, build two waypoints offset from the starting configuration, and execute the path.
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_joint_positions()
waypoint_1 = current[:]
waypoint_1[0] -= 10
waypoint_2 = current[:]
waypoint_2[0] += 10
path = [waypoint_1, waypoint_2]
robot.move_joint_path(path=path, asynchronous=False)
logger.info(f"Joint path complete: {path}")
# Disconnect
robot.disconnect()The Explanation of the Code
move_joint_path commands the robot controller to execute a sequence of joint-space moves through the given waypoints. Each element of path is a 6-element list [j1, j2, j3, j4, j5, j6] of joint angles in degrees. The controller moves through each waypoint in order using joint-space interpolation (equivalent to movej for each segment on Universal Robots). When asynchronous=False (default), the call blocks until all waypoints have been reached.
How to Tune the Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
path | list[list[float]] | — | Ordered list of joint configurations. Each inner list is [j1…j6] in degrees. |
asynchronous | bool | False | If True, return immediately without waiting for path completion. |
Return Value
| Type | Description |
|---|---|
None | Returns when all waypoints are reached (synchronous) or immediately (asynchronous). |
Where to Use the Skill
- Multi-waypoint joint trajectories — Execute a recorded sequence of joint configurations in a single call
- Homing sequences — Move through a safe retraction path before returning to home
- Teach-in playback — Replay a series of joint configurations recorded during a teach session
When Not to Use the Skill
Do not use Move Joint Path when:
- The path must follow a straight TCP line — joint-space interpolation does not guarantee a linear tool path; use Move Cartesian Path instead
- Only a single target is needed — use Set Joint Positions for a single-waypoint move

