Conversation
…-data # Conflicts: # tests/test_handeye_panel_integration.py
… Setup saves Every page build restarted the camera on the same device, minting a new capture session that refused all later captures as "camera changed" and aborted a running auto-calibration on a reload. Transient acquisition failures (a dropped frame, an arm still settling, a mid-capture tool readback) were raised as fatal, so the auto run's retry loop never saw them. The Setup panel saved its own in-memory copy over the whole file, silently deleting a camera calibration the calibration panel had saved since the Setup panel last loaded. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…era-calibration-data # Conflicts: # tests/test_named_setup.py
The restart test compared a snapshot's JPEG with a holder it had just assigned that JPEG to, which cannot fail. What the restart owes the caller is fresh frames after the cache expired, so that is what it checks now. The browser layout test says what it is: a layout check of the panel's widest state, whose solve and save are the real ones and whose samples are handed over rather than captured pose by pose -- the workflow itself is covered by the integration test. SKIP=ty: pre-existing DryRunRobotClient.skill_capabilities diagnostic. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…era-calibration-data
…-data # Conflicts: # pyproject.toml
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Camera calibration can now describe a camera on the tool or fixed in the workspace, and saves typed measurements into named setup snapshots for Python use. The panel provides explicit reload/check and snapshot export. Reload/check waits up to one second for a newly received frame within the active camera session, so a temporary capture gap does not mask the setup binding check. Existing per-tool hand-eye measurements can be imported after confirming and checking their camera/tool binding; the original measurements remain saved.
Capture pairs fresh host-received images with stationary controller observations. Samples cannot span camera sessions, tool/TCP changes or resolutions. Fixed-camera solving uses the existing OpenCV hand-eye solver with inverse robot poses. Stored calibration checks cover acquisition, tool/TCP and named reference-frame changes; scene overlays clear when the binding cannot be verified.
Camera source identity reflects the configured device and capture dimensions. Hardware exposure synchronization, swapping a physical camera at the same device index, lens changes and remounting are not automatically detected; those physical changes require recalibration.
Validation: a real capture-gap regression first failed with a stale-frame refusal, then the complete tool and fixed-camera workflows passed on both the calibration and recording branches. Shared-contract tests, rendered-board tool/fixed solves, full panel capture/save/load/export/import workflows, fresh/stale camera snapshots and automatic calibration/stop behavior. The populated Chromium browser check passed with hardware WebGL on the Raspberry Pi; existing WC ↔ PAR6 native integration passed (27.2s). Browser validation exposed and verified fixes for camera-route registration after app rebuild and clipped content in the resizable panel.
Latest CI passes all nine OS/Python combinations, lint, and the native PAR6 integration. Each primary suite contains 399 cases: Linux has 397 passes and two skips; macOS/Windows have 362 passes and 37 documented browser/platform skips. Both full manual calibration workflows pass on every platform.
Stacked on #54; contract companion waldoctl #31. Uses the existing PAROL6 and PAR6 client APIs without firmware or wire changes. Dependency release: waldoctl v0.17.0.
Camera calibration uses a narrower panel, concise labels and responsive fields, with a clear Save calibration action.
Screenshots — revised interface, PAROL6 and PAR6
Captured in Chromium on September 10 from the combined feature stack; shared panels may include later PRs. PAROL6 uses fake serial; PAR6 uses
par6d --sim.PAROL6 — saved fixed-camera calibration, solved from rendered ChArUco fixtures.
PAR6 — saved fixed-camera calibration, solved from rendered ChArUco fixtures.