按规划持续工作

结论:已纳入 LinuxCNC 五轴 switchkins M428/M429/M430 来源资产,补齐 remap source probe 与 native 验证闭环,未新增自写 CNC 语义。
This commit is contained in:
2026-06-08 15:33:05 +08:00
parent 19687c3268
commit 5df62ad60a
61 changed files with 12160 additions and 4 deletions

View File

@@ -587,3 +587,11 @@ switchable `5axiskins` XYZBCW bridge-mill model, TRT `xyzac`/`xyzbc`
table-rotary models, CoreXY, rotated-axis, rose, max, linear-delta,
rotary-delta, Scorbot, tripod, SCARA, PUMA, generic serial, generic hexapod,
and pentapod models.
`linuxcnc_5axis_remap_asset_probe` pins the LinuxCNC sample-machine assets
that define five-axis switchkins `M428`, `M429`, and `M430`: bridge-mill,
dual-rotary, and table-rotary-tilting INI files, `remap_subs/*.ngc`, HAL
switchkins links, tool tables, and demo programs. It verifies that these
commands remain LinuxCNC `REMAP` entries backed by LinuxCNC NGC subroutines
using `M68`, `M66`, and `_hal[motion.switchkins-type]`; it does not implement
the remap execution path.

View File

@@ -783,6 +783,30 @@ Steps:
- planner outputs
- forward/inverse kinematics
- 5-axis world/joint transforms
- LinuxCNC five-axis `M428`/`M429`/`M430` remap assets and switchkins
machine configuration links
Current five-axis switchkins status:
1. Vendored LinuxCNC `5axiskins`, `xyzac-trt-kins`, and `xyzbc-trt-kins`
sources are compiled and probed natively.
2. Vendored LinuxCNC sample machine assets now cover bridge-mill,
table-dual-rotary, and table-rotary-tilting INI/HAL/tool/demo/remap
files.
3. `M428`, `M429`, and `M430` remain LinuxCNC `REMAP` entries backed by
vendored LinuxCNC NGC subroutines; do not replace them with standalone
M-code handlers.
Next work:
1. Route vendored LinuxCNC remap lookup/execution through the standalone
interpreter harness for NGC remaps.
2. Connect the standalone HAL adapter so LinuxCNC `M68`/`M66` remap
synchronization updates and reads `_hal[motion.switchkins-type]`.
3. Add a native machine-session harness for `xyzac-trt` and `xyzbc-trt`
programs that switch `M429 -> M428 -> M429`.
4. Export the validated switchkins/remap status through the WASM SDK and INI
panel without adding JavaScript CNC semantics.
Involved LinuxCNC source:
@@ -796,6 +820,9 @@ Involved LinuxCNC source:
- `src/hal/components/xyzab_tdr_kins.comp`
- `src/hal/components/xyzacb_trsrn.comp`
- `src/hal/components/xyzbca_trsrn.comp`
- `configs/sim/axis/vismach/5axis/bridgemill/*`
- `configs/sim/axis/vismach/5axis/table-dual-rotary/*`
- `configs/sim/axis/vismach/5axis/table-rotary-tilting/*`
## Phase 10: Build the Standalone WASM Program

View File

@@ -70,5 +70,7 @@ The native baseline compares those negative fixtures with upstream
Machine baseline is still limited to standalone interpreter, trajectory
planner, LinuxCNC identity/trivial kinematics, LinuxCNC `5axiskins` XYZBCW
bridge-mill probing, and LinuxCNC TRT `xyzac`/`xyzbc` probing. Additional
non-trivial kinematics and fuller machine baselines remain future work.
bridge-mill probing, LinuxCNC TRT `xyzac`/`xyzbc` probing, and vendored
LinuxCNC five-axis sample machine assets for `M428`, `M429`, and `M430`
switchkins remaps. Full standalone execution of those remaps still needs the
LinuxCNC remap runtime and HAL synchronization boundary connected.

View File

