Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| # 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: | |
| 1. **Server running**: Start the LeRobot Arena server | |
| ```bash | |
| # From the server directory | |
| uvicorn src.api.main:app --reload | |
| ``` | |
| 2. **Dependencies installed**: Install the Python client | |
| ```bash | |
| # 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 | |
| ```bash | |
| 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 | |
| ```bash | |
| 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 | |
| ```bash | |
| 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 | |
| ```bash | |
| 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 | |
| ```bash | |
| python examples/context_manager_example.py | |
| ``` | |
| ## Running Examples | |
| ### Quick Start (All-in-One Demo) | |
| For a complete demonstration, run: | |
| ```bash | |
| python examples/producer_consumer_demo.py | |
| ``` | |
| ### Step-by-Step Testing | |
| 1. **Start with room management**: | |
| ```bash | |
| python examples/room_management.py | |
| ``` | |
| 2. **Run producer in one terminal**: | |
| ```bash | |
| python examples/basic_producer.py | |
| ``` | |
| 3. **Run consumer in another terminal**: | |
| ```bash | |
| python examples/basic_consumer.py | |
| # Use the room ID from the producer | |
| ``` | |
| ### Advanced Examples | |
| For more sophisticated patterns: | |
| ```bash | |
| 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 | |
| 1. **Connection Failed**: Ensure the server is running on `http://localhost:8000` | |
| 2. **Import Errors**: Make sure you've installed the client package (`pip install -e .`) | |
| 3. **Room Not Found**: Check that the room ID exists (run `room_management.py` to see active rooms) | |
| 4. **Permission Denied**: Only one producer per room is allowed | |
| ### Debug Mode | |
| Enable debug logging for more detailed output: | |
| ```python | |
| 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 |