Use native LinuxCNC homing and consolidate web panel status
This commit is contained in:
53
doc-rtcp/xyzac-native-homing-status-validation.md
Normal file
53
doc-rtcp/xyzac-native-homing-status-validation.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Native Homing and Status Validation
|
||||
|
||||
Date: 2026-09-09. Local URL: http://127.0.0.1:5175/.
|
||||
This records local execution, not deployment or a full LinuxCNC port.
|
||||
|
||||
## Implementation
|
||||
|
||||
- The selected XYZAC case compiles the pinned `homing.c` and `simple_tp.c`.
|
||||
- HAL allocation and ideal motor feedback are adapted; the homing state
|
||||
machine is not rewritten in JavaScript.
|
||||
- `task.state` is machine state; interpreter state is `task.interpState`.
|
||||
- `motion.traj.mode` is FREE/COORD/TELEOP; `motion_type` is separate.
|
||||
- `home_state` comes from homemod's state underlying `joint.N.home-state`.
|
||||
- The monitor displays task mode/state, interpreter state, motion mode/type
|
||||
and Homing. Per-joint status and history remain in the snapshot; their table
|
||||
and history list were removed from the visible panel at the user's request.
|
||||
- Numeric Home Joint replaces the world-axis-to-joint alias. Original control
|
||||
ID `manual-home-axis` is retained; `manual-home-joint-select` selects 0..4.
|
||||
- Home acceptance is asynchronous. Completion is determined by homemod,
|
||||
not by the coordinated planner queue.
|
||||
|
||||
## Verified
|
||||
|
||||
- Native C test: `ctest --test-dir build-native -R sim_native_homing_test`.
|
||||
- WASM/Worker: `node web/worker/test_native_homing.mjs`.
|
||||
- All five joints: Jog then native no-search re-home resets joint coordinates
|
||||
while preserving simulated physical motor position and updating motor offset.
|
||||
- A test INI with HOME=5 executes the original free_tp final move; intermediate
|
||||
positions are nonzero, homed stays false until completion, coordinated TP
|
||||
queue remains empty.
|
||||
- Partial home remains FREE; the native all-homed edge switches to TELEOP.
|
||||
- AUTO+PAUSED rejects switching to MANUAL; abort and E-stop cancel homemod
|
||||
without marking interrupted joints homed; subsequent re-home works.
|
||||
- Native state save/restore preserves positions and offsets.
|
||||
- Existing Step, WAITING/MDI Pause/Resume, rerun, touch-off, source widget gates
|
||||
and Live Plot lifecycle regression tests pass with asynchronous Home setup.
|
||||
- Source Tcl oracle: 576 scenarios, 7488 assertions. Control inventory: 83 IDs.
|
||||
- Visible Chrome tests: `scripts/test_xyzac_home_reset_browser.mjs` and
|
||||
`scripts/test_xyzac_panel_buttons_browser.mjs` with `HEADED=1`.
|
||||
- Desktop/mobile screenshots and canvas pixel checks pass. General browser
|
||||
audit covers 51 buttons with no page errors.
|
||||
- React type checking and production build pass.
|
||||
|
||||
Screenshots: `/tmp/axis-native-home-desktop.png`,
|
||||
`/tmp/axis-native-home-mobile.png`.
|
||||
|
||||
## Remaining Boundaries
|
||||
|
||||
Task/interpreter status still uses the existing WASM adapter. Physical switch,
|
||||
encoder and unlock hardware have not been validated; the selected INI uses
|
||||
zero search/latch velocities. Full Joint/World jogging is not exposed.
|
||||
General recovery retains the existing planner/HAL endpoint differences and
|
||||
large RECOVER envelope stack limitation documented in the source-flow contract.
|
||||
Reference in New Issue
Block a user