Phase 0, 1, 2
This commit is contained in:
@@ -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 ~520–606) 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 |
|
||||
|
||||
Reference in New Issue
Block a user