Skip to content

Speed Joint

SUMMARY

Speed Joint sets joint velocities directly — the robot moves at the commanded angular speeds until speed_stop() is called or the optional time duration elapses. This is the joint-space speed controller.

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.speed_joint(
    qd=[5.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    acceleration=0.5,
    time=0.0,
)

The Code

Example: Drive Joint 1 at 5 deg/s for 2 Seconds

python
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)

qd = [5.0, 0.0, 0.0, 0.0, 0.0, 0.0]
robot.speed_joint(qd=qd, acceleration=0.5)
time.sleep(2)
robot.speed_stop()
logger.success("Speed joint stopped.")

# Disconnect
robot.disconnect()

The Explanation of the Code

speed_joint commands the robot to move at the given joint angular velocities (qd in deg/s) until speed_stop() is called or time seconds elapse. acceleration sets how quickly the robot ramps up to the commanded velocity (deg/s²). A time of 0.0 means run indefinitely until speed_stop is called.

How to Tune the Parameters

ParameterTypeDefaultDescription
qdlist[float]Target joint velocities in deg/s, one per joint.
accelerationfloat0.5Joint acceleration in deg/s².
timefloat0.0Duration in seconds. 0.0 = run until speed_stop().

Return Value

ValueDescription
NoneThis skill returns nothing.

Where to Use the Skill

  • Continuous joint-space velocity control loops.
  • Joystick-driven manual control.

When Not to Use the Skill

Use a different skill instead in these cases:

  • Use Servo Joint for high-frequency position-servo control; servo commands require a continuous high-frequency loop to function correctly.
  • Use Start Jog for teach-pendant-style jogging.