## Roadmap - Optionale Punkte ## --- ## Control integrieren Das aktuelle `appRobotVideoControls` koppelt zwei unabhängige Verantwortlichkeiten: 1. **Video-Streaming** (USB-Kameras → Browser) 2. **Robot-Control** (Browser → G-Code → Robot-Server) ### Warum wir trennen | Problem | Auswirkung | |---------|------------| | Control-Code-Änderung → Video-Server-Restart | Stream unterbricht, Operator verliert Bild | | Grosser Docker-Container | OpenCV + Python + FFmpeg + Control-Libs | | Schwer testbar | Video-Stream nicht einfach simulierbar | | Latenz-Konflikte | Video-Tuning ≠ Control-Anforderungen | | Robot-Server offline | Video-Server wirft Fehler | ### Vorteil der Kopplung Ein Browser-Tab für alles: Video + Steuerung zusammen – sehr bequem für den Operator. --- ### Optionen für Control **Option A: Getrennt bleiben (empfohlen für Phase 1–2)** ``` appRobotWebcam → Port 8444 (nur Video + Snapshots) appRobotControl → Port 8445 (nur G-Code, Gamepad, Keyboard → Robot) ``` - Browser öffnet beide als Tabs oder iframe-Dashboard - Nachteil: Zwei Services deployen und warten **Option B: Control als optionales Modul in appRobotWebcam** - Env var `ENABLE_CONTROL=true/false` schaltet Control-Code ein/aus - Control-Code ist in der Codebase, aber inaktiv wenn nicht konfiguriert - Nachteil: Code-Komplexität steigt, trotzdem ein Container **Option C: Vollintegration wie bisher** - Alles in einem Container – wie `appRobotVideoControls` - Einfachste UX, einfachstes Deployment - Nachteil: Monolith, schwer zu warten und zu testen ### Empfehlung Für Phase 1–2: **Option A** – sauber trennen. Wenn UX zum Problem wird (Operator-Feedback): **Option B** evaluieren. Option C nur wenn Deployment-Einfachheit absolut dominiert. --- ## Homing-Projekt Anbindung Das Homing-Projekt braucht Standbilder der Kameras für ArUco-Erkennung. **Schnittstelle**: `GET /api/snapshot/cam{n}` → JPEG-Bild `appRobotWebcam` liefert genau das. Keine weitere Kopplung nötig. Das Homing-Projekt ist Consumer, `appRobotWebcam` ist Producer. ``` Homing-Projekt └── HTTP GET http://approbotwebcam:8080/api/snapshot/cam0 └── HTTP GET http://approbotwebcam:8080/api/snapshot/cam1 ↓ ArUco-Erkennung → Kamera-Pose → Weltkoordinaten ``` --- ## Dashboard / UI Konsolidierung Wenn mehrere Services (Video, Control, Homing-Status) parallel laufen: - **Option**: Leichtes Dashboard als eigene statische Seite (nginx) mit iframes - **Option**: Portainer-UI zeigt alle Container-Status - **Option**: Control-Panel in `appRobotWebcam` einbetten (Option B oben) Dies ist bewusst aufgeschoben – erst wenn klar ist welche Services produktiv laufen.