完善五轴 RTCP 仿真与验证资料

This commit is contained in:
2026-07-01 21:49:58 -04:00
parent ac4e855b2b
commit d0d58998ac
159 changed files with 6771594 additions and 339 deletions

258
备忘/备忘5.txt Normal file
View File

@@ -0,0 +1,258 @@
我会先读取两个项目的结构和已有 gmoccapy/RTCP 相关实现,确认页面、
测试入口和 LinuxCNC 参考程序的位置,
再决定需要补齐的功能和验证文档落点
当前项目已经有 gmoccapy、XYZAB/XYZAC、真实 LinuxCNC 五轴程序相关测试和文档资产。
我接下来会把现有实现与 LinuxCNC configs/sim/gmoccapy 的五轴配置、
实际 RTCP 程序和测试脚本对齐,先找出差距再补实现/验证文档。
我看到工作树已有大量未提交改动,
其中不少正好涉及本项目的 gmoccapy、RTCP、task/HAL 和测试。
我会只在必要文件上增量修改,不回退现有内容;
下一步重点收敛到 LinuxCNC 的 gmoccapy 非平凡五轴配置和 TRT/RTCP 程序。
先给出当前执行计划:
1) 提取 LinuxCNC gmoccapy 五轴基准;
2) 对照 Web 页面状态、按钮、DRO、RTCP/kins/task-HAL 数据链;
3) 补测试或小范围实现;
4) 运行验证;
5) 输出中文评价文档并按 AGENTS 规则追加过程日志。
LinuxCNC 的 gmoccapy 五轴参考不是 switchkins 版本,
而是 configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/xyzac-trt.ini
固定 xyzac-trt-kins、DISPLAY=gmoccapy、XYZAC、tool-offset/y-offset/z-offset HAL 链路,
并用 boat/impeller/test 程序验证非平凡五轴 RTCP/刀长语义。
我会把这条 gmoccapy 专属基准纳入 Web 侧验证,
而不只依赖 axis/vismach 的 M428/M429 示例。
现有测试已经覆盖 axis/vismach TRT demos 和 switchkins
但还没有把 LinuxCNC gmoccapy/non_trivial_kinematics/table-rotary-tilting
作为单独对标对象。接下来我会补一个 gmoccapy 参考验证,
把 INI/HAL/刀表/示例程序、页面状态和 canonical 执行链打通。
为避免把“页面像 gmoccapy”误写成“功能等价”我会用两个层面做证据
一是 LinuxCNC gmoccapy 非平凡五轴配置的静态对标,
二是真实 .ngc 经解释器/运动学/页面状态链路的运行对标。
接下来开始补验证脚本。
这里有一个关键差异:
现有 xyzac-trt profile 主要来自 LinuxCNC axis/vismach switchkins 示例,
虽然页面是 gmoccapy shell
但 profile 本身不是 LinuxCNC DISPLAY=gmoccapy 的非平凡五轴配置。
为了让“gmoccapy 页面功能对标 gmoccapy 五轴功能”成立,
我会补一个 gmoccapy-xyzac-trt 专用 profile 和验证链,而不是只在文档里说明。
我会保留现有 xyzac-trt/xyzbc-trt 行为,新增 gmoccapy TRT 作为第三个可运行 RTCP profile
gmoccapy-xyzab 仍保持 trivkins 参考、不可提升为 RTCP。这样不会破坏旧测试的 profile 顺序假设时,
我会同步更新对应断言。
我先确认 vendored source manifest 是否已经包含 gmoccapy 非平凡五轴目录;
如果没有,测试可以直接读取 /home/meswork/cnc_wams/linuxcnc 作为参考,
但页面 staging 需要知道这些源文件。
我确认了一个限制:
当前 WASM vendor manifest 只包含 axis/vismach/5axis/table-rotary-tilting
没有拷入 LinuxCNC 的 configs/sim/gmoccapy/non_trivial_kinematics。
因此我会把 gmoccapy TRT profile 的验证读取真实 /home/meswork/cnc_wams/linuxcnc 源文件,
同时让页面/Node staging 支持该来源,不把缺失 vendor manifest 误当作功能通过。
下一步我会把 LinuxCNC gmoccapy TRT 的真实配置和示例程序纳入可访问的 vendored source 清单,
这样页面 staging、Node 验证和评价文档都能引用同一批源文件。
这个改动是对现有 axis/vismach TRT source 的补充,
不会替换旧的 switchkins 测试资产。
我现在会实际落地改动:补 vendored gmoccapy TRT 源文件清单、增加 gmoccapy TRT profile、让 staging/校验识别 examples/ 源程序,并新增覆盖该 profile 的 Node 验证脚本。
由于 gmoccapy TRT 的 xyzac-trt.ini
通过 SUBROUTINE_PATH=./examples:../../macros 调用工具变更 remap
我会把 table-rotary-tilting 和 gmoccapy/macros 两块源文件一并放入 vendor/staging 范围,
避免验证只拿到主程序而缺 remap 子程序。
已复制真实 LinuxCNC gmoccapy TRT 配置、示例程序和 gmoccapy macros 到
wasm-port/vendor/linuxcnc接下来把这些文件加入 manifest
并在应用代码中使用它们。
我会用脚本式追加 manifest 条目来避免手工漏项,然后用 apply_patch 修改应用源码和测试。
我还发现 parser 的“ready”标准目前按 switchkins 示例写死,会把 LinuxCNC gmoccapy
固定 xyzac-trt-kins 配置误判为缺 M428/M429/M430。
我会把 INI 校验改成两类switchkins TRT 和 gmoccapy fixed TRT
二者都能作为五轴 RTCP 参考,但在页面里显示不同边界。
这里的 gmoccapy TRT 固定配置还有一个语义细节:
它的 xyzac-trt-kins 没有 sparm=identityfirst
所以 LinuxCNC 源码里 switchkins-type 0 就是 TRT/TCP而不是 identity。
我会在 Web profile 里明确这个“固定 TRT 默认类型”,避免错误地要求 M428 才算 RTCP 开启。
一个实现细节需要小心处理:
当前 kinematics WASM 模块初始化默认和 LinuxCNC 源码一致xyzac-trt-kins 的 type 0 是 TRT
只有 INI 传 sparm=identityfirst 时 type 0 才变 identity。
现有 Web 的 axis/vismach profile 是通过 Web 映射把 M428/M429
语义处理成 identity/TCPgmoccapy TRT 固定配置则应使用 type 0 TRT 默认。
我开始用补丁新增 gmoccapy-xyzac-trt profile。这个 profile
会保留 LinuxCNC 源中的 DISPLAY=gmoccapy、固定 xyzac-trt-kins、
examples/impeller-7bl-xyzac.ngc、tool-offset/y-offset/z-offset、
POSTGUI 工具/主轴绑定等对标项。
已添加 gmoccapy-xyzac-trt profile 文件。
现在继续把它接入 profile index、source reference、staging、INI 校验和默认程序选择。
我会把 source reference 中原本挂在 xyzac-trt 下的 gmoccapy TRT 条目迁移到新 profile
并增加 generated HAL、macro remap 和源码引用,
这样文档矩阵能明确区分 axis/vismach switchkins 与 gmoccapy 非平凡五轴。
我会把 source reference 中原本挂在 xyzac-trt 下的 gmoccapy TRT 条目迁移到新 profile
并增加 generated HAL、macro remap 和源码引用,
这样文档矩阵能明确区分 axis/vismach switchkins 与 gmoccapy 非平凡五轴。
我已完成 source map 迁移。现在修改 machine-file staging
默认仍走 axis/vismach TRT当 profile 是 gmoccapy-xyzac-trt 时,
自动使用 configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples
作为真实 LinuxCNC G-code 源目录。
我还需要补齐刚才 staging 改动的底部 helper特别是把 examples/ 归类为 demo
并在没有传入 plan 时保持旧的 axis/vismach 默认行为。
我需要同步放宽 INI parser 的 ready 标准gmoccapy TRT 固定配置不声明
[HALUI] M428/M429/M430但它的 KINS=xyzac-trt-kins、XYZAC、5 joints、
tool-offset/y/z-offset 和 gmoccapy POSTGUI 才是对标依据。
我会继续同步构建脚本和默认程序选择,确保 dev 和 dist 两种运行路径都能读取 gmoccapy TRT 源文件。
我正在接入默认加载逻辑gmoccapy TRT 的默认程序应选 impeller-7bl-xyzac.ngc而不是按 profile id 拼 *_switchkins.ngc。同时 store 的项目目录和 source guard 也会识别 examples/ 来源。
现在修改 store 的项目目录/source guard/run preconditions。核心变化是任何 profile 只要声明 rtcpProof=true 且有 LinuxCNC kinematics module就可以进入运行前置条件gmoccapy-xyzab 仍因 rtcpProof=false 被阻止。
我注意到固定 TRT profile 需要把默认 kins 类型设为 tcp-xyzac否则页面会把 LinuxCNC 源码中的 type 0 TRT 误显示成 identity/off。我会补一个 profile 默认 kins 辅助函数,并让 TCP button 识别 value 0 的固定 TRT。
我会先做最小默认 kins 改动,避免影响已有 switchkins profiles只有 fixedTrtDefault profile 默认显示 TCP/RTCP onaxis/vismach 仍默认 identity/off。
我已把固定 TRT 默认 kins 的逻辑接入 store。接下来会补 profile/staging/INI 的 Node 验证脚本,然后先跑相关小测试,及时处理断言或集成问题。
我会新增专门的 verify_gmoccapy_xyzac_trt_parity既检查 profile 静态对标,也检查 staging、INI parser、真实程序 canonical 执行和 store 状态。然后再把旧测试中 profile 列表断言更新。
我会新增的测试脚本放入 tests/node并把它接入 npm --prefix app run smoke:node。脚本会直接跑真实 gmoccapy TRT 的 impeller/boat/test 程序,验证 canonical motion、tool-change remap staging 和页面状态。
我会修正一个刚发现的语义点applyIniConfigToProfile 会把没有 HALUI MDI 的 gmoccapy 固定 TRT 错合并成默认 M428/M429/M430。现在改为固定 TRT 保留 profile 自己的 switchkins 类型映射。
我会调整 applyIniConfigToProfile如果 INI 没有 [HALUI] MDI 命令,就不从 parser 推导 switchkins 类型,以 profile 的固定 TRT 映射为准。
我会把新测试加入 node smoke并先跑新增测试与直接相关的 profile/INI/staging 测试,快速暴露集成问题。
我现在跑新增和相关 Node 测试profile boundary、INI runtime、machine-file staging、gmoccapy TRT parity。若出现断言失败我会按失败点修正实现而不是放宽测试。
新增 gmoccapy TRT 测试、profile boundary、INI parser 和 machine-file staging 都已通过。接下来我会跑受影响的 sidebar/parity/run precondition/browser build 类测试,并处理可能由新 profile 顺序或 source map 变化带来的断言。
我会跑 gmoccapy_trt_project_sidebar、run_preconditions、rtcp_store 和 linuxcnc_parity_matrix这几项最容易受 profile 列表和 source guard 改动影响。
两处失败都是集成断言而不是功能缺陷xyzac-trt 原 profile 没显式 kinematicsModuleId新通用 run gate 因此误判;另一个是测试还按旧 profile 列表断言。我会补显式 module id并更新旧断言。
我已给 xyzac-trt 补上显式 kinematicsModuleId让通用 RTCP run gate 不再把它误判为 unsupported。接下来更新旧测试的 profile 列表断言并复跑失败项。
我会复跑刚才失败的两项,并补跑新增 gmoccapy TRT 测试,确认 profile id 修复没有引入新问题。
相关失败已修复。现在我会跑完整 smoke:node再跑 build/browser smoke如果时间较长我会继续报告进度。
完整 node smoke 走到 verify_gmoccapy_xyzab_profile 时只剩旧 profile 列表断言失败。这个测试应接受新增的 gmoccapy TRT profile我会更新断言并复跑完整 node smoke。
我会复跑完整 node smoke。上一次已经覆盖到后半段这次从头跑能确认新 profile、旧 gmoccapy XYZAB 参考和 parity 矩阵全部兼容。
完整 node smoke 已通过。接下来我会跑静态构建和浏览器 smoke验证 dist 资产复制后 gmoccapy TRT profile 仍能读取 INI/程序,并且页面不空白。
构建已经通过dist 资产复制正常。我会继续跑 browser smoke如果脚本自己起本地服务就直接用它否则我会启动项目 dev server 后验证。
我会写一份单独的中文评价报告,避免把本轮结论混在已有大文档里。报告会列明 LinuxCNC gmoccapy TRT 参考文件、对标功能、测试过程、命令输出摘要、通过/不通过边界和最终评价。
现有 browser smoke 已覆盖默认 axis/vismach TRT 源程序和 dist但没有在浏览器里显式切到新的 gmoccapy-xyzac-trt profile。我会补一段浏览器 profile/source 验证,让 gmoccapy TRT 在实际页面中也被加载、解释和渲染。