3.7 KiB
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 |