Skip to content

Add TCP position calibration and orientation teaching - #53

Draft
Jepson2k wants to merge 16 commits into
feat/skills-baseline-integrationfrom
feat/tcp-calibration
Draft

Jepson2k wants to merge 16 commits into
feat/skills-baseline-integrationfrom
feat/tcp-calibration

Conversation

@Jepson2k

@Jepson2k Jepson2k commented Sep 7, 2026 •

Copy link
Copy Markdown
Owner

Adds Setup → TCP for pivot-position calibration, separate orientation teaching, named saved measurements, and explicit confirmed application. Four or more stationary captures determine position; users teach axes against WRF or a named frame separately. Saved entries retain their tool/variant binding and measurement details. Saving setup does not configure the robot or edit Python.

The pivot solve and orientation teaching live in the Commander service module beside the acquisition helpers: they are this panel's calibration routine, not an interface contract. Every backend applies a full transform, so the offset-only settings paths are gone.

The six-axis settings and scene adopt the controller's confirmed transform. Reopening the page preserves that transform, and tool changes during initialization are handled without mixing readings. Preview uses the same full correction; the tool's physical mesh remains attached to its registered link. Public status now follows externally selected tool variants.

Validation: 12 simulated setup/settings/calibration workflows pass, including calibration/teaching/save/apply, controller and local FK agreement, isolated preview, page reload, wrong-tool refusal, settings and named setup tests. The populated panel was inspected in Chromium using Raspberry Pi hardware WebGL. The native PAR6 app workflow passes with the calibration controls and native/local FK agreement. Pre-commit passes.

Depends on #52 and companion waldoctl/PAROL6/PAR6 PRs on feat/tcp-calibration. Release waldoctl v0.15.0, then PAROL6 v0.9.0 / PAR6 v0.4.0, before consuming the new dependency pins. This draft does not merge or publish releases.

Companion PRs: waldoctl, PAROL6, PAR6.

Settings groups controls by task and places detailed help and advanced fields behind concise controls. TCP calibration separates measuring, saving and controller application. Browser checks cover both backends at desktop and laptop sizes, including 125% zoom.

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 TCP calibration with measurement details.

PAROL6 — saved TCP calibration with measurement details.

PAR6 — saved TCP calibration with measurement details.

PAR6 — saved TCP calibration with measurement details.

PAROL6 — compact Settings at a 1366 × 768 viewport.

PAROL6 — compact Settings at a 1366 × 768 viewport.

PAR6 — compact Settings at a 1366 × 768 viewport.

PAR6 — compact Settings at a 1366 × 768 viewport.

Jepson2k and others added 14 commits September 8, 2026 21:42
# Conflicts:
#	waldo_commander/components/named_setup.py
…n their own binding

Settings substituted the first variant for a tool the controller carries
without one, so every TCP edit was refused as belonging to a different
variant; sync_tool ignored variant-only changes made by another client; a
transform applied from the Setup panel never reached the Settings inputs,
so the next nudge pushed the stale six values over it. The Setup panel's
TCP dirty signature included editor state (observed binding, samples,
taught orientation), which either aborted every save after a connection
drop or rewrote a loaded calibration under whatever tool was fitted. The
displayed values now carry the binding they were read, solved or loaded
with, and only value edits mark the section dirty.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…-calibration

# Conflicts:
#	waldo_commander/services/path_preview_client.py
The pivot fit and orientation teaching are Commander's calibration
routine, so they live beside the acquisition helpers in the service
module instead of in the interface layer. Every backend applies and
reads a full user TCP transform, so the offset-only paths are gone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N8zt66KjkzgZLtQuSfJd9r
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N8zt66KjkzgZLtQuSfJd9r

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants