Callibration

This commit is contained in:
chk
2026-06-10 09:51:12 +02:00
parent b15f7f2ce1
commit 07dee473ab
4 changed files with 425 additions and 29 deletions

123
doc/Callibration_ROADMAP.md Normal file
View File

@@ -0,0 +1,123 @@
# 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 |