124 lines
3.7 KiB
Markdown
124 lines
3.7 KiB
Markdown
# 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 |
|