Robot interface that makes it easy to integrate custom hardware. Once integrated, you can use all of LeRobot’s tools for data collection, training, and deployment.
Robot Interface
All LeRobot robots inherit from theRobot base class and implement a standard interface:
Complete Example: Serial Robot
Here’s a complete example for a robot with serial communication:Using Your Robot
Data Collection
Once implemented, use your robot for teleoperation and data collection:Training
Train policies on data collected from your robot:Deployment
Deploy trained policies on your robot:Camera Integration
LeRobot supports multiple camera backends:OpenCV Cameras
Multiple Cameras
Teleoperation Devices
Implement custom teleoperation devices:Motor Calibration
LeRobot provides tools for motor calibration:~/.cache/lerobot/calibration/robots/serial_robot/my_robot_001.json
Best Practices
@property
def observation_features(self) -> dict:
return {
"state": (7,), # Joint positions
"pixels": {
"side": (480, 640, 3),
}
}
with robot:
# Robot automatically connects
obs = robot.get_observation()
robot.send_action(action)
# Robot automatically disconnects
def get_observation(self) -> RobotObservation:
try:
state = self._read_state()
except Exception as e:
logging.error(f"Failed to read state: {e}")
# Return safe default or raise
raise
Supported Hardware
LeRobot includes implementations for:- SO-100: LeRobot’s reference robot arm
- Koch: Low-cost robot arm
- LeKiwi: Mobile manipulation platform
- Reachy 2: Humanoid robot
- OpenARM: Open-source robot arm
- Unitree G1: Humanoid robot
- EarthRover: Mobile robot
Next Steps
- Train Your First Policy - Train on your robot’s data
- Evaluate Policies - Test policies on your robot
- Robots Documentation - Detailed hardware guides
- Robot API Reference - Complete API documentation