23 KiB
23 KiB
验收证据
E13 / 工件坐标与G代码初学者完整讲义
- 完整PDF:72页A4,约2.1MB,中文可选择/搜索,含可点击目录及书签;原31页课件保留。
- 内容/命令索引、逐页目录、编辑源稿。
- 数值证据,report_id=
rtcp-beginners-gcode-v1:11主段+11附加段;程序W→偏置K→BC逆解关节值;单位、G54/G55、L20、模式切换;完整N10–N90程序通过实际Session/解释器/TP,状态completed、53个样本、终点(-18.480762,40,27.990381,30,90)。 - 版面报告:72页无越界/缺图;新增图形无缺字警告。独立PDF渲染总览:1–24页、25–48页、49–72页。
- PDF汇总,report_id=
rtcp-beginners-pdf-v1:严格匹配72页标题与提取文字、A4页尺寸、字体自包含、书签、PDF/HTML/数值/图形/字体/渲染总览SHA。 - 生成命令在教材README;主要为
generate_rtcp_beginner_data.mjs、generate_rtcp_beginner_figures.py、generate_rtcp_beginner_html.py、subset_rtcp_beginner_fonts.py、render_rtcp_beginner_pdf.mjs、verify_rtcp_beginner_pdf.py。Matplotlib/PyPDF/fontTools来自临时目录,未增加应用依赖。pdfinfo确认72页,pdftoppm独立渲染全部页且非空。 - 本轮只产出教学资料,无应用功能改动、无远程job_id。官方资料链接列在PDF末页,通用功能与Web切片实测范围分开说明。
E12 / 五轴与 RTCP 教学课件
- PDF成品:31页,16:9,约1.9MB,中文可选择,字体嵌入,39个目录书签。
- 编辑源稿及复现命令、各页目录、原生数值。
- 排版检查:31页无图文越界/缺图/页面错误。独立PDF渲染总览:Poppler渲染实际PDF,不仅检查HTML截图。
- 汇总,report_id=
rtcp-teaching-pdf-v1,包含PDF/源稿/数据/图像SHA,逐页尺寸和文本量、字体、书签及WASM指纹。主数值例子12个姿态正逆解回代通过。 - 主要命令:
node scripts/generate_rtcp_teaching_data.mjs;PYTHONPATH=/tmp/rtcp-course-deps python3 scripts/generate_rtcp_teaching_figures.py;python3 scripts/generate_rtcp_teaching_html.py;带PLAYWRIGHT_MODULE运行render_rtcp_teaching_pdf.mjs;带PYTHONPATH运行verify_rtcp_teaching_pdf.py。PDF还经pdfinfo/pdffonts与pdftoppm核验。 - 查阅官方5-axis-kinematics/switchkins/machining-center文档及本地原生源码,正文脚注与末页列出来源。示意图原创,机床资产沿用项目原创GLB;无远程job_id,无新增应用依赖。
E11 / Jog 限位和序列恢复、阴影警告
node web/worker/test_jog_limit_recovery.mjs
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_jog_limit_browser.mjs
TRT_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/jog-limits node web/worker/test_trt_checkpoint_exact.mjs
GLB_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/jog-limits PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_motion.mjs
node web/worker/test_sim_scheduler.mjs
node web/worker/test_sim_session.mjs
node web/worker/test_replay.mjs
node web/worker/test_xyzac_step_flow.mjs
node web/worker/test_xyzac_recovery.mjs
node web/react/src/test_store_visual_clear.mjs
npm --prefix web/react run build
python3 scripts/generate_jog_limit_acceptance.py
- Worker 专项,report_id=
jog-limit-recovery-v1,两机型直接轴到50°停止并退回49°;RTCP转C触发Y关节边界,在Y=99.952445mm有效样本停止,队列为空/速度零;反向退出、JOG_STOP、快照和checkpoint恢复通过。失败时只完成请求5个tick中的1个,事件、native游标、任务与scheduler一致;非法cycles后仍可继续。 - 浏览器专项,report_id=
jog-limit-browser-v1:AC/BC真实按钮按住→到限位→松开→反向→多次Jog全部通过,画面恢复运动且WebGL像素非空,无sequence_gap、无pageerror。AC恢复画面、BC恢复画面。 - 精确恢复:120个续跑状态hash完全一致,12个恢复后Jog样本、trace/new-session/幂等测试通过。五轴程序两机型均通过。基础scheduler新增部分失败后下一个tick断言,session/replay、单步、旧checkpoint恢复和store保留预览测试均通过。
- 阴影警告报告:原模型和导入BC均加载,Chrome console warnings=[],不再出现PCFSoftShadowMap弃用警告;截图。页面 http://127.0.0.1:5174/,Google Chrome / SwiftShader。
- HEAD复现日志保留RTCP越界时旧错误响应也因inverse_mode_-702失败。初始现有工作区复现直接B轴越界报forward_-702,随后采用直接轴限位交集修复。
- 额外运行的旧manual_control和button_constraints测试未通过,分别是同步回零假定、前置门控优先级差异;通过Node只读loader从git HEAD加载session/scheduler/tp模块,对比相同失败。日志
manual.log/manual-baseline.log、buttons.log/buttons-baseline.log位于本目录。它们不是本轮回归通过声明,不改生产门控迎合旧断言。 - 构建日志通过,已有大chunk提示;无C/WASM或上游修改。没有硬件减速/碰撞安全声明,RTCP限位为仿真在最后有效伺服样本停止。
- 汇总,report_id=
jog-limit-acceptance-v1,保留证据SHA和已知旧测试失败,无远程job_id。之前验收报告未覆盖。
E01 / 规范与源码核对 / 2026-09-18
- glTF 2.0: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html (extras、节点树、米、Y-up)。
- URDF: https://docs.ros.org/en/humble/Tutorials/URDF/Building-a-Movable-Robot-Model-with-URDF.html (joint parent/child/origin/axis、限位、弧度)。
- Three.js: https://threejs.org/docs/pages/GLTFLoader.html (GLB 解析);本地 GLTFLoader 源码核对 extras → userData。
- LinuxCNC: https://www.linuxcnc.org/docs/html/motion/5-axis-kinematics.html ;本地
linuxcnc/src/emc/kinematics/trtfuncs.c核对 AC/BC 旋转中心、轴间偏置和 tool-offset。 - 网络模型候选: https://www.cgtrader.com/3d-models/industrial/industrial-machine/5-axis-machine-194cb656-8e44-4695-81cd-7e2a951bd92d 、 https://www.turbosquid.com/3d-models/milling-machine-cnc-tool-3d-model-2148325 。仅检索到资源页,未下载/购买/确认内嵌 URDF 或再分发许可;不作为交付资产。
- 本轮采用自行程序化创建模型;不宣称网上现成模型已符合要求。
- job_id / PDF:不适用。新功能测试与截图待后续条目记录。
E02 / 严格解析与浏览器导入
命令(仓库根目录):
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_browser.mjs
- 页面:
http://127.0.0.1:5174/,真实 Google Chrome / Playwright / SwiftShader。 - 报告:
browser.report.json,report_id=glb-machine-browser-v1;日志browser.log。 - 两机型共 42 项错误输入/越界配置拒绝:损坏 GLB、外部资源、动画、环、错误父子关系、重复节点、节点位姿、XML、轴绑定/方向、rpy、NaN、mimic、不支持 profile、运行行程/速度。等价 glTF matrix 正常接受,错误矩阵拒绝。
- 两机型各 18 个真实 WASM 逆解样本:六种角度 × 刀长差 0/17/-4 mm;非零 rot-point/offset;刀尖和工件程序点误差小于 1e-8 显示单位。额外验证 XYZ 移动不带动摇篮。
- 文件导入、示例按钮、机型识别、参数进入 Worker、程序路径保持、下载哈希、错误导入不更改模型/配置、开机禁用导入、回零后四次 A/B-C Jog、INI 重读卸载模型均验证。
- Worker 测试故意篡改配置投影值为 999,再确认实际 INI 参数胜出。
- 截图:AC、BC、桌面、手机。真实 WebGL 颜色采样非空,控件无横向溢出,browser_errors=[]。
E03 / 原创模型、格式与可复现性
node scripts/generate_glb_machines.mjs
npm install --prefix /tmp/linuxcnc-glb-validation --no-package-lock --ignore-scripts gltf-validator@2.0.0-dev.3.10
GLTF_VALIDATOR_MODULE=/tmp/linuxcnc-glb-validation/node_modules/gltf-validator/index.js node scripts/validate_glb_machines.mjs
- 交付:
web/react/public/machines/demo-ac-xyz-head.glb、demo-bc-xyz-head.glb;各 71 个原创几何网格,八个结构 link,五个运动轴。 - Khronos glTF Validator 2.0.0-dev.3.10:两文件均 0 errors / 0 warnings;71 条信息为网格存在未用纹理坐标,不影响有效性。报告
gltf-validation.report.json,report_id=glb-machine-khronos-validation-v1。 manifest.json包含文件长度、SHA256、原生参数和来源;LICENSE.txt为原创模型 CC0-1.0 说明。- 实际重复运行生成脚本并逐文件 SHA256 比较,通过;生产构建 GLB 与源 GLB 字节相同。报告
reproducibility.report.json,report_id=glb-machine-reproducibility-v1。 - 标准验证器仅临时安装在 /tmp,未向项目新增依赖。
E04 / 真实解释器和规划器五轴联动
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_motion.mjs
- 报告
motion.report.json,report_id=glb-machine-five-axis-motion-v1;包含实际 G-code 和采样轨迹;日志motion.log。 - 两机型分别 LOAD_WORKSPACE、PROGRAM_LOAD、开机/回零、PROGRAM_RUN,通过真实 WASM 执行 M428 后同时改变 XYZ 与 A/B、C 的两段 G1,均正常完成。
- 每机型有 41 个五轴关节同时改变的采样间隔;42 个姿态投影采样。最大误差:AC
2.2591401799415137e-16,BC2.482534153247273e-16显示单位(当前 1 单位=100 mm)。 - 首次测试按每七个采样间隔抽样,程序较短导致样本数量不足;改为记录全部 RTCP 采样,保持原数量与误差强断言。
E05 / 原有功能回归与构建
TRT_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/regression-parametric PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_parametric_browser.mjs
TRT_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/regression-jog PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_rtcp_jog_browser.mjs
npm --prefix web/react run typecheck
npm --prefix web/react run build
- 原参数编辑/导入/保存/重新读取/门控/桌面手机交互回归通过;report_id=
trt-parametric-browser-v1,证据目录regression-parametric。 - 原内置 AC/BC 各四次 RTCP Jog 回归通过,report_id=
trt-rtcp-jog-browser-v1,证据rtcp-jog-browser.report.json。 - 类型检查及生产构建通过;
build.log。已有大 chunk 提示保留,不作为失败。 - 未改动 C/WASM,无需重建 native;未重跑全仓测试,未覆盖
coverage/trt-parametric/旧证据。 - job_id / PDF:本地执行,无远程 job,无 PDF;以日志、报告、截图及汇总哈希为证据。
E06 / 最终汇总
命令:python3 scripts/generate_glb_machine_acceptance.py;只汇集已执行证据,不重新跑测试。
acceptance.report.json 汇集实际报告状态、模型与 WASM SHA256、证据文件 SHA256。接续时先核对此文件,再按任务矩阵决定下一步;不要因历史台账中曾写“待办”而重复执行已验收任务。
E07 / 模型显示区域与可拖动对话框
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_machine_dialog_browser.mjs
TRT_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/dialogs/parametric PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_parametric_browser.mjs
GLB_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/dialogs/import PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_browser.mjs
npm --prefix web/react run build
- 页面
http://127.0.0.1:5174/;Chrome / Playwright / SwiftShader;本地执行,无远程 job_id。 - 专项报告,report_id=
machine-dialog-browser-v1,status=verified。桌面/手机画布高度 351.5 / 392.5 / 380 px,超过机床面板高度 85%,弹窗不改变 canvas 尺寸。 - 两弹窗验证:鼠标移动位移、四边限制、Tab 焦点循环、Esc 关闭/焦点返回、F2 不触发开机、草稿保留;触摸拖动和窗口缩小后不越界;开机编辑门控。
- 参数编辑回归 与 GLB 导入回归 均 verified,包含文件导入/下载、参数保存/重读、错误拒绝、两机型运动与手机交互;无页面错误。
- 构建日志:类型检查及生产构建通过,大 chunk 提示保留。
- 截图:宽屏机床区域、参数对话框、手机参数、拖动后的模型对话框。
- 本轮验收汇总,report_id=
glb-machine-dialog-acceptance-v1,列出实际证据 SHA256。之前 E02–E06 报告保留,本轮不重跑 native/五轴轨迹专项。
E08 / M429/M428 保持物理位置
node web/worker/test_trt_switch_stationary.mjs
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_switch_stationary_browser.mjs
node web/worker/test_xyzac_trt_case.mjs
node web/worker/test_xyzac_step_flow.mjs
node web/worker/test_xyzac_runtime_followups.mjs
TRT_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/switching/rtcp-jog PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_rtcp_jog_browser.mjs
npm --prefix web/react run build
- 修复前失败日志:
KINEMATICS_SELECT mode=1 J0: 47.97481463927447 != 0。 - Worker 报告:report_id=
trt-stationary-switch-worker-v1,64 次按钮/MDI/重复模式切换,两机型关节及可视投影在 1e-8 mm/deg 容差内保持;规划器/解释器同步,后续 3 个 idle tick、G54 偏置后的增量移动、忙碌/非法模式拒绝通过。 - 浏览器报告:report_id=
trt-stationary-switch-browser-v1,22 次切换,AC/BC GLB 实际渲染刀尖保持;最大关节误差约 1.50e-13、最大显示坐标误差约 1.45e-15;之后旋转 Jog XYZ 补偿仍有效。 - 截图:BC Identity、BC TCP、AC Identity、AC TCP。页面
http://127.0.0.1:5174/,Chrome / SwiftShader;browser_errors=[]。 - 原 TRT case(新增关节不变强断言)、单步、runtime followups、两机型 RTCP Jog、类型检查及生产构建通过;日志在同目录,大 chunk 提示保留。无 C 修改,无需 native 重建,不扩展为全仓 parity 验收。
- 本轮验收汇总,report_id=
trt-stationary-switch-acceptance-v1,包含 WASM 和所有证据 SHA256。无远程 job_id。
E09 / 修改几何参数保留 GLB
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_imported_geometry_browser.mjs
GLB_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/geometry-edit/import PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_browser.mjs
TRT_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/geometry-edit/parametric PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_parametric_browser.mjs
npm --prefix web/react run build
- 修复前失败:
applying geometry must retain imported GLB,源 hash 变为空。 - 新专项报告:report_id=
imported-geometry-browser-v1,AC/BC 均 verified。UI 应用、INI 保存→重读→导入→再应用、非法数值拒绝、开机不可编辑、显式跨机型卸载;原 GLB hash/文件名和程序路径保持。 - 每机型 18 个新几何姿态(6 个角度 × 0/17/-4 mm 刀长)与真实 WASM 逆解一致;源场景/原 XML 未修改、mesh 保留、自定义 joint 名支持、不匹配机型拒绝、相同参数复用。
- 实际浏览器 RTCP Jog 误差:AC
1.9778890766513102e-17、BC6.636893469679434e-17显示单位,模型计算与画面刀尖投影误差均为 0。 - 原 GLB 回归(含42项拒绝、36个姿态、8次Jog)和 内置参数编辑回归(含桌面手机、保存/导入/重读)通过。
- AC 修改后截图、BC 修改后截图;页面
http://127.0.0.1:5174/,Chrome / SwiftShader,无 pageerror。 - 构建日志:类型检查/生产构建通过,大 chunk 提示保留。无 C/WASM 修改,不重复 native 验收。
- 本轮汇总,report_id=
imported-geometry-acceptance-v1,包含所有证据及 WASM SHA256。E02/E07 中“INI 重读卸载模型”为历史验证,当前行为由 D11/E09 替代。无远程 job_id。
E10 / AC、BC 参数化桁架型
node scripts/generate_glb_machines.mjs
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_gantry_machine_browser.mjs
GLB_MACHINE_VARIANT=gantry GLB_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/gantry/geometry PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_imported_geometry_browser.mjs
GLB_MACHINE_VARIANT=gantry GLB_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/gantry PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_motion.mjs
GLB_EVIDENCE_DIR=/home/mes006/linuxcncWebWASM/coverage/glb-machine/gantry GLTF_VALIDATOR_MODULE=/tmp/linuxcnc-glb-validation/node_modules/gltf-validator/index.js node scripts/validate_glb_machines.mjs
npm --prefix web/react run build
- 四例入口和结构报告,report_id=
gantry-machine-browser-v1:四个按钮及下载 hash;新 profile 七 link/Z 工具绑定;XYZ 零位及逐支外形运动,转台和底座不随 XYZ 移动;每新机型3类不合法结构拒绝;桌面/手机控件不溢出,无页面错误。 - 几何编辑回归,report_id=
imported-geometry-browser-v1,gantry 环境运行:两机型共36个姿态/刀长、编辑和INI导入/重读保留桁架、非法输入/运行门控、自定义joint名称、真实RTCP Jog 均通过。 - 五轴程序报告,report_id=
glb-machine-five-axis-motion-v1:真实解释器/TP,两桁架各41个五轴同时改变的采样间隔、42个投影样本,最大显示误差小于2.5e-16。 - Khronos 校验:四文件均0错误/0警告。重复生成报告:所有生成文件可复现、生产GLB字节相同、原AC/BC文件SHA不变。
- AC 桁架截图、BC 桁架截图、手机入口;页面
http://127.0.0.1:5174/,Chrome / SwiftShader。 - 构建日志:类型/构建通过,已有大chunk提示保留。验收汇总,report_id=
gantry-machine-acceptance-v1,含模型、WASM与证据SHA。无远程job_id,无上游或native改动。