Start Freedrive Mode
SUMMARY
Start Freedrive Mode makes the robot compliant and back-drivable by hand along the specified axes. The robot remains powered but offers no active resistance to manual motion. Call stop_freedrive_mode() to exit.
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_freedrive_mode(free_axes=[1, 1, 1, 1, 1, 1])The Code
Example: Start Freedrive Mode on All Axes
Enable freedrive on all axes, allow 10 seconds of manual interaction, then exit.
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)
free_axes = [1, 1, 1, 1, 1, 1]
logger.info(f"Starting freedrive — free axes: {free_axes}")
robot.start_freedrive_mode(free_axes=free_axes)
time.sleep(10)
robot.stop_freedrive_mode()
logger.success("Freedrive mode stopped.")
# Disconnect
robot.disconnect()The Explanation of the Code
start_freedrive_mode puts the robot into gravity-compensated freedrive. free_axes is a 6-element mask [x, y, z, rx, ry, rz] where 1 means the axis is free (compliant) and 0 means it is locked. feature specifies the compliance frame pose [x, y, z, rx, ry, rz]; the default [0, 0, 0, 0, 0, 0] means the base frame. During freedrive, monitor Get Freedrive Status to detect proximity to singularities.
How to Tune the Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
free_axes | list[int] | [1, 1, 1, 1, 1, 1] | Six-element mask — 1 = free, 0 = locked, for [x, y, z, rx, ry, rz]. |
feature | list[float] | [0, 0, 0, 0, 0, 0] | Compliance frame pose [x, y, z, rx, ry, rz] in meters and degrees. |
Return Value
| Return Type | Description |
|---|---|
None | Returns after freedrive mode is activated. |
Where to Use the Skill
- Teach-by-demonstration workflows.
- Operator-guided pose capture.
- Constrained manual positioning along specific axes.
When Not to Use the Skill
Use teach mode for unconstrained back-drive:
- Use Start Teach Mode for unconstrained back-drive without configuring a compliance frame or axis mask.

