fix: align calibration tooling with science v1
This commit is contained in:
parent
28d714838b
commit
b9e4309842
11 changed files with 201 additions and 28 deletions
12
README.md
12
README.md
|
|
@ -118,6 +118,8 @@ The following major foundations are implemented and validated at their documente
|
||||||
- **Calibration Science v1 — PASS / FROZEN**
|
- **Calibration Science v1 — PASS / FROZEN**
|
||||||
- **Calibration Tooling v1 — PASS / FROZEN**
|
- **Calibration Tooling v1 — PASS / FROZEN**
|
||||||
- **Calibration Solver Preflight v1 — PASS**
|
- **Calibration Solver Preflight v1 — PASS**
|
||||||
|
- **Calibration Evidence Solver v1 — IMPLEMENTED / VALIDATED**
|
||||||
|
- **Calibration Tooling planarity alignment — PASS / FROZEN**
|
||||||
- **Project DB v24/v25 operational overlays — IMPLEMENTED / VALIDATED**
|
- **Project DB v24/v25 operational overlays — IMPLEMENTED / VALIDATED**
|
||||||
- raw.develop.batch/1 durable selected-execution path
|
- raw.develop.batch/1 durable selected-execution path
|
||||||
- features.extract.batch/1 durable selected-execution path
|
- features.extract.batch/1 durable selected-execution path
|
||||||
|
|
@ -188,9 +190,13 @@ BLOCKED_BY_KNOWN_CALIBRATION_DATA
|
||||||
```
|
```
|
||||||
|
|
||||||
Calibration Science v1 defines the protocol for future physically controlled calibration
|
Calibration Science v1 defines the protocol for future physically controlled calibration
|
||||||
acquisitions. Calibration Tooling v1 validates an already acquired Science v1 evidence bundle and
|
acquisitions. The external Calibration Evidence Solver v1 implements the qualified OpenCV 5.x
|
||||||
produces the bounded L3DCALB1 artifact; Calibration Bootstrap v1 imports that artifact. Neither
|
evidence path. Calibration Tooling v1 validates bounded Science v1 evidence and produces the
|
||||||
stage solves calibration internally or turns EXIF into scientific calibration.
|
L3DCALB1 artifact; Calibration Bootstrap v1 imports that artifact. None of these stages turns EXIF
|
||||||
|
into scientific calibration.
|
||||||
|
|
||||||
|
The current missing product boundary is the workflow coordinator that binds the immutable physical
|
||||||
|
session and solver bundle to one exact selected execution and drives Tooling/Bootstrap to `READY`.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@ CURRENT_PRODUCTION_TASK_KINDS=16
|
||||||
REAL_S21_TRACKS=PASS/FROZEN
|
REAL_S21_TRACKS=PASS/FROZEN
|
||||||
REAL_A6000_PRE_SFM=PASS/FROZEN
|
REAL_A6000_PRE_SFM=PASS/FROZEN
|
||||||
PRODUCT_DEFINITION_V1=PASS/FROZEN
|
PRODUCT_DEFINITION_V1=PASS/FROZEN
|
||||||
PROMPT_TREE=NEXT
|
PROMPT_TREE=CURRENT
|
||||||
|
CURRENT_NEXT=CALIBRATION_WORKFLOW_COORDINATOR
|
||||||
```
|
```
|
||||||
|
|
||||||
This index separates current authority, historical evidence and future product-definition work.
|
This index separates current authority, historical evidence and future product-definition work.
|
||||||
|
|
@ -147,6 +148,7 @@ Historical verifier results are never relabelled.
|
||||||
## Calibration
|
## Calibration
|
||||||
|
|
||||||
- [Calibration Science v1](architecture/calibration_science_v1.md)
|
- [Calibration Science v1](architecture/calibration_science_v1.md)
|
||||||
|
- [Calibration Tooling v1](architecture/calibration_tooling.md)
|
||||||
- [Calibration Bootstrap v1](architecture/calibration_bootstrap.md)
|
- [Calibration Bootstrap v1](architecture/calibration_bootstrap.md)
|
||||||
- [Calibration Solver Preflight v1](architecture/calibration_solver_preflight_v1.md)
|
- [Calibration Solver Preflight v1](architecture/calibration_solver_preflight_v1.md)
|
||||||
|
|
||||||
|
|
@ -212,7 +214,7 @@ Canonical target-product authority:
|
||||||
```text
|
```text
|
||||||
PRODUCT_DEFINITION_V1=PASS/FROZEN
|
PRODUCT_DEFINITION_V1=PASS/FROZEN
|
||||||
IMPLEMENTATION_AUTHORIZATION=NO
|
IMPLEMENTATION_AUTHORIZATION=NO
|
||||||
PROMPT_TREE=NEXT
|
PROMPT_TREE=CURRENT
|
||||||
```
|
```
|
||||||
|
|
||||||
The product definition freezes desired end-product behavior without reopening existing FROZEN
|
The product definition freezes desired end-product behavior without reopening existing FROZEN
|
||||||
|
|
|
||||||
|
|
@ -124,3 +124,23 @@ optique, acquérir au moins 40 vues, hacher, résoudre trois fois, vérifier
|
||||||
Science v1, passer le bundle à Calibration Tooling dans un projet dédié et
|
Science v1, passer le bundle à Calibration Tooling dans un projet dédié et
|
||||||
vérifier `CALIBRATION → READY`. La preuve s'arrête avant Sparse SfM ; S21 ne
|
vérifier `CALIBRATION → READY`. La preuve s'arrête avant Sparse SfM ; S21 ne
|
||||||
participe jamais.
|
participe jamais.
|
||||||
|
|
||||||
|
## Current lifecycle update
|
||||||
|
|
||||||
|
The preflight decision above has now been implemented.
|
||||||
|
|
||||||
|
```text
|
||||||
|
CALIBRATION_EVIDENCE_SOLVER_V1=IMPLEMENTED/VALIDATED
|
||||||
|
```
|
||||||
|
|
||||||
|
`tools/calibration_evidence_solver/` contains the external OpenCV 5.x solver selected by this
|
||||||
|
preflight. Its deterministic synthetic CPU1 self-test passes. It remains external to Lardon3D
|
||||||
|
runtime linkage and Project DB mutation.
|
||||||
|
|
||||||
|
The current missing implementation boundary is no longer the solver. It is the higher-level
|
||||||
|
calibration workflow coordinator that binds an immutable physical session plus the complete solver
|
||||||
|
bundle to the exact selected execution, constructs `Lardon3DCalibrationToolingEvidence`, invokes the
|
||||||
|
frozen Tooling/Bootstrap path and reaches `READY` without manufacturing evidence.
|
||||||
|
|
||||||
|
The original preflight text is retained as decision history; this section owns its later lifecycle
|
||||||
|
status.
|
||||||
|
|
|
||||||
103
docs/architecture/calibration_tooling.md
Normal file
103
docs/architecture/calibration_tooling.md
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
# Calibration Tooling v1
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
```text
|
||||||
|
CALIBRATION_TOOLING_V1=PASS/FROZEN
|
||||||
|
CALIBRATION_TOOLING_PLANARITY_ALIGNMENT=PASS/FROZEN
|
||||||
|
L3DCALB1_VERSION=1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Authority
|
||||||
|
|
||||||
|
Calibration Science v1 is the scientific authority. This document specializes
|
||||||
|
the bounded operational bridge implemented by
|
||||||
|
`include/lardon3d/calibration_tooling.h` and `src/calibration_tooling.c`.
|
||||||
|
|
||||||
|
The bridge connects:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Calibration Science v1 evidence
|
||||||
|
-> Calibration Tooling v1
|
||||||
|
-> L3DCALB1 v1
|
||||||
|
-> Calibration Bootstrap v1
|
||||||
|
```
|
||||||
|
|
||||||
|
It does not acquire images, run a solver, infer optical state, create
|
||||||
|
reconstruction results, add a Project DB schema version, add a Task kind, or
|
||||||
|
start Sparse SfM.
|
||||||
|
|
||||||
|
## Planarity alignment
|
||||||
|
|
||||||
|
Calibration Science v1 requires a rigid planar physical target and rejects a
|
||||||
|
warped board. It defines no numeric target-flatness tolerance.
|
||||||
|
|
||||||
|
The canonical external session records categorical physical evidence:
|
||||||
|
|
||||||
|
```text
|
||||||
|
planarity PASS <planarity-evidence-sha256>
|
||||||
|
```
|
||||||
|
|
||||||
|
The Science v1 value `0.20 mm` applies to the allowed range of the ten measured
|
||||||
|
30.000 mm squares. It is not a target-flatness threshold.
|
||||||
|
|
||||||
|
`Lardon3DCalibrationToolingEvidence.target_flatness_mm` is retained only to
|
||||||
|
preserve the existing public structure layout. In v1 it MUST be IEEE-754 NaN.
|
||||||
|
Any finite value is rejected so a caller cannot invent a physical measurement
|
||||||
|
or silently create a new scientific threshold.
|
||||||
|
|
||||||
|
The immutable session containing the categorical planarity attestation is bound
|
||||||
|
by the higher-level workflow through `initialization_evidence_sha256`.
|
||||||
|
|
||||||
|
This corrective alignment changes neither Calibration Science v1 nor
|
||||||
|
`L3DCALB1` v1 nor Calibration Bootstrap v1.
|
||||||
|
|
||||||
|
## Bounded evidence
|
||||||
|
|
||||||
|
Tooling continues to validate the frozen Science v1 requirements, including:
|
||||||
|
|
||||||
|
- exact ChArUco 9 x 7 / DICT_5X5_100 target identity;
|
||||||
|
- 30.000 mm squares and 21.000 mm markers;
|
||||||
|
- ten physical square measurements and instrument resolution;
|
||||||
|
- immutable target, optical-state, solver and evidence digests;
|
||||||
|
- accepted and rejected view evidence;
|
||||||
|
- field-region, distance and angle diversity;
|
||||||
|
- corner quality, clipping, residual and hold-out evidence;
|
||||||
|
- deterministic repeated parameters;
|
||||||
|
- representative coordinate equivalence;
|
||||||
|
- exact selected-image order and representation SHA-256;
|
||||||
|
- the exact eight-parameter pinhole model;
|
||||||
|
- zero active extra distortion coefficients.
|
||||||
|
|
||||||
|
Successful solver exit alone is never sufficient acceptance.
|
||||||
|
|
||||||
|
## Artifact and Bootstrap
|
||||||
|
|
||||||
|
For valid evidence Tooling produces exactly the existing fixed-width,
|
||||||
|
little-endian `L3DCALB1` v1 artifact and may invoke only the frozen Calibration
|
||||||
|
Bootstrap importer.
|
||||||
|
|
||||||
|
A failed validation reaches neither artifact publication nor Project DB
|
||||||
|
mutation. Exact successful retries converge through the existing immutable
|
||||||
|
Bootstrap contract.
|
||||||
|
|
||||||
|
## Current next boundary
|
||||||
|
|
||||||
|
The external Calibration Evidence Solver v1 is implemented and validated.
|
||||||
|
|
||||||
|
The missing product boundary is the higher-level calibration workflow
|
||||||
|
coordinator. It must consume:
|
||||||
|
|
||||||
|
```text
|
||||||
|
session.l3dcal
|
||||||
|
session.l3dcal.bundle/detection.json
|
||||||
|
session.l3dcal.bundle/solve.json
|
||||||
|
session.l3dcal.bundle/evidence.json
|
||||||
|
```
|
||||||
|
|
||||||
|
together with the exact selected execution and optical state, then construct
|
||||||
|
the bounded `Lardon3DCalibrationToolingEvidence`.
|
||||||
|
|
||||||
|
The coordinator must verify regular bounded files, immutable digests,
|
||||||
|
session/bundle identity, categorical planarity PASS, selected-execution image
|
||||||
|
binding and optical-state equality. It must never manufacture missing evidence.
|
||||||
|
|
@ -24,7 +24,7 @@ SOURCE_COMMENT_AUDIT PASS
|
||||||
PRODUCT_DEFINITION PASS/FROZEN
|
PRODUCT_DEFINITION PASS/FROZEN
|
||||||
PROMPT_TREE CURRENT
|
PROMPT_TREE CURRENT
|
||||||
USER_FACING_UI_LANGUAGE_NORMALIZATION PASS
|
USER_FACING_UI_LANGUAGE_NORMALIZATION PASS
|
||||||
CURRENT_NEXT FINAL_USABLE_CALIBRATION_WORKFLOW
|
CURRENT_NEXT CALIBRATION_WORKFLOW_COORDINATOR
|
||||||
```
|
```
|
||||||
|
|
||||||
The current Project DB head is additive:
|
The current Project DB head is additive:
|
||||||
|
|
@ -515,8 +515,29 @@ contract and produces deterministic `L3DCALB1` v1.
|
||||||
|
|
||||||
Calibration Bootstrap v1 imports the explicit artifact.
|
Calibration Bootstrap v1 imports the explicit artifact.
|
||||||
|
|
||||||
Calibration Solver Preflight v1 selects the future external OpenCV 5.0.x solver path. That solver is
|
Calibration Evidence Solver v1 implements the external OpenCV 5.x evidence path selected by
|
||||||
not a runtime dependency and does not itself execute reconstruction.
|
Calibration Solver Preflight v1. It remains outside the Lardon3D runtime and Project DB and its
|
||||||
|
deterministic synthetic CPU1 self-test is validated.
|
||||||
|
|
||||||
|
A bounded Tooling correction aligned planarity handling with Calibration Science v1: Science v1
|
||||||
|
defines a categorical physical planarity attestation, not a numeric flatness threshold. Tooling
|
||||||
|
therefore rejects invented finite `target_flatness_mm` values. `L3DCALB1` v1 and Calibration
|
||||||
|
Bootstrap remain unchanged.
|
||||||
|
|
||||||
|
The current implementation dependency is the calibration workflow coordinator:
|
||||||
|
|
||||||
|
```text
|
||||||
|
immutable session.l3dcal
|
||||||
|
+ detection.json
|
||||||
|
+ solve.json
|
||||||
|
+ evidence.json
|
||||||
|
+ exact selected execution
|
||||||
|
+ exact optical state
|
||||||
|
-> bounded Calibration Tooling evidence
|
||||||
|
-> L3DCALB1 v1
|
||||||
|
-> Bootstrap
|
||||||
|
-> READY
|
||||||
|
```
|
||||||
|
|
||||||
No calibration component silently turns metadata into scientific calibration.
|
No calibration component silently turns metadata into scientific calibration.
|
||||||
|
|
||||||
|
|
@ -857,18 +878,19 @@ The established Queue/Governor plus bounded internal fan-out are sufficient to e
|
||||||
|
|
||||||
## Current next
|
## Current next
|
||||||
|
|
||||||
The immediate repository work is:
|
The repository execution contract is active:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
DOCUMENTATION_FINDING_REMEDIATION PASS
|
DOCUMENTATION_FINDING_REMEDIATION PASS
|
||||||
SOURCE_COMMENT_AUDIT PASS
|
SOURCE_COMMENT_AUDIT PASS
|
||||||
SOURCE_COMMENT_REMEDIATION PASS
|
SOURCE_COMMENT_REMEDIATION PASS
|
||||||
PRODUCT_DEFINITION_V1 PASS/FROZEN
|
PRODUCT_DEFINITION_V1 PASS/FROZEN
|
||||||
PROMPT_TREE NEXT
|
PROMPT_TREE CURRENT
|
||||||
|
CALIBRATION_EVIDENCE_SOLVER_V1 IMPLEMENTED/VALIDATED
|
||||||
|
CALIBRATION_TOOLING_ALIGNMENT PASS/FROZEN
|
||||||
|
CURRENT_NEXT CALIBRATION_WORKFLOW_COORDINATOR
|
||||||
```
|
```
|
||||||
|
|
||||||
No new Lardon3D implementation is authorized by this roadmap update.
|
Implementation proceeds only through explicitly human-authorized tranches under `prompt.md` and the
|
||||||
|
numbered `prompt/` execution contract. The current authorized dependency is the final usable
|
||||||
Implementation order is the next preparation phase and will be frozen in `prompt.md` and the numbered
|
calibration workflow; its next missing sub-boundary is the workflow coordinator.
|
||||||
`prompt/` execution contract under explicit human authority. Product Definition v1 is the product-intent input to
|
|
||||||
that tree; it is not implementation authorization.
|
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,12 @@ typedef struct {
|
||||||
double target_white_border_mm;
|
double target_white_border_mm;
|
||||||
double target_measurements_mm[LARDON3D_CALIBRATION_TOOLING_TARGET_MEASUREMENTS];
|
double target_measurements_mm[LARDON3D_CALIBRATION_TOOLING_TARGET_MEASUREMENTS];
|
||||||
double measurement_resolution_mm;
|
double measurement_resolution_mm;
|
||||||
|
/* Calibration Science v1 defines planarity as a categorical physical
|
||||||
|
* attestation, not a numeric flatness tolerance. This legacy ABI field is
|
||||||
|
* therefore a required NAN sentinel and MUST NOT carry an invented physical
|
||||||
|
* measurement. The future workflow coordinator binds the canonical session
|
||||||
|
* manifest containing `planarity PASS <sha256>` through
|
||||||
|
* initialization_evidence_sha256. */
|
||||||
double target_flatness_mm;
|
double target_flatness_mm;
|
||||||
double holdout_rmse_px;
|
double holdout_rmse_px;
|
||||||
double holdout_maximum_residual_px;
|
double holdout_maximum_residual_px;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
CURRENT_PROJECT_DB_SCHEMA=v25
|
CURRENT_PROJECT_DB_SCHEMA=v25
|
||||||
PRODUCTION_TASK_KINDS=16
|
PRODUCTION_TASK_KINDS=16
|
||||||
USER_FACING_UI_LANGUAGE_NORMALIZATION=PASS
|
USER_FACING_UI_LANGUAGE_NORMALIZATION=PASS
|
||||||
CURRENT_IMPLEMENTATION_CURSOR=1_FINAL_USABLE_CALIBRATION_WORKFLOW
|
CURRENT_IMPLEMENTATION_CURSOR=1_CALIBRATION_WORKFLOW_COORDINATOR
|
||||||
```
|
```
|
||||||
|
|
||||||
## Authority
|
## Authority
|
||||||
|
|
@ -26,6 +26,8 @@ TUI operational observatory VALIDATED
|
||||||
User-facing TUI/control language PASS
|
User-facing TUI/control language PASS
|
||||||
External SSD controller VALIDATED
|
External SSD controller VALIDATED
|
||||||
Calibration Solver Preflight v1 PASS
|
Calibration Solver Preflight v1 PASS
|
||||||
|
Calibration Evidence Solver v1 IMPLEMENTED/VALIDATED
|
||||||
|
Calibration Tooling planarity alignment PASS/FROZEN
|
||||||
```
|
```
|
||||||
|
|
||||||
The additive schema lineage is:
|
The additive schema lineage is:
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,22 @@
|
||||||
```text
|
```text
|
||||||
CALIBRATION_SCIENCE_V1=PASS/FROZEN
|
CALIBRATION_SCIENCE_V1=PASS/FROZEN
|
||||||
CALIBRATION_TOOLING_V1=PASS/FROZEN
|
CALIBRATION_TOOLING_V1=PASS/FROZEN
|
||||||
|
CALIBRATION_TOOLING_PLANARITY_ALIGNMENT=PASS/FROZEN
|
||||||
CALIBRATION_BOOTSTRAP_V1=PASS/FROZEN
|
CALIBRATION_BOOTSTRAP_V1=PASS/FROZEN
|
||||||
CALIBRATION_WORKFLOW=PLANNED
|
CALIBRATION_EVIDENCE_SOLVER_V1=IMPLEMENTED/VALIDATED
|
||||||
|
CALIBRATION_WORKFLOW=IN_PROGRESS
|
||||||
|
CURRENT_CALIBRATION_NEXT=WORKFLOW_COORDINATOR
|
||||||
```
|
```
|
||||||
|
|
||||||
## Authority
|
## Authority
|
||||||
|
|
||||||
`docs/architecture/calibration_science_v1.md`, `docs/architecture/calibration_bootstrap.md` and `docs/architecture/calibration_solver_preflight_v1.md` are the current specialized calibration documents.
|
`docs/architecture/calibration_science_v1.md`, `docs/architecture/calibration_bootstrap.md` and `docs/architecture/calibration_solver_preflight_v1.md` are the current specialized calibration documents.
|
||||||
|
|
||||||
At this checkpoint there is no `docs/architecture/calibration_tooling.md`. Calibration Tooling v1 is nevertheless an acquired PASS/FROZEN implementation boundary. For its exact current API/constant behavior, inspect the executable/public implementation authority, beginning with `include/lardon3d/calibration_tooling.h`, together with the lifecycle declarations in `README.md`, `docs/roadmap/roadmap.md` and `docs/product/product_definition.md`. Do not invent a missing documentation file or treat this prompt file as a replacement architecture specification.
|
`docs/architecture/calibration_tooling.md` is the specialized Tooling authority. The public API remains `include/lardon3d/calibration_tooling.h`.
|
||||||
|
|
||||||
|
A bounded corrective review established that Calibration Science v1 defines target planarity as a categorical physical attestation, not a numeric flatness tolerance. Tooling preserves its public structure layout while requiring `target_flatness_mm` to be NaN, so callers cannot invent a millimetre measurement. The canonical session's `planarity PASS <sha256>` evidence is bound through immutable initialization evidence.
|
||||||
|
|
||||||
|
The external `tools/calibration_evidence_solver/` implementation is present and validated by its deterministic synthetic CPU1 self-test. It remains external to the Lardon3D runtime and Project DB.
|
||||||
|
|
||||||
## CURRENT
|
## CURRENT
|
||||||
|
|
||||||
|
|
@ -30,15 +37,19 @@ Do not retro-calibrate them by invention.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
dedicated physical calibration acquisition
|
dedicated physical calibration acquisition
|
||||||
-> external OpenCV 5.x solver
|
-> external OpenCV 5.x Calibration Evidence Solver v1
|
||||||
|
-> immutable session manifest + complete solver bundle
|
||||||
|
-> workflow coordinator
|
||||||
-> Calibration Tooling v1
|
-> Calibration Tooling v1
|
||||||
-> deterministic L3DCALB1 v1
|
-> deterministic L3DCALB1 v1
|
||||||
-> Calibration Bootstrap v1
|
-> Calibration Bootstrap v1
|
||||||
-> exact optical assignment
|
-> exact selected-execution calibration scope attachment
|
||||||
-> READY
|
-> READY
|
||||||
-> real Sparse SfM
|
-> real Sparse SfM
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The current implementation gap is the workflow coordinator. It consumes the immutable `session.l3dcal` plus `detection.json`, `solve.json` and `evidence.json`, binds them to the exact selected execution and optical state, constructs the bounded Tooling evidence and never manufactures missing physical evidence.
|
||||||
|
|
||||||
## REQUIRED_PRODUCT_TARGET
|
## REQUIRED_PRODUCT_TARGET
|
||||||
|
|
||||||
The TUI calibration assistant must expose:
|
The TUI calibration assistant must expose:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
IMPLEMENTATION_ORDER=DEPENDENCY_DRIVEN
|
IMPLEMENTATION_ORDER=DEPENDENCY_DRIVEN
|
||||||
IMPLEMENTATION_AUTHORIZATION=NO
|
IMPLEMENTATION_AUTHORIZATION=NO
|
||||||
STEP_0_USER_FACING_LANGUAGE_NORMALIZATION=PASS
|
STEP_0_USER_FACING_LANGUAGE_NORMALIZATION=PASS
|
||||||
CURRENT_NEXT=1_FINAL_USABLE_CALIBRATION_WORKFLOW
|
CURRENT_NEXT=1_CALIBRATION_WORKFLOW_COORDINATOR
|
||||||
```
|
```
|
||||||
|
|
||||||
## Authority
|
## Authority
|
||||||
|
|
@ -20,7 +20,7 @@ Implementation remains unauthorized until the human explicitly authorizes a tran
|
||||||
Default dependency order:
|
Default dependency order:
|
||||||
|
|
||||||
0. user-facing repository/UI language normalization where appropriate — PASS;
|
0. user-facing repository/UI language normalization where appropriate — PASS;
|
||||||
1. final usable calibration workflow — CURRENT NEXT;
|
1. final usable calibration workflow — IN PROGRESS; current next sub-boundary: workflow coordinator;
|
||||||
2. dedicated physical calibrated real campaign;
|
2. dedicated physical calibrated real campaign;
|
||||||
3. real Sparse SfM proof;
|
3. real Sparse SfM proof;
|
||||||
4. durable Dense/OpenMVS orchestration;
|
4. durable Dense/OpenMVS orchestration;
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ Lardon3DCalibrationToolingResult lardon3d_calibration_tooling_validate(
|
||||||
!finite_value(e->target_white_border_mm) || e->target_white_border_mm < 30.0 ||
|
!finite_value(e->target_white_border_mm) || e->target_white_border_mm < 30.0 ||
|
||||||
e->extra_distortion_coefficient_count != 0 || !finite_value(e->measurement_resolution_mm) ||
|
e->extra_distortion_coefficient_count != 0 || !finite_value(e->measurement_resolution_mm) ||
|
||||||
e->measurement_resolution_mm <= 0 || e->measurement_resolution_mm > 0.1 ||
|
e->measurement_resolution_mm <= 0 || e->measurement_resolution_mm > 0.1 ||
|
||||||
!finite_value(e->target_flatness_mm) || e->target_flatness_mm < 0 || e->target_flatness_mm > 0.20)
|
!isnan(e->target_flatness_mm))
|
||||||
return LARDON3D_CALIBRATION_TOOLING_SCIENCE_REJECTED;
|
return LARDON3D_CALIBRATION_TOOLING_SCIENCE_REJECTED;
|
||||||
double lo = 30.0, hi = 30.0;
|
double lo = 30.0, hi = 30.0;
|
||||||
for (size_t i = 0; i < LARDON3D_CALIBRATION_TOOLING_TARGET_MEASUREMENTS; ++i) {
|
for (size_t i = 0; i < LARDON3D_CALIBRATION_TOOLING_TARGET_MEASUREMENTS; ++i) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <sqlite3.h>
|
#include <sqlite3.h>
|
||||||
|
#include <math.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -37,7 +38,7 @@ static void fixture(Lardon3DCalibrationToolingEvidence *e, Lardon3DCalibrationTo
|
||||||
e->target_family=LARDON3D_CALIBRATION_TOOLING_TARGET_CHARUCO_9X7_DICT_5X5_100; e->target_squares_x=9; e->target_squares_y=7;
|
e->target_family=LARDON3D_CALIBRATION_TOOLING_TARGET_CHARUCO_9X7_DICT_5X5_100; e->target_squares_x=9; e->target_squares_y=7;
|
||||||
e->target_square_length_mm=30; e->target_marker_length_mm=21; e->target_active_width_mm=270; e->target_active_height_mm=210; e->target_white_border_mm=30;
|
e->target_square_length_mm=30; e->target_marker_length_mm=21; e->target_active_width_mm=270; e->target_active_height_mm=210; e->target_white_border_mm=30;
|
||||||
for (size_t i=0;i<10;++i) e->target_measurements_mm[i]=30.0;
|
for (size_t i=0;i<10;++i) e->target_measurements_mm[i]=30.0;
|
||||||
e->measurement_resolution_mm=.1; e->target_flatness_mm=.1; e->holdout_rmse_px=.4; e->holdout_maximum_residual_px=.8;
|
e->measurement_resolution_mm=.1; e->target_flatness_mm=NAN; e->holdout_rmse_px=.4; e->holdout_maximum_residual_px=.8;
|
||||||
for (size_t i=0;i<60;++i) {
|
for (size_t i=0;i<60;++i) {
|
||||||
static const uint32_t quadrants[10]={0,0,1,1,2,2,3,3,4,4};
|
static const uint32_t quadrants[10]={0,0,1,1,2,2,3,3,4,4};
|
||||||
static const uint32_t distances[10]={0,1,2,0,1,2,0,1,2,0};
|
static const uint32_t distances[10]={0,1,2,0,1,2,0,1,2,0};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue