Unblock native XYZAC TP oracle

This commit is contained in:
2026-08-31 20:08:00 +08:00
parent 18436149a2
commit 6015293ee9
17 changed files with 49339 additions and 61 deletions

View File

@@ -1,6 +1,13 @@
# XYZAC TRT 完整 TP/前瞻数值对标任务轨道
状态:`TP-PARITY-00` 已建立,完整 LinuxCNC 数值对标尚未完成。
状态:`TP-PARITY-00` 已 verified,完整 LinuxCNC 数值对标尚未完成。
当前 oracle 证据:`coverage/xyzac-native-tick-trace.report.json` 已由源
`run-5axis-rtcp.sh` 产生连续 task-heartbeat tick;源 Python NML 扩展暴露
`task_heartbeat`,并记录 XYZAC pose/joints、queue、current-line、速度和加速度。
`scripts/compare_xyzac_native_wasm_tick_trace.py` 已接入同一 case 的 WASM trace,
当前首个差异保留为 `$.rows[1].exec_state`,因此不得把 TP-PARITY-01..08 写成
数值 parity verified。
目标不是证明页面能绘制一条曲线,而是对同一 `xyzac-trt.ini`、同一 G-code、同一初始状态,比较 native LinuxCNC 与 WASM Worker 的每个运动 tick:
@@ -44,6 +51,9 @@ Web 端只有在该链路和 native trace 逐字段一致后,才能声明 `PAR
### TP-PARITY-01:锁定 LinuxCNC TP 数据模型和 C ABI
状态:`in_progress`。native tick oracle 已可用;当前 comparator 显示现有
WASM queue 与源 TP 的执行顺序/速度尚未一致。
来源:`linuxcnc/src/emc/tp/{tp.c,tp.h,tp_types.h,tc.c,tcq.c,tc_types.h,blendmath.c,blendmath.h,spherical_arc.c}`。
工作:
@@ -56,6 +66,9 @@ Web 端只有在该链路和 native trace 逐字段一致后,才能声明 `PAR
### TP-PARITY-02:G64/G61/G61.1 完整路径控制
状态:`in_progress`,WASM interpreter 侧已闭合指令模式和容差状态,numeric
blend 仍待 TP port 和 comparator 通过。
来源:
- `linuxcnc/src/emc/rs274ngc/interp_convert.cc` 的 G64/G61 处理
@@ -68,6 +81,11 @@ Web 端只有在该链路和 native trace 逐字段一致后,才能声明 `PAR
- 保存 modal 状态、每个 canonical motion 的 termination condition 和 tolerance。
- 增加直线-直线、直线-圆弧、圆弧-直线、圆弧-圆弧、急转角、短段、零容差和非法 P/Q 样本。
当前 WASM C interpreter 已输出三种模式及 P/Q 容差到 `sim_program.v1`,Worker
在入队前应用对应 queue profile;LinuxCNC exact-path 与 exact-stop 的细微
差别、P/Q 驱动的 corner blend 仍由 TP-PARITY-03/06 的 native tick comparator
验证,尚未标记完成。
退出条件:native/WASM 每条 TC 的 termination mode、tolerance、blend point、速度和完成 tick 一致。
### TP-PARITY-03:Lookahead、corner blending、acceleration/jerk
@@ -144,6 +162,12 @@ state_hash
- 浮点使用固定绝对/相对容差,并记录原始值和差异值。
- 列表长度、字段缺失、状态顺序不允许静默忽略。
- 保存 `first_divergent_tick`、`difference_path`、native/WASM 两侧样本。
已提供可重复入口:
- `scripts/run_xyzac_wasm_tick_trace.mjs`
- `scripts/compare_xyzac_native_wasm_tick_trace.py`
- `coverage/xyzac-native-wasm-tick-parity.report.json`
- 最终坐标相同但中间 tick 不同必须判定为 `diverged`。
### TP-PARITY-07:预览和实际执行一致性