# 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 |