完成 xyzbc-trt working 任务复核
This commit is contained in:
@@ -141,7 +141,7 @@ Web 端机床模型采用 XYZBC table rotary/tilting 结构。X 对应 table-x
|
||||
|
||||
5.4 路径采样和 JSON 比对
|
||||
|
||||
曲线采样周期固定为 samplePeriodMs = 20,即 50 Hz。LinuxCNC 真实系统和 Web 仿真系统必须使用相同采样周期、相同 sampleIndex、相同时间基准和相同坐标字段,禁止一端 10 ms、另一端 20 ms 或使用不同插补点。
|
||||
曲线采样周期按当前要求暂定为 samplePeriodMs = 50,即 20 Hz。LinuxCNC 真实系统和 Web 仿真系统必须使用相同采样周期、相同 sampleIndex、相同时间基准和相同坐标字段,禁止两侧使用不同采样周期或不同插补点。
|
||||
|
||||

|
||||
|
||||
@@ -149,7 +149,7 @@ Web 端机床模型采用 XYZBC table rotary/tilting 结构。X 对应 table-x
|
||||
|
||||
5.5 Evidence JSON 字段规范
|
||||
|
||||
| { "schema": "xyzbc-trt-evidence/v1", "source": "linuxcnc-native / web-sim", "samplePeriodMs": 20, "linuxcncRoot": "/home/mes123456/cnc_wams/linuxcnc", "ini": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", "program": "./demos/xyzbc_switchkins.ngc", "runtime": {"taskState": 1, "interpState": 1, "axisMask": 55, "kinstype": 0}, "halPins": { "motion.switchkins-type": 0, "xyzbc-trt-kins.x-offset": -20, "xyzbc-trt-kins.z-offset": -15, "xyzbc-trt-kins.conventional-directions": false }, "previewPath": { "coordinateSystem": "XYZBC", "samples": [{ "sampleIndex": 0, "timeMs": 0, "line": 1, "joint": {"x": 0, "y": 0, "z": 0, "b": 0, "c": 0}, "world": {"x": 0, "y": 0, "z": 0, "b": 0, "c": 0}, "toolTip": {"x": 0, "y": 0, "z": 0}, "toolAxis": {"i": 0, "j": 0, "k": 1}, "kinstype": 0 }] }, "executionPath": {"samples": []}, "screenshots": []} |
|
||||
| { "schema": "xyzbc-trt-evidence/v1", "source": "linuxcnc-native / web-sim", "samplePeriodMs": 50, "linuxcncRoot": "/home/mes123456/cnc_wams/linuxcnc", "ini": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", "program": "./demos/xyzbc_switchkins.ngc", "runtime": {"taskState": 1, "interpState": 1, "axisMask": 55, "kinstype": 0}, "halPins": { "motion.switchkins-type": 0, "xyzbc-trt-kins.x-offset": -20, "xyzbc-trt-kins.z-offset": -15, "xyzbc-trt-kins.conventional-directions": false }, "previewPath": { "coordinateSystem": "XYZBC", "samples": [{ "sampleIndex": 0, "timeMs": 0, "line": 1, "joint": {"x": 0, "y": 0, "z": 0, "b": 0, "c": 0}, "world": {"x": 0, "y": 0, "z": 0, "b": 0, "c": 0}, "toolTip": {"x": 0, "y": 0, "z": 0}, "toolAxis": {"i": 0, "j": 0, "k": 1}, "kinstype": 0 }] }, "executionPath": {"samples": []}, "screenshots": []} |
|
||||
| --- |
|
||||
|
||||
5.6 对比报告字段
|
||||
@@ -174,7 +174,7 @@ Web 端机床模型采用 XYZBC table rotary/tilting 结构。X 对应 table-x
|
||||
| 阶段 3 | 实现 HAL 总线、halui、switchkins 状态机和 remap 命令链路。 | HAL 状态面板、MDI 命令记录。 | 按钮触发 M429/M428/M430 后状态一致。 |
|
||||
| 阶段 4 | 实现 XYZBC 运动学和 Three.js Vismach 等价模型。 | 五轴机床模型、刀具和工件。 | X/Y/Z/B/C 点动与 HAL pin 一致。 |
|
||||
| 阶段 5 | 实现 G-code 预览路径、执行路径、暂停/复位/单步。 | 预览轨迹、执行轨迹、状态机。 | 默认程序 xyzbc_switchkins.ngc 可回放。 |
|
||||
| 阶段 6 | 实现 native 和 web evidence JSON,固定 20 ms 采样周期。 | native-evidence.json、web-evidence.json。 | 字段、单位、sampleIndex 对齐。 |
|
||||
| 阶段 6 | 实现 native 和 web evidence JSON,暂定固定 50 ms 采样周期。 | native-evidence.json、web-evidence.json。 | 字段、单位、sampleIndex 对齐。 |
|
||||
| 阶段 7 | 实现 compare-report 自动生成。 | compare-report.json、HTML 报告。 | 误差统计和首个差异点可追溯。 |
|
||||
|
||||
## 7. 验收标准
|
||||
@@ -185,7 +185,7 @@ Web 端机床模型采用 XYZBC table rotary/tilting 结构。X 对应 table-x
|
||||
| 界面标准 | Web 首屏包含 AXIS 主要工作区、PyVCP SWITCHKINS 面板、预览区、DRO、程序区和状态栏。 |
|
||||
| 功能标准 | 默认加载 xyzbc_switchkins.ngc,支持 MDI、模式切换、清轨迹、点动、倍率、刀具和参数。 |
|
||||
| 运动学标准 | identity、XYZBC TCP、userk 模式状态和轨迹计算与真实系统一致。 |
|
||||
| JSON 标准 | 预览路径和执行路径同时导出,采样周期统一为 20 ms,字段一致。 |
|
||||
| JSON 标准 | 预览路径和执行路径同时导出,采样周期统一为 50 ms,字段一致。 |
|
||||
| 比对标准 | 能输出最大误差、RMS 误差、首个差异点、截图和通过/失败结论。 |
|
||||
| 证据标准 | 每次验收保存 LinuxCNC 原始截图、Web 截图、native JSON、web JSON、compare report。 |
|
||||
|
||||
@@ -194,7 +194,7 @@ Web 端机床模型采用 XYZBC table rotary/tilting 结构。X 对应 table-x
|
||||
| 风险 | 影响 | 控制措施 |
|
||||
| --- | --- | --- |
|
||||
| LinuxCNC 内部解释器和 Web 解释器细节不一致 | 路径点或模式切换时序不同。 | 优先移植或复用 LinuxCNC 解析/运动学逻辑,保留 native evidence 作为回归基准。 |
|
||||
| 采样周期不一致 | 曲线无法逐点比较。 | 强制配置 samplePeriodMs=20,JSON schema 校验不允许缺省。 |
|
||||
| 采样周期不一致 | 曲线无法逐点比较。 | 强制配置 samplePeriodMs=50,JSON schema 校验不允许缺省。 |
|
||||
| Three.js 模型和 Vismach 结构偏差 | 视觉对标通过但运动不一致。 | 每个关节都绑定 HAL pin,模型矩阵由运动学输出驱动。 |
|
||||
| UI 直接改状态绕过 HAL | 无法对标真实控制链路。 | PyVCP 控件只发 HAL/MDI 事件,状态由 HAL pin 回读。 |
|
||||
| 路径或旧目录混入 | 证据不可复现。 | 文档和脚本统一扫描旧路径,禁止使用 历史旧 LinuxCNC 目录。 |
|
||||
@@ -288,7 +288,7 @@ xyzbc-trt-gui.py 则把 Vismach 模型拆成可响应的 HAL 变换链:tool-of
|
||||
| 预览 | 读取 xyzbc_switchkins.ngc,在预览区生成 G-code 轨迹和位置采样。 | 得到 previewPath JSON。 |
|
||||
| 切换 | 通过 M428/M429/M430 或等价按钮改变 switchkins 模式,并执行同步命令。 | 运动学和解释器状态对齐。 |
|
||||
| 执行 | 根据当前模式执行程序,同时刷新关节反馈和 TCP 位姿。 | 得到 executionPath JSON。 |
|
||||
| 比对 | 用固定 20 ms 采样周期对比预览和执行曲线。 | 输出 compare-report.json。 |
|
||||
| 比对 | 用固定 50 ms 采样周期对比预览和执行曲线。 | 输出 compare-report.json。 |
|
||||
|
||||
同步逻辑是这个程序最容易被误解的地方:切换模式不是单独改一个 pin 就结束了,必须让解释器和 motion 同步,否则 G-code 看到的坐标语义和 motion 看到的坐标语义会不同。这个要求在文档中已经被固化为“预览路径和执行路径统一采样周期,并在切换时强制同步”。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user