Spaces:
Running
LeRobot Arena Examples
This directory contains example scripts demonstrating various aspects of the LeRobot Arena robotics system.
Prerequisites
Before running these examples, ensure you have:
Server running: Start the LeRobot Arena server
# From the server directory uvicorn src.api.main:app --reload
Dependencies installed: Install the Python client
# From client/python directory pip install -e .
Examples Overview
1. basic_producer.py
Basic Producer Usage
Demonstrates core producer functionality:
- Creating a room
- Connecting as a producer
- Sending joint updates
- Sending state synchronization
- Basic error handling
python examples/basic_producer.py
2. basic_consumer.py
Basic Consumer Usage
Shows how to connect as a consumer and receive data:
- Connecting to an existing room
- Setting up event callbacks
- Receiving joint updates and state sync
- Getting current room state
python examples/basic_consumer.py
# You'll need to enter a room ID from a running producer
3. room_management.py
Room Management Operations
Demonstrates REST API operations:
- Listing all rooms
- Creating rooms (auto-generated and custom IDs)
- Getting room information and state
- Deleting rooms
python examples/room_management.py
4. producer_consumer_demo.py
Complete Producer-Consumer Demo
Comprehensive demonstration featuring:
- Producer and multiple consumers working together
- Realistic robot movement simulation
- Emergency stop functionality
- State synchronization
- Connection management and cleanup
python examples/producer_consumer_demo.py
5. context_manager_example.py
Context Managers and Advanced Patterns
Shows advanced usage patterns:
- Using clients as context managers for automatic cleanup
- Exception handling with proper resource management
- Factory functions for quick client setup
- Managing multiple clients
python examples/context_manager_example.py
Running Examples
Quick Start (All-in-One Demo)
For a complete demonstration, run:
python examples/producer_consumer_demo.py
Step-by-Step Testing
Start with room management:
python examples/room_management.py
Run producer in one terminal:
python examples/basic_producer.py
Run consumer in another terminal:
python examples/basic_consumer.py # Use the room ID from the producer
Advanced Examples
For more sophisticated patterns:
python examples/context_manager_example.py
Key Concepts Demonstrated
Producer Capabilities
- Room Creation: Creating and managing robotics rooms
- Joint Control: Sending individual joint position updates
- State Synchronization: Sending complete robot state
- Emergency Stop: Triggering safety stops
- Error Handling: Managing connection and communication errors
Consumer Capabilities
- Real-time Updates: Receiving joint position updates
- State Monitoring: Getting current robot state
- Event Callbacks: Responding to various message types
- Multiple Consumers: Supporting multiple clients per room
Connection Management
- WebSocket Communication: Real-time bidirectional communication
- Auto-reconnection: Handling connection failures
- Resource Cleanup: Proper disconnection and cleanup
- Context Managers: Automatic resource management
Error Handling
- Connection Failures: Graceful handling of network issues
- Invalid Operations: Handling invalid commands or states
- Emergency Scenarios: Safety system demonstrations
- Resource Management: Proper cleanup in error conditions
Example Output
When running the examples, you'll see detailed logging output showing:
- Connection status and events
- Data being sent and received
- Error conditions and handling
- Resource cleanup operations
Example log output:
INFO:__main__:Created room: abc123-def456-ghi789
INFO:__main__:[Producer] Connected!
INFO:__main__:[visualizer] Joint update #1: 4 joints
INFO:__main__:[logger] Joint update #1: 4 joints
INFO:__main__:🚨 [Producer] Sending emergency stop!
INFO:__main__:[safety-monitor] ERROR: Emergency stop: Demo emergency stop
Troubleshooting
Common Issues
- Connection Failed: Ensure the server is running on
http://localhost:8000
- Import Errors: Make sure you've installed the client package (
pip install -e .
) - Room Not Found: Check that the room ID exists (run
room_management.py
to see active rooms) - Permission Denied: Only one producer per room is allowed
Debug Mode
Enable debug logging for more detailed output:
logging.basicConfig(level=logging.DEBUG)
Next Steps
After running these examples, you can:
- Integrate the client into your own robotics applications
- Modify the examples for your specific robot hardware
- Build custom visualizers or control interfaces
- Implement safety monitoring systems
- Create automated testing scenarios