54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
# 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.
|