Files
appRobotHoming/doc/Callibration_ROADMAP.md
2026-06-10 09:51:12 +02:00

124 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Calibration Roadmap appRobotHoming
> Stand: 2026-06-10
> Ziel: Vor dem Homing muss das System einmalig (oder nach mechanischen Änderungen) kalibriert werden.
---
## Übersicht der Kalibrierungsschritte
```
[1] Camera NPZ → [2] Board → [3] Robot X-Axis → [4] Arm1 / Arm2
```
Jede Stufe baut auf der vorherigen auf. Die Ergebnisse werden als Dateien gespeichert und vom Homing-Prozess geladen.
---
## [1] Camera NPZ Kamerakalibrierung
**Ziel:** Intrinsische Kameraparameter (Brennweite, Verzerrungskoeffizienten, Kameramatrix) für jede Kamera ermitteln und als `.npz`-Datei speichern.
**Vorgehen (noch offen):**
- Schachbrettmuster / ChArUco-Board aus verschiedenen Winkeln fotografieren
- OpenCV `calibrateCamera()` ausführen
- Ergebnis speichern: `cam0_calib.npz`, `cam1_calib.npz`, `cam2_calib.npz`
**Aktionen auf der Seite (geplant):**
- Fotos aufnehmen (mehrere Posen)
- Kalibrierung berechnen
- `.npz`-Datei herunterladen / auf Server speichern
- Reprojektionsfehler anzeigen
**Offene Fragen:**
- Welches Muster wird verwendet (Schachbrett vs. ChArUco)?
- Automatische Erfassung oder manueller Upload der Bilder?
---
## [2] Board Referenz-Board-Kalibrierung
**Ziel:** Die extrinsische Position des Marker-Boards im Kamera-Koordinatensystem bestimmen.
**Vorgehen (noch offen):**
- Board in definierter Position aufstellen
- Foto aufnehmen, Marker erkennen (`aruco.detectMarkers`)
- `solvePnP` → Rotations- und Translationsvektor berechnen
- Transformation Board → Kamera speichern
**Aktionen auf der Seite (geplant):**
- Kamerabild anzeigen mit erkannten Markern
- Pose berechnen und anzeigen
- Kalibrierungsdatei speichern
**Offene Fragen:**
- Feste Board-Position oder Referenzpunkte einmessen?
---
## [3] Robot X-Axis Achsenrichtung kalibrieren
**Ziel:** Die X-Achse des Roboters im Weltkoordinatensystem verorten (Ausrichtung und Nullpunkt).
**Vorgehen (noch offen):**
- Roboter an bekannte X-Positionen fahren (z. B. X=0 und X=max)
- Kamera beobachtet den Endeffektor / Marker am Roboter
- Achsvektor aus zwei Messpunkten berechnen
- Ergebnis speichern
**Aktionen auf der Seite (geplant):**
- Roboter zu Referenzposition 1 fahren → Foto → Marker-Position merken
- Roboter zu Referenzposition 2 fahren → Foto → Marker-Position merken
- Achsvektor berechnen und anzeigen
- Speichern
**Offene Fragen:**
- Wie viele Referenzpunkte werden benötigt?
- Wird die Z-Achse separat kalibriert?
---
## [4] Arm1 / Arm2 Gelenk-Kalibrierung
**Ziel:** Nullposition und Kinematikparameter von Arm1 und Arm2 einmessen.
**Vorgehen (noch offen):**
- Arm in mechanische Nullposition fahren (physischer Anschlag oder Markierung)
- Kamera prüft die tatsächliche Arm-Pose
- Offset zwischen Soll und Ist berechnen und speichern
**Aktionen auf der Seite (geplant):**
- Arm1 auf Nullposition → Foto → Winkel ablesen
- Arm2 auf Nullposition → Foto → Winkel ablesen
- Offset-Korrektur berechnen und speichern
**Offene Fragen:**
- Separater Marker pro Armgelenk?
- Kalibrierung bei jedem Start oder nur nach Umbau?
---
## Dateistruktur (geplant)
```
calibration/
cam0_calib.npz
cam1_calib.npz
cam2_calib.npz
board_pose.json
robot_xaxis.json
arm_offsets.json
```
---
## Status
| Schritt | Status | Anmerkung |
|------------------|--------------|----------------------------------|
| Camera NPZ | offen | Konzept unklar |
| Board | offen | Konzept unklar |
| Robot X-Axis | offen | Konzept unklar |
| Arm1 / Arm2 | offen | Konzept unklar |
| Calibration-UI | in Arbeit | HTML-Seite angelegt |