Policy Interface
All LeRobot policies inherit fromPreTrainedPolicy and implement a standard interface:
Configuration Class
Define a configuration class for your policy:Full Implementation Example
Here’s a complete example implementing a simple MLP policy:Registering Your Policy
To use your policy with LeRobot’s training and evaluation scripts, register it in the policy factory:Using Your Custom Policy
Training
Once registered, use your policy with the training CLI:Evaluation
Evaluate your trained policy:Programmatic Usage
Advanced Features
Vision Encoders
Integrate vision encoders for image observations:Action Chunking
Implement action chunking for temporal consistency:Normalization
Use dataset statistics for input/output normalization:Best Practices
def forward(self, batch) -> tuple[torch.Tensor, dict]:
"""Returns (loss, output_dict)."""
pass
def select_action(self, obs) -> torch.Tensor:
"""Returns action tensor."""
pass
@dataclass
class MyPolicyConfig(PreTrainedConfig):
type: str = "my_policy"
hidden_dim: int = 256
# ... other params
# Save
policy.save_pretrained("outputs/my_policy")
# Load
policy = MyPolicy.from_pretrained("outputs/my_policy")
Testing Your Policy
Test your policy implementation:Next Steps
- Train Your First Policy - Train your custom policy
- Evaluate Policies - Test your policy
- Multi-GPU Training - Scale up training
- Policy Concepts - Learn about existing policies