docs: add box+# calibration target procedure to distortion spec
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a94beccaad
commit
04fc642137
1 changed files with 28 additions and 2 deletions
|
|
@ -19,8 +19,8 @@ This is a **model** limitation, not a calibration-points problem.
|
||||||
- Camera is **permanently fixed** relative to the bed → calibration is one-time and durable.
|
- Camera is **permanently fixed** relative to the bed → calibration is one-time and durable.
|
||||||
- Correction strategy: **bend the overlay** to match the raw (curved) video. The camera
|
- Correction strategy: **bend the overlay** to match the raw (curved) video. The camera
|
||||||
image is left untouched (no per-frame image rectification).
|
image is left untouched (no per-frame image rectification).
|
||||||
- Calibration budget: **~8–12 points** jogged to known machine X/Y across the bed,
|
- Calibration budget: **~12–16 points** jogged to known machine X/Y across the bed,
|
||||||
including near the corners (where distortion is worst).
|
including near the corners (where distortion is worst). See *Calibration target* below.
|
||||||
- Keep the existing overlay pipeline shape: `machine-mm → image-point` for drawing, and
|
- Keep the existing overlay pipeline shape: `machine-mm → image-point` for drawing, and
|
||||||
`image-point → machine-mm` for click-to-set-origin / drag-to-rotate.
|
`image-point → machine-mm` for click-to-set-origin / drag-to-rotate.
|
||||||
|
|
||||||
|
|
@ -92,6 +92,32 @@ video click (px)
|
||||||
→ set work origin / rotation
|
→ set work origin / rotation
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Calibration target (practical procedure)
|
||||||
|
|
||||||
|
A **box + "#"** drawn on the bed: lines at the thirds of each axis, i.e.
|
||||||
|
`x ∈ {0, ⅓, ⅔, 1}` and `y ∈ {0, ⅓, ⅔, 1}`. Their 16 intersections are the calibration
|
||||||
|
points — **12 on the perimeter** (4 corners + 2 per side) plus **4 interior crossings** at
|
||||||
|
the centre of the "#". Click all 16 in the feed.
|
||||||
|
|
||||||
|
The 4 interior points matter: a polynomial constrained only on the boundary can wiggle in
|
||||||
|
the interior, so the centre crossings pin the fit where edge points can't.
|
||||||
|
|
||||||
|
**Capture by jog-and-mark, not ruler-and-guess:** jog the spindle to each target
|
||||||
|
coordinate and mark at the tip, so the commanded machine coordinate is exact and the mark
|
||||||
|
sits exactly under the tip. Then click each mark in the video.
|
||||||
|
|
||||||
|
For the 2440×1220 bed the 16 targets are every combination of:
|
||||||
|
|
||||||
|
```
|
||||||
|
X: 0 813.3 1626.7 2440
|
||||||
|
Y: 0 406.7 813.3 1220
|
||||||
|
```
|
||||||
|
|
||||||
|
Interior four: (813.3, 406.7), (1626.7, 406.7), (813.3, 813.3), (1626.7, 813.3).
|
||||||
|
|
||||||
|
This 16-point spread also clears the degree-3 minimum, so escalating from degree 2 to 3
|
||||||
|
needs no extra capture.
|
||||||
|
|
||||||
## Migration
|
## Migration
|
||||||
|
|
||||||
The committed default calibration in `dist/config.json` is a homography and **will not
|
The committed default calibration in `dist/config.json` is a homography and **will not
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue