Preserve RTCP compensation across rotary jog stops

This commit is contained in:
2026-09-18 06:10:53 +08:00
parent e4600b34e3
commit 6a69511276
14 changed files with 4530 additions and 7 deletions

View File

@@ -1,5 +1,30 @@
# 推进台账
## R05 / 2026-09-18 / 仓库保存
- 用户授权:保存到 `https://gitea.meswork.com/wangdequan/linuxcncWebWASM.git` 的 `main` 分支。
- 保存内容:TRT-UI01 黄色预览路径、TRT-JOG01 M428 Jog 模式保持修复、对应测试、文档、报告和截图。
- 检查:已获取远程 main;提交前差异格式检查通过。功能验证沿用 E05/E06,本轮没有新增功能修改。
- 原有大体积 tick trace、linuxcnc 子模块本地改动、临时脚本和用户图片保留在本地。
- 推送完成以远程 main 与本地 HEAD 的提交 ID 一致为准;下一开发任务仍为 TRT-R01。
## R04 / 2026-09-17 / M428 旋转轴 Jog 刀尖跟随
- 用户问题:选中 M428 后 Jog 调整 A/C,机床预览没有持续体现刀尖跟随。
- 根因:`WasmLinuxcncTp.abort()` 在 JOG_STOP 时把 `activeTag` 清零,而 switchkins 仍保持 M428。首轮 Jog 有补偿,松开时关节解跳回 identity,后续 Jog 丢失补偿。另有 Jog ID 与历史程序行 ID 复用的模式映射风险。
- 改动:`web/worker/wasm-linuxcnc-tp.mjs` 停止只清理队列映射,保留当前坐标系;成功加入 Jog 时记录该段的当前模式,覆盖历史同 ID 条目。正逆解继续使用 WASM,无 Three.js/JS 补偿公式。
- 测试:新增 `web/react/src/test_trt_rtcp_jog.mjs`、`scripts/test_trt_rtcp_jog_browser.mjs`;更新 `test_xyzac_runtime_followups.mjs` 等待真实 homing 完成后再测试运行/关机。
- 验证:修复前专项在 `a-released` 明确失败(mode 0 != 1);修复后两机型均通过。检查连续/增量/反向/重复 Jog、松开无跳变、无效输入、重复停止、程序停止和关机保持、M429 对照及同 ID 段复用。浏览器真实按钮操作 A-C-A-C、B-C-B-C 均通过,快照与实际渲染刀尖一致。详见 E06。
- 产物:`coverage/trt-parametric/rtcp-jog.report.json`、`rtcp-jog-browser.report.json`、两机型截图。
- 下一步:TRT-R01;本轮未扩展到既有 checkpoint 全状态精度修复。
## R03 / 2026-09-17 / 机床预览路径颜色
- 用户要求:Preview 中工作台上的白色刀具预览路径改为黄色。
- 改动:`web/react/src/XyzacMachineView.tsx` 的普通预览路径材质由 `0xdce7e8` 改为 `0xffff00`,两种 TRT 机型共用。
- 验证:E05;对应任务 TRT-UI01。
- 下一步:仍按 TRT-R01 接续。
## R02 / 2026-09-17 / 仓库保存
- 用户授权:将本轮成果保存到 `https://gitea.meswork.com/wangdequan/linuxcncWebWASM.git`。

View File

@@ -11,3 +11,5 @@
| TRT-P05 | 参数编辑及文件流程 | P03,P04 | 已验收 | 分组布局、应用/重新读取/导入/保存、保留程序、错误反馈 | E03 |
| TRT-P06 | 回归及证据收口 | P03,P04,P05 | 已验收 | 专项、相关回归、构建、桌面/移动交互截图和像素检查通过;既有恢复偏差独立登记 | E02,E03,E04 |
| TRT-R01 | 既有 checkpoint 恢复状态精度 | P06 | 待办 | 定位 HAL tick 与 TP queue/progress 恢复差异;将恢复测试的相等性变为有效断言,再验证固定 tick 连续与恢复轨迹 | E04:遗留项 |
| TRT-UI01 | 机床预览路径改为黄色 | P04 | 已验收 | 工作台普通刀具预览路径使用黄色材质 | E05 |
| TRT-JOG01 | M428 旋转轴 Jog 刀尖跟随 | P03,P04 | 已验收 | A/B/C 连续和增量 Jog 使用 RTCP 补偿;松开、重复 Jog 不丢失模式;WASM 与机床模型刀尖位置一致;M429 对照 | E06 |

View File

