Files
appRobotWebcam/doc/07_OptionalToDo_roadmap.md
2026-06-04 17:47:58 +02:00

2.7 KiB
Raw Permalink Blame History

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 12)

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 12: 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.