Spaces:
Running
Running
LeRobot Arena Demo
A comprehensive SvelteKit demo application showcasing the LeRobot Arena robotics control platform with real-time 6-DOF robot arm control and monitoring.
๐ Features
Dashboard
- Real-time server status monitoring
- Active rooms overview
- Quick access to all signal types
- Clean, modern interface
Robotics Control
- 6-DOF robot arm control with real-time sliders
- Producer/Consumer pattern for robot control and monitoring
- Room management - create, delete, and join rooms
- Live joint state monitoring with trend visualization
- Command history tracking
- Emergency stop functionality
- WebSocket-based real-time communication
Architecture
- Frontend: Svelte 5, TypeScript, Tailwind CSS, Vite
- Client Library: Custom TypeScript/JavaScript client
- Communication: WebSocket for real-time control, REST API for management
- Build System: Bun for fast development and building
๐ Project Structure
demo/
โโโ src/
โ โโโ routes/
โ โ โโโ +layout.svelte # Main layout with navigation
โ โ โโโ +page.svelte # Dashboard homepage
โ โ โโโ robotics/
โ โ โ โโโ +page.svelte # Robotics control dashboard
โ โ โ โโโ producer/
โ โ โ โ โโโ +page.svelte # Producer interface
โ โ โ โ โโโ [roomId]/+page.svelte # Room-specific producer
โ โ โ โโโ consumer/
โ โ โ โโโ +page.svelte # Consumer interface
โ โ โ โโโ [roomId]/+page.svelte # Room-specific consumer
โ โ โโโ video/
โ โ โโโ +page.svelte # Video placeholder
โ โโโ app.css # Tailwind CSS and custom styles
โ โโโ app.d.ts # TypeScript declarations
โ โโโ app.html # HTML template
โโโ package.json # Dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
โโโ tailwind.config.ts # Tailwind configuration
โโโ vite.config.ts # Vite configuration
โโโ test-demo.js # Demo verification script
๐ ๏ธ Prerequisites
- Bun >= 1.0.0 (Install Bun)
- LeRobot Arena Server running on port 8000
- Built JavaScript Client (automatically installed as dependency)
๐ Quick Start
1. Install Dependencies
cd demo
bun install
2. Start Development Server
bun run dev
The demo will be available at http://localhost:5173
3. Test the Setup
node test-demo.js
๐ Available Routes
Route | Description |
---|---|
/ |
Dashboard - Server status, room overview, quick actions |
/robotics |
Robotics Control - Room management and overview |
/robotics/producer |
Producer Interface - Create rooms and control robots |
/robotics/consumer |
Consumer Interface - Monitor robot state and commands |
/robotics/producer/[roomId] |
Room Producer - Direct control of specific room |
/robotics/consumer/[roomId] |
Room Consumer - Direct monitoring of specific room |
/video |
Video Placeholder - Future video streaming functionality |
๐ฎ Using the Demo
Dashboard
- Monitor server status - Real-time connection indicator
- View active rooms - See all current robotics sessions
- Quick launch - One-click access to producer/consumer interfaces
Robot Control (Producer)
- Create or join a room
- Control 6-DOF robot arm with real-time sliders:
- Base rotation (-180ยฐ to 180ยฐ)
- Shoulder movement (-90ยฐ to 90ยฐ)
- Elbow movement (-135ยฐ to 135ยฐ)
- Wrist 1 rotation (-180ยฐ to 180ยฐ)
- Wrist 2 movement (-90ยฐ to 90ยฐ)
- Gripper control (0-100%, open to closed)
- Send commands - State sync, emergency stop, heartbeat
- Monitor history - Real-time command tracking
Robot Monitoring (Consumer)
- Connect to existing room
- Live joint monitoring with trend visualization
- Real-time statistics - Update counts, timing
- Command history - Joint updates and state syncs
- Error tracking - Connection and communication errors
Room Management
- Create rooms with custom IDs
- Delete rooms when no longer needed
- View participants - Producers and consumers
- Monitor activity - Joint counts and connection status
๐ง Development
Scripts
# Development server
bun run dev
# Build for production
bun run build
# Preview production build
bun run preview
# Type checking
bun run check
# Linting and formatting
bun run lint
bun run format
Client Library Integration
The demo uses the local lerobot-arena-client
package:
import { robotics } from 'lerobot-arena-client';
// Create clients
const producer = new robotics.RoboticsProducer('http://localhost:8000');
const consumer = new robotics.RoboticsConsumer('http://localhost:8000');
// Use factory functions
const producer = await robotics.createProducerClient();
const consumer = await robotics.createConsumerClient(roomId);
๐จ UI/UX Features
Modern Design
- Tailwind CSS for responsive, utility-first styling
- Custom components with consistent design system
- Status indicators for real-time connection feedback
- Interactive sliders for intuitive robot control
Real-time Feedback
- Live joint values with degree precision
- Trend visualization showing joint movement history
- Connection status with visual indicators
- Command history with timestamps and details
Responsive Layout
- Mobile-friendly design for all screen sizes
- Grid layouts that adapt to viewport
- Navigation with active route highlighting
- Modal dialogs for room creation
๐ Safety Features
Emergency Stop
- Manual emergency stop button in producer interface
- Propagation to all consumers for immediate notification
- Error tracking for safety incident monitoring
Connection Management
- Automatic reconnection handling
- Timeout configurations for reliable communication
- Error reporting with user-friendly messages
๐ Production Deployment
Build
bun run build
Environment Variables
# Server URL (default: http://localhost:8000)
VITE_SERVER_URL=http://your-server.com:8000
Hosting
The built application can be deployed to any static hosting service:
- Vercel
- Netlify
- GitHub Pages
- AWS S3 + CloudFront
- Any web server
๐งช Testing
Manual Testing
- Start the LeRobot Arena server on port 8000
- Run the demo with
bun run dev
- Test workflows:
- Create room as producer
- Control robot with sliders
- Connect as consumer in another tab
- Monitor real-time updates
- Test emergency stop
- Verify command history
Integration Testing
The demo includes integration with the JS client test suite. See ../client/js/tests/
for comprehensive testing.
๐ฏ Use Cases
Development & Testing
- Client library testing - Interactive validation of API
- Server testing - Real-time load and functionality testing
- UI/UX prototyping - Design validation for robotics interfaces
Demonstrations
- Product demos - Showcase robotics control capabilities
- Educational tool - Learn producer/consumer patterns
- Integration examples - Reference implementation for developers
Real-world Applications
- Remote robot control - Control robots from anywhere
- Multi-user collaboration - Multiple operators monitoring one robot
- Training simulations - Safe environment for learning robot control
๐ค Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature
) - Make changes and add tests
- Run linting (
bun run lint
) - Test thoroughly with demo application
- Commit changes (
git commit -m 'Add amazing feature'
) - Push to branch (
git push origin feature/amazing-feature
) - Open Pull Request
๐ License
MIT License - see LICENSE file for details
๐ Troubleshooting
Connection Issues
- Server not running: Ensure LeRobot Arena server is active on port 8000
- CORS errors: Check server CORS configuration
- WebSocket failures: Verify firewall settings
Build Issues
- Import errors: Ensure client library is built (
cd ../client/js && bun run build
) - Type errors: Run
bun run check
for detailed TypeScript diagnostics - Dependency issues: Try
rm -rf node_modules && bun install
Runtime Issues
- Slow performance: Check browser dev tools for console errors
- UI not updating: Verify WebSocket connection in network tab
- Commands not working: Check server logs for error messages
For more help, see the main project documentation or open an issue on GitHub.