CalibrationService (gRPC)
Generated content. This page is produced by
cargo run --bin gen_docs(src-tauri/src/bin/gen_docs/) readingproto/maslow/v1/*.proto's compiledFileDescriptorSet, viaprost-reflect, re-run on every docs-site build. Do not hand-edit it: fix the generator or the source it reads instead.
Calibration is modeled as a custom method on a virtual collection: there is no persisted "calibration" resource, this is a stateless computation.
Full name: maslow.v1.CalibrationService
Methods
SolveCalibration
- Kind: unary
- Request:
SolveCalibrationRequest - Response:
SolveResult
Types
Every message and enum reachable from this service's requests and responses, including shared types defined in common.proto.
AnchorParams
The reduced 5-parameter anchor estimate the solver optimises over. BL is fixed at the origin and BR's Y is fixed at 0, so they are not parameters.
| Field | Type | Description |
|---|---|---|
tl_x | double | |
tl_y | double | |
tr_x | double | |
tr_y | double | |
br_x | double |
Anchors
Frame anchor coordinates (mm), as stored in the firmware config.
| Field | Type | Description |
|---|---|---|
tl_x | float | |
tl_y | float | |
tr_x | float | |
tr_y | float | |
bl_x | float | |
bl_y | float | |
br_x | float | |
br_y | float | |
valid | bool | True when the geometry is non-degenerate and passes the firmware's own basic sanity checks, i.e. the anchors are usable as a frame definition. |
calibrated | bool | True when the anchors are valid AND differ from the firmware's compiled defaults, i.e. a calibration actually ran and overwrote them. |
Fitness
Quality metrics for a solved fit.
| Field | Type | Description |
|---|---|---|
rms | double | sqrt(SSR / 4N), overall belt-length error, mm. |
max_residual | double | max|residual|, worst single belt-length error, mm. |
per_anchor | repeated double | Per-anchor RMS [tl, tr, bl, br], mm. |
converged | bool | True if the solver converged within the iteration cap on at least one attempt. |
Measurement
One belt-length measurement at a calibration waypoint (mm, XY plane).
| Field | Type | Description |
|---|---|---|
tl | double | |
tr | double | |
bl | double | |
br | double |
ResidualRow
One residual row: [tl, tr, bl, br] belt-length error, mm.
| Field | Type | Description |
|---|---|---|
values | repeated double |
Sled
Estimated sled position for a single measurement (mm, XY plane).
| Field | Type | Description |
|---|---|---|
x | double | |
y | double |
SolveCalibrationRequest
| Field | Type | Description |
|---|---|---|
measurements | repeated Measurement | |
initial | Anchors | Starting guess, as frame anchors (matching what a config dump provides), not the solver's internal 5-parameter form. If unset, the solver falls back to the firmware default frame. (part of oneof _initial) |
exclude | repeated uint32 | Zero-based measurement indices to exclude from the solve (what-if waypoint exclusion), without touching the machine. |
solver | string | Solver identifier; currently only "levenberg-marquardt" is implemented. |
SolveResult
Full result of a solve: candidate anchors + fitness + per-measurement
detail. ok reflects the firmware's own fitness gates; gate_error
explains a failure when ok is false.
| Field | Type | Description |
|---|---|---|
solver | string | |
ok | bool | |
gate_error | string | |
anchors | optional Anchors | |
params | optional AnchorParams | |
fitness | optional Fitness | |
sled | repeated Sled | |
residuals | repeated ResidualRow | Per-measurement residuals [tl, tr, bl, br] of the best params, mm. Each entry corresponds by index to kept_indices. |
kept_indices | repeated uint32 | Original measurement indices the solve actually used, in order. Equal to 0..n unless the caller excluded waypoints, letting a caller map sled/ residuals back to the original waypoint numbers. |