blanchon's picture
Initial commit
02eac4b
# 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
1. **Bun** >= 1.0.0 ([Install Bun](https://bun.sh/))
2. **LeRobot Arena Server** running on port 8000
3. **Built JavaScript Client** (automatically installed as dependency)
## ๐Ÿš€ Quick Start
### 1. Install Dependencies
```bash
cd demo
bun install
```
### 2. Start Development Server
```bash
bun run dev
```
The demo will be available at http://localhost:5173
### 3. Test the Setup
```bash
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
1. **Monitor server status** - Real-time connection indicator
2. **View active rooms** - See all current robotics sessions
3. **Quick launch** - One-click access to producer/consumer interfaces
### Robot Control (Producer)
1. **Create or join a room**
2. **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)
3. **Send commands** - State sync, emergency stop, heartbeat
4. **Monitor history** - Real-time command tracking
### Robot Monitoring (Consumer)
1. **Connect to existing room**
2. **Live joint monitoring** with trend visualization
3. **Real-time statistics** - Update counts, timing
4. **Command history** - Joint updates and state syncs
5. **Error tracking** - Connection and communication errors
### Room Management
1. **Create rooms** with custom IDs
2. **Delete rooms** when no longer needed
3. **View participants** - Producers and consumers
4. **Monitor activity** - Joint counts and connection status
## ๐Ÿ”ง Development
### Scripts
```bash
# 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:
```typescript
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
```bash
bun run build
```
### Environment Variables
```bash
# 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
1. **Start the LeRobot Arena server** on port 8000
2. **Run the demo** with `bun run dev`
3. **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
1. **Fork the repository**
2. **Create feature branch** (`git checkout -b feature/amazing-feature`)
3. **Make changes** and add tests
4. **Run linting** (`bun run lint`)
5. **Test thoroughly** with demo application
6. **Commit changes** (`git commit -m 'Add amazing feature'`)
7. **Push to branch** (`git push origin feature/amazing-feature`)
8. **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.