@@ -40,6 +40,7 @@ Current validation is intentionally mechanical:
| Identity/trivial kinematics | `src/emc/kinematics/kinematics.h`, `cubic.h`, `kins_util.c`, `trivkins.c` | Copy unchanged | HAL component lifecycle and RTAPI module metadata are replaced by standalone shims; forward/inverse mapping behavior remains LinuxCNC source | Vendor byte sync, per-file source probes, `linuxcnc_kinematics_probe` |
| Switchable 5-axis bridge kinematics | `src/emc/kinematics/5axiskins.c`, `switchkins.c`, `switchkins.h`, `userkfuncs.c`, plus `src/rtapi/rtapi_ctype.h` | Copy unchanged | HAL pin allocation, HAL component lifecycle, and RTAPI module metadata are standalone runtime edges; switchable 5-axis forward/inverse behavior remains LinuxCNC source | Vendor byte sync, per-file source probes, `linuxcnc_5axis_kinematics_probe` |
| TRT table-rotary kinematics | `src/emc/kinematics/trtfuncs.c`, `xyzac-trt-kins.c`, `xyzbc-trt-kins.c` | Copy unchanged | HAL pin allocation and switchkins lifecycle stay runtime boundaries; XYZAC/XYZBC TRT forward/inverse behavior remains LinuxCNC source | Vendor byte sync, per-file source probes, `linuxcnc_xyzac_trt_kinematics_probe`, `linuxcnc_xyzbc_trt_kinematics_probe` |
| Five-axis switchkins machine configs and M428/M429/M430 remaps | `configs/sim/axis/vismach/5axis/bridgemill/*`, `table-dual-rotary/*`, and `table-rotary-tilting/*` selected INI, HAL, tool-table, XML, demo, and `remap_subs/*.ngc` files | Copy unchanged | `M428`, `M429`, and `M430` remain LinuxCNC `REMAP` entries that call LinuxCNC NGC subroutines using `M68`, `M66`, `_hal[motion.switchkins-type]`, and the INI/HAL `motion.analog-out-03 => motion.switchkins-type` link; standalone execution of these remaps still requires the interpreter remap runtime and HAL synchronization edge to be connected | Vendor byte sync, `linuxcnc_5axis_remap_asset_probe`, browser INI panel sample loaded from vendored `xyzab-tdr.ini` |
| Additional non-switchable kinematics | `src/emc/kinematics/corexykins.c`, `rotatekins.c`, `rosekins.c`, `maxkins.c`, `lineardeltakins.c`, `lineardeltakins-common.h`, `rotarydeltakins.c`, `rotarydeltakins-common.h`, `scorbot-kins.c`, `tripodkins.c`, `scarakins.c`, `pumakins.c`, `pumakins.h`, `genhexkins.c`, `genhexkins.h`, `genserfuncs.c`, `genserkins.c`, `genserkins.h`, `ugenserkins.c`, `pentakins.c`, `pentakins.h`, `cubic.c` | Copy unchanged | HAL pin allocation, HAL parameter allocation, HAL component lifecycle, RTAPI module metadata, Go math C/C++ linkage, switchkins iterative-forward warmup, and userspace test-program process entry remain standalone runtime edges; forward/inverse behavior remains LinuxCNC source where the module exposes it | Vendor byte sync, per-file source probes, `linuxcnc_corexy_kinematics_probe`, `linuxcnc_rotate_kinematics_probe`, `linuxcnc_rose_kinematics_probe`, `linuxcnc_max_kinematics_probe`, `linuxcnc_lineardelta_kinematics_probe`, `linuxcnc_rotarydelta_kinematics_probe`, `linuxcnc_scorbot_kinematics_probe`, `linuxcnc_tripod_kinematics_probe`, `linuxcnc_scara_kinematics_probe`, `linuxcnc_puma_kinematics_probe`, `linuxcnc_genser_kinematics_probe`, `linuxcnc_genhex_kinematics_probe`, `linuxcnc_pentakins_kinematics_probe` |
| Trajectory planner | `src/emc/tp/tp.c`, `tc.c`, `tcq.c`, `spherical_arc.c`, `blendmath.c`, `sp_scurve.c`, `ruckig_wrapper.c`, plus matching `*.h` files | Copy unchanged | Native realtime scheduling and motion process state are replaced by standalone probe setup; the WASM TP probe uses the same deterministic status/config boundary and calls vendored TP APIs through a narrow C ABI | Vendor byte sync, per-file source probes, `linuxcnc_tp_api_probe`, `tests/wasm/node/verify_tp_wasm.sh` |
| Ruckig C planner support | Selected `src/emc/tp/cruckig/*.c` and `*.h` files in the manifest | Copy unchanged | Used as LinuxCNC planner support code through vendored TP sources | Vendor byte sync, per-file source probes, `tests/wasm/node/verify_tp_wasm.sh` |
@@ -58,7 +59,7 @@ Current validation is intentionally mechanical:
| RTAPI | `rtapi_*.h`, TP, posemath, motion headers | Minimal standalone shim in `runtime/core/shims/rtapi.h` |
| NML transport | `emc.hh`, motion/NML type headers | Transport is not ported; only the status/type edges needed by vendored compute code are exposed through standalone shims and probes |
| HAL runtime | named parameter lookup, kinematics component lifecycle, and runtime status edges | Standalone HAL adapter under `runtime/core/linuxcnc_wrap/` |
| Python/remap | `rs274ngc_pre.cc`, `interp_o_word.cc`, remap hooks | Stubbed at runtime boundary; no Python CNC semantics are reimplemented |
| Python/remap | `rs274ngc_pre.cc`, `interp_o_word.cc`, remap hooks, selected LinuxCNC `configs/sim/axis/vismach/5axis/*/remap_subs/*.ngc` files | Stubbed at runtime boundary today; five-axis M428/M429/M430 source assets are vendored unchanged, and the next runtime step is to route LinuxCNC NGC remap execution plus HAL pin synchronization through standalone adapters without reimplementing the remap semantics |
| Canonical machine actions | `interp_convert.cc`, `interp_execute.cc`, `interp_queue.cc` | Captured by standalone canonical event sink functions for regression fixtures |
| Realtime scheduling | TP and motion headers | Not ported; native TP probes seed deterministic status/config state |
| GUI | None used as implementation | Native LinuxCNC GUI remains reference-only |
@@ -69,6 +70,11 @@ Current validation is intentionally mechanical:
source-probe level. Serial `genserkins`, hexapod `genhexkins`, and pentapod
`pentakins` have native runtime baselines; full runtime machine baselines for
userspace genser flows are not yet established.
- Five-axis M428/M429/M430 source assets are now vendored for bridge-mill,
dual-rotary, and table-rotary-tilting LinuxCNC sample machines. Full
standalone execution still needs LinuxCNC remap dispatch, the `M68`/`M66`
synchronization path, and `_hal[motion.switchkins-type]` readback connected
through the standalone HAL boundary.
- Cutter compensation positive motion and negative interpreter paths are
fixture-covered through vendored `interp_convert.cc` and `interp_queue.cc`.
- Browser/WASM C ABI and JS SDK layers are now present for the INI parser, the