Start Jog
SUMMARY
Start Jog starts continuous jogging of the robot at the given per-joint speeds. The robot moves until stop_jog() is called. This is the programmatic equivalent of holding a direction button on the teach pendant.
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.start_jog(speeds=[5.0, 0.0, 0.0, 0.0, 0.0, 0.0], feature=0)The Code
Example: Jog Joint 1 for 3 Seconds
Start jogging joint 1 at 5 deg/s in the base frame, wait 3 seconds, then stop.
import time
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)
speeds = [5.0, 0.0, 0.0, 0.0, 0.0, 0.0]
logger.info(f"Starting jog — speeds: {speeds} deg/s")
robot.start_jog(speeds=speeds, feature=0)
time.sleep(3)
robot.stop_jog()
logger.success("Jog stopped.")
# Disconnect
robot.disconnect()The Explanation of the Code
start_jog sends a jog command to the controller. speeds specifies the per-joint angular velocities in deg/s. feature selects the reference frame: 0 = base frame, 1 = tool frame, 2 = custom frame (requires custom_frame). acc sets the joint acceleration in deg/s². The robot continues moving until stop_jog() is called. This method is intended for interactive manual-like control and operator-guided positioning.
How to Tune the Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
speeds | list[float] | — | Per-joint jog speeds in deg/s. One value per joint. |
feature | int | 0 | Reference frame: 0 = base, 1 = tool, 2 = custom. |
acc | float | 0.5 | Joint acceleration in deg/s². |
custom_frame | list[float] | [] | Pose [x, y, z, rx, ry, rz] of the custom reference frame. Used only when feature=2. |
Return Value
| Return Type | Description |
|---|---|
None | Returns after the jog command is sent. |
Where to Use the Skill
- Interactive positioning workflows where fine-grained joint control is needed.
- Aligning the robot to a fixture or sensor by jogging individual joints.
When Not to Use the Skill
Use motion commands for repeatable positioning:
- Use Set Joint Positions for repeatable, waypoint-based positioning.
- Use Speed Joint for velocity-commanded motion with a timeout.

