LeRobot documentation
Teleoperators
Teleoperators
A teleoperator produces actions for a robot to follow — a leader arm, a gamepad, a keyboard, a phone. All of
them implement the Teleoperator interface, so a recording script written against it works with any input
device.
See Phone teleoperation and Isaac Teleop for setup guides, and Imitation Learning for Robots for the recording workflow. For community-maintained devices outside the core set, see Third-Party Robots & Teleoperators. To add a teleoperator of your own, see Bring Your Own Hardware.
Teleoperator
class lerobot.teleoperators.Teleoperator
< source >( config: TeleoperatorConfig )
The base abstract class for all LeRobot-compatible teleoperation devices.
This class provides a standardized interface for interacting with physical teleoperators. Subclasses must implement all abstract methods and properties to be usable.
connect
< source >( calibrate: bool = True )
Establish communication with the teleoperator.
Disconnect from the teleoperator and perform any necessary cleanup.
Apply any one-time or runtime configuration to the teleoperator. This may include setting motor parameters, control modes, or initial state.
Calibrate the teleoperator if applicable. If not, this should be a no-op.
This method should collect any necessary data (e.g., motor offsets) and update the
:pyattr:calibration dictionary accordingly.
get_action
< source >( ) → RobotAction
Returns
RobotAction
A flat dictionary representing the teleoperator’s current actions. Its
structure should match :pymeth:observation_features.
Retrieve the current action from the teleoperator.
send_feedback
< source >( feedback: dict ) → dict[str, Any]
Send a feedback action command to the teleoperator.
A dictionary describing the structure and types of the actions produced by the teleoperator. Its
structure (keys) should match the structure of what is returned by :pymeth:get_action. Values for
the dict should be the type of the value if it’s a simple value, e.g. float for single
proprioceptive value (a joint’s goal position/velocity)
Note: this property should be able to be called regardless of whether the robot is connected or not.
A dictionary describing the structure and types of the feedback actions expected by the robot. Its
structure (keys) should match the structure of what is passed to :pymeth:send_feedback. Values for
the dict should be the type of the value if it’s a simple value, e.g. float for single
proprioceptive value (a joint’s goal position/velocity)
Note: this property should be able to be called regardless of whether the robot is connected or not.
Whether the teleoperator is currently connected or not. If False, calling :pymeth:get_action or :pymeth:send_feedback should raise an error.
Whether the teleoperator is currently calibrated or not. Should be always True if not applicable
TeleoperatorConfig
class lerobot.teleoperators.TeleoperatorConfig
< source >( id: str | None = Nonecalibration_dir: pathlib.Path | None = None )