Phase 0, 1, 2

This commit is contained in:
chk
2026-06-14 16:58:45 +02:00
parent 0cb2bae554
commit dd8de5674d
6 changed files with 773 additions and 119 deletions

View File

@@ -329,43 +329,45 @@ automatisch die aktuelle Konfiguration.
### Phase 0 — Refactor: Board-Pipeline auslagern
- [ ] Funktion `runBoardPipeline(runDir, send)` in `server/server.js` extrahieren
- [ ] Bestehende Logik aus `POST /api/board/run` (Zeile ~520606) in Funktion verschieben
- [ ] `POST /api/board/run` ruft `runBoardPipeline()` auf (Verhalten unverändert)
- [ ] Rückgabewert: `runDir` (String, Pfad zum Lauf-Verzeichnis)
- [x] Funktion `runBoardPipeline(runDir, send)` in `server/server.js` extrahieren
- [x] Bestehende Logik aus `POST /api/board/run` in Funktion verschieben
- [x] `POST /api/board/run` ruft `runBoardPipeline()` auf (Verhalten unverändert)
- [ ] Test: Board-Run funktioniert weiterhin identisch
---
### Phase 1 — Backend `POST /api/homing/run`
- [ ] Konstante `SCRIPT_4B` in `server/server.js` ergänzen (analog zu `SCRIPT_1`, `SCRIPT_3B` etc.)
- [ ] `server/homingOrchestrator.js` erstellen
- [ ] `estimateXFromMarkers(arucoJsonPath)` implementieren (X aus triangulierten Marker-Positionen)
- [ ] `runHoming({ robotJsonPath, send })` implementieren
- [ ] `runBoardPipeline()` aufrufen → `runDir` + `aruco_marker_poses.json`
- [ ] X-Position berechnen
- [ ] 4b-Schleife: Arm1 → Ellbow → Arm2 → Hand (sequenziell, `--from-state`)
- [ ] `send({ type: 'done', state: accumulated_state, runDir })`
- [ ] Route `POST /api/homing/run` in `server/server.js` registrieren (SSE-Stream)
- [ ] Minimale Test-UI (temporär): Fetch + Log im Browser-Konsole genügt
- [x] Konstante `SCRIPT_4B` in `server/server.js` ergänzen
- [x] `server/homingOrchestrator.js` erstellen
- [x] `estimateXFromMarkers(arucoJsonPath)` implementieren
- [x] `runHoming({ robotJsonPath, homingDir, send, runScript, runBoardPipeline, SCRIPT_4B })` implementieren
- [x] `runBoardPipeline()` aufrufen → `aruco_marker_poses.json`
- [x] X-Position berechnen
- [x] 4b-Schleife: Arm1 → Ellbow → Arm2 → Hand (sequenziell, `--from-state`)
- [x] `send({ type: 'done', state: accumulated_state, runDir })`
- [x] Route `POST /api/homing/run` in `server/server.js` (SSE-Stream)
- [x] Route `POST /api/homing/send-state` in `server/server.js`
- [x] Route `GET /api/homing/run-data` (Bilder + State für Frontend)
- [x] `ROBOT_URL` Konstante in `server/server.js` ergänzen
---
### Phase 2 — Frontend `public/homing.html`
- [ ] Datei `public/homing.html` erstellen
- [ ] Sektion **Aktionen**: Button „Foto & Homing berechnen", Button „An Roboter senden" (disabled)
- [ ] Sektion **Ausgabe / Log**: SSE-Stream-Ausgabe, Schritt-Fortschritt
- [ ] Sektion **Analysis & Reasoning**: Zwischenergebnisse je Script als JSON
- [ ] Sektion **Result Raw JSON** + **Result Tree View**: `{ x, y, z, a, b, c, e }`
- [ ] Sektion **Snapshot CSV**: Marker-Tabelle (ID, Link, x, y, z, Residual)
- [ ] Sektion **Snapshots**: annotierte Kamerabilder (cam0, cam1, …)
- [ ] `public/homing.js` erstellen
- [ ] `runHoming()`: POST + SSE-Stream lesen, Log befüllen
- [ ] `showResult(state)`: Tree View + Raw JSON befüllen, Send-Button aktivieren
- [ ] `sendToRobot(state)`: POST `/api/homing/send-state`
- [ ] Link-Button von `public/index.html` zu `homing.html` ergänzen
- [x] Datei `public/homing.html` erstellen
- [x] Sektion **Aktionen**: Button „Foto & Homing berechnen", Button „An Roboter senden"
- [x] Sektion **Ausgabe / Log**: SSE-Stream-Ausgabe, Schritt-Fortschritt
- [x] Sektion **Analysis & Reasoning**: Zwischenergebnisse je Script als JSON
- [x] Sektion **Result Raw JSON** + **Result Tree View**: `{ x, y, z, a, b, c, e }`
- [x] Sektion **Snapshot CSV**: Marker-Tabelle (ID, Link, x, y, z)
- [x] Sektion **Snapshots**: annotierte Kamerabilder
- [x] `public/homing.js` erstellen
- [x] `runHoming()`: POST + SSE-Stream lesen, Log befüllen, Fortschrittsbalken
- [x] `showResult(state)`: Tree View + Raw JSON befüllen, Send-Button aktivieren
- [x] `sendToRobot(state)`: POST `/api/homing/send-state`
- [x] `loadRunData(runDir)`: Debug-Bilder nach dem Run laden
- [x] Link-Button von `public/index.html` zu `homing.html` ergänzen
---
@@ -397,8 +399,8 @@ automatisch die aktuelle Konfiguration.
| Kalibrierung (Kamera, Board, X-Achse) | ✅ fertig |
| Arm1 Joint-Origin Button | ✅ ausführbar |
| Arm-Marker in robot.json | 🔶 Nutzer |
| Phase 0 runBoardPipeline() | ❌ offen |
| Phase 1 /api/homing/run | ❌ offen |
| Phase 2 homing.html | ❌ offen |
| Phase 3 /api/homing/send-state | ❌ offen |
| Phase 0 runBoardPipeline() | ✅ fertig |
| Phase 1 /api/homing/run | ✅ fertig |
| Phase 2 homing.html | ✅ fertig |
| Phase 3 /api/homing/send-state | ✅ Route implementiert |
| Phase 4 robot.json via Driver-API | ⏳ später |