@@ -56,3 +56,22 @@ PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwrigh
| `node web/worker/test_xyzac_recovery.mjs` | 退出 0,但其内部输出恢复前后 HAL tick / TP progress / queue 状态不同,`endpoint_at_checkpoint_equal=false`;登记 TRT-R01,不能声称恢复完全等价 |
本次未重跑全仓历史发布 gate、全部浏览器矩阵或官方 native 对照。专项测试验证浏览器仿真,不是实际机床控制验收。
## E05 机床预览路径颜色
- 材质检查:`XyzacMachineView.tsx` 普通预览路径使用 `0xffff00`(黄色)。
- 命令:`node web/react/src/test_xyzac_threejs.mjs`、`npm --prefix web/react run typecheck`。
- 结果:模型回归及 TypeScript 检查通过。
## E06 M428 Jog RTCP 修复
- 修复前:`node web/react/src/test_trt_rtcp_jog.mjs` 在 A 连续 Jog 松开时报 `a-released: RTCP motion mode must remain active`,实际模式 0、期望 1。
- 修复后同命令通过;[WASM 测试报告](../../coverage/trt-parametric/rtcp-jog.report.json),report_id=`trt-rtcp-jog-v1`。
- 两机型各 77 个检查点,使用非零 INI 旋转中心。覆盖 A/B/C 连续、负方向增量、重复 Jog、停止、非法值/越界拒绝、PROGRAM_ABORT、关机保持及 M429 不补偿对照;另验证历史程序行 ID 与 Jog ID 复用不污染运动学模式。
- 编程 TCP 的 XYZ 不变,机器 XYZ 关节随角度改变;模型上同一编程点与刀尖的最大距离:XYZAC `4.48e-16`、XYZBC `4.45e-16` 场景单位。停止前后关节无跳变,motion_trace 和完整面板快照都检查。
- 浏览器命令:`PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_rtcp_jog_browser.mjs`。
- 页面 `http://127.0.0.1:5174/`,实际操作开机、回零、X/Y 离开旋转中心、选择 M428、连续按住/松开 A-C-A-C 与 B-C-B-C;两个机型均保持 XYZ 补偿,渲染刀尖与 Worker 关节一致,pageerror 为零。
- [浏览器报告](../../coverage/trt-parametric/rtcp-jog-browser.report.json),report_id=`trt-rtcp-jog-browser-v1`;截图:[XYZAC](../../coverage/trt-parametric/rtcp-jog-xyzac.png)、[XYZBC](../../coverage/trt-parametric/rtcp-jog-xyzbc.png)。
- 回归通过:`node web/react/src/test_trt_parametric.mjs`、`node web/worker/test_xyzac_trt_case.mjs`、`node web/worker/test_xyzac_program_replace.mjs`、`node web/worker/test_xyzac_runtime_followups.mjs`、`node web/worker/test_boat_trt_programs.mjs`、`npm --prefix web/react run build`。构建保留既有大 chunk 提示。
- `runtime_followups` 初次失败因未等待 HOME 完成便启动程序;现等待 WASM homed,并断言 PROGRAM_LOAD/RUN 成功后再验收。
- job_id / PDF:不适用;使用原有 WASM,无核心 ABI 变更。本轮不声称修复 TRT-R01。

View File

@@ -31,3 +31,9 @@ XYZAC 不支持 x-offset,XYZBC 不支持 y-offset。六项都可见,但不
## D08 / 2026-09-17 / 异步界面状态
机型选择在 Worker 成功载入后提交;重新读取期间锁定主界面加载动作。参数应用成功但当前程序解析失败时,保留已生效参数并显示程序解析错误,旧路径已清理;不声称整笔操作回滚成功。
## D09 / 2026-09-17 / Jog 停止保持坐标系
JOG_STOP/abort 停止运动不能隐式执行 M429。保留停止姿态对应的运动学模式,只清理待执行段和历史 ID 映射;重新初始化使用原有 reset 路径。Jog 的 native tag 是段 ID,与运动学模式不同,必须关联本段入队时的当前模式,不能沿用同编号的历史程序行。
RTCP 的判据为:旋转 Jog 时刀尖在工件坐标中的 XYZ 不变,机器 XYZ 按 WASM 逆解联动;Three.js 用相同关节投影。若刀尖恰好在 C 旋转轴上,单独转 C 可没有 XYZ 位移,这属于正确几何行为;验收特意先移动 X/Y 离开旋转中心。

View File

@@ -11,7 +11,7 @@
每轮必须记录实际改动、命令、结果和下一任务。未运行的检查不能记为通过;历史通过任务仅在相关代码改变时回归。此目录是本专项接续入口,历史仿真/发布轨道仍保留原有指针,不据此扩大发布范围。
当前状态:`TRT-P01` 至 `TRT-P06` 已验收。下一项为矩阵中的 `TRT-R01`,属于既有恢复精度问题,不影响本专项参数应用流程。实现不依赖聊天记录。用户文字提及 Image #1,但本轮未收到可读取的图片资源,布局按现有结构预览实现。
当前状态:`TRT-P01` 至 `TRT-P06`、`TRT-UI01`、`TRT-JOG01` 已验收。最新修复为 M428 下停止 Jog 后保留 RTCP,避免随后 A/B/C Jog 丢失 XYZ 补偿。下一项为矩阵中的 `TRT-R01`,属于既有恢复精度问题,不影响本专项参数应用流程。实现不依赖聊天记录。用户文字提及 Image #1,但本轮未收到可读取的图片资源,布局按现有结构预览实现。
本地体验地址:`http://127.0.0.1:5174/`。启动命令:`npm --prefix web/react run dev -- --port 5174 --strictPort`;该端口被占用时选择其他端口。