Add AC/BC RTCP programs and 3D machine manager
This commit is contained in:
103
docs/glb-machine/01-子项目功能内容.md
Normal file
103
docs/glb-machine/01-子项目功能内容.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 子项目功能内容
|
||||
|
||||
## 需求与边界
|
||||
|
||||
用户指定两条机械链:底座 → X → Y → Z → 主轴箱;底座 → A → C。BC 将 A 替换为 B。线性轴移动刀具侧,转台固定在底座的另一分支。提供原创 AC 和 BC 标准型、AC 和 BC 桁架型四个完整 GLB,均包含几何、材质、节点和 URDF,不依赖外部模型文件。
|
||||
|
||||
预览区提供 GLB 导入、AC/BC 示例加载及下载,显示识别的机型、层级、摇篮中心和 RTCP 参数。关机且空闲时应用;验证完成才重载配置;保留程序并重新解析、失效原回零/不兼容恢复记录。普通 GLB 缺少结构描述时不能猜测机床参数。
|
||||
|
||||
## URDF 数据契约 v1
|
||||
|
||||
GLB 默认场景 `extras.linuxcncMachine = { schema: "linuxcnc.machine/1", urdf: "<robot ...>...</robot>" }`,Three.js 加载后位于 `scene.userData.linuxcncMachine`。XML 使用标准 URDF link/joint/origin/axis/limit,增加命名空间 `xmlns:cnc="urn:linuxcnc:web:machine:1"` 的 `cnc:machine` 和 `cnc:axis`,标准 URDF 与应用绑定分开。
|
||||
|
||||
- SI:origin.xyz 米,rpy/关节角弧度;机床坐标右手 Z 向上。GLB 最外层 `urdf_frame` 绕 X -π/2,将 Z-up 转到 glTF Y-up;不得将毫米直接作为 glTF 米。
|
||||
- 每个 link 对应唯一 GLB 节点同名,节点局部静止位姿必须与父 joint.origin 相同,视觉网格放在 link 的子节点,不能把轴心烘焙进顶点后伪造节点层级。
|
||||
- `cnc:machine` 显式绑定 base/tool/work 三个 link;每个运动 joint 的 `cnc:axis coordinate="X|Y|Z|A|B|C"` 绑定 LinuxCNC 坐标。不相信机型字符串:根据拓扑、joint.type 和 axis 推断 AC/BC。
|
||||
- v1 接受正交 XYZ 刀具链、正向 X(A) 或 Y(B) 倾转轴以及其子 Z(C) 轴;局部 rpy=0。任意斜轴、头头/头台结构、mimic 或额外运动轴明确拒绝,后续扩展需新增求解器。
|
||||
- 限位、速度和 effort 必须有限且合法;URDF limit 用作导入运动范围校验,运行加速度、回零、伺服周期仍由对应 INI 提供,结构模型不能推断这些参数。
|
||||
- 摇篮 joint.origin 为 T,C joint.origin 为 U;零位 C 原点 P=T+U。映射 `rot_point=P*1000`,`offset=-U*1000`。AC 要求 U.x=0;BC 要求 U.y=0。work 固定 joint.origin=-P,保证零角下程序坐标原点与机床原点相同。
|
||||
- 主轴箱零基准位于线性链原点;刀长来自 LinuxCNC 工具状态,不从外观网格猜测。遵循 trtfuncs.c 的 master-tool 约定处理工具长度与程序路径参考。
|
||||
|
||||
## 验收
|
||||
|
||||
两文件可独立导入;AC/BC 自动识别;结构与 GLB 节点一致;非零中心/偏置进入 WASM;多姿态与非零刀长时刀尖和工件程序点吻合;错误文件不更改已生效配置;浏览器导入、切换、门控、渲染及相关回归通过。
|
||||
|
||||
## 字段示例与制模约定
|
||||
|
||||
```json
|
||||
{
|
||||
"extras": {
|
||||
"linuxcncMachine": {
|
||||
"schema": "linuxcnc.machine/1",
|
||||
"urdf": "<?xml version=\"1.0\"?><robot ...>...</robot>"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```xml
|
||||
<robot name="demo_ac_xyz_head" xmlns:cnc="urn:linuxcnc:web:machine:1">
|
||||
<cnc:machine profile="trt-xyz-head/1"
|
||||
base="base" tool="spindle_head" work="work_frame"/>
|
||||
<!-- 标准 link 定义省略;完整可用 XML 见交付的 .urdf -->
|
||||
<joint name="tilt_joint" type="revolute">
|
||||
<parent link="base"/><child link="tilt_table"/>
|
||||
<origin xyz="0.024 0.006 -0.037" rpy="0 0 0"/>
|
||||
<axis xyz="1 0 0"/><cnc:axis coordinate="A"/>
|
||||
<limit lower="-1.7453292519943295" upper="0.8726646259971648"
|
||||
velocity="0.5235987755982988" effort="1000"/>
|
||||
</joint>
|
||||
<joint name="c_joint" type="revolute">
|
||||
<parent link="tilt_table"/><child link="c_table"/>
|
||||
<origin xyz="0 -0.018 0.045" rpy="0 0 0"/>
|
||||
<axis xyz="0 0 1"/><cnc:axis coordinate="C"/>
|
||||
<limit lower="-628.3185307179587" upper="628.3185307179587"
|
||||
velocity="0.5235987755982988" effort="1000"/>
|
||||
</joint>
|
||||
</robot>
|
||||
```
|
||||
|
||||
|数据|AC 示例(mm)|BC 示例(mm)|提取方法|
|
||||
|---|---|---|---|
|
||||
|倾转轴中心 T|24, 6, -37|4, 14, -28|A/B joint.origin|
|
||||
|C 相对倾转轴 U|0, -18, 45|-22, 0, 40|C joint.origin|
|
||||
|原生 rot-point P|24, -12, 8|-18, 14, 12|T + U|
|
||||
|原生 offset D|0, 18, -45|22, 0, -40|-U|
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
root[urdf_frame: Z-up → glTF Y-up] --> base[base 底座]
|
||||
base --> x[x_slide / X]
|
||||
x --> y[y_slide / Y]
|
||||
y --> z[z_slide / Z]
|
||||
z --> tool[spindle_head 主轴箱/刀具基准]
|
||||
base --> tilt[tilt_table / A 或 B]
|
||||
tilt --> c[c_table / C]
|
||||
c --> work[work_frame 程序参考]
|
||||
```
|
||||
|
||||
八个 link 名可以自定义,但必须唯一并通过 URDF 引用;link 节点直接父子关系保持上述两条链,网格作为 link 的子节点。不依赖网格的名称或数量。关节静止变换可以写 glTF TRS 或等价 matrix,禁止额外缩放/旋转而不反映到结构数据。外观尺寸、颜色不进入 RTCP 参数。
|
||||
|
||||
完整示例:[AC URDF](../../web/react/public/machines/demo-ac-xyz-head.urdf)、[BC URDF](../../web/react/public/machines/demo-bc-xyz-head.urdf)。GLB 是唯一必需输入;旁边的 XML 和 manifest 只用于阅读与核验。
|
||||
|
||||
## 当前实现边界
|
||||
|
||||
导入资产保存在当前页面内存;刷新后须重新导入。不会向原 INI 或宿主磁盘自动写入,仍可通过现有“保存 INI”导出。修改/重新读取同机型 INI 时保留导入 GLB,同步更新有效 URDF 的轴心、偏置和工件参考系;手工切换机型才回到内置模型。跨 AC/BC 保留原程序,若原程序无法在新机型解析,明确提示“机床已应用,但程序解析失败”。
|
||||
|
||||
GLB 不提供完整工业机床控制配置、不做碰撞检测、质量/动力学仿真或任意 URDF 求解。示例 effort 为 URDF 结构字段,本仿真不据此宣称力矩控制。URDF 角度行程以匹配已有 LinuxCNC 示例配置为目的,不代表实际摇篮无碰撞范围。
|
||||
|
||||
2026-09-18 界面更新:导入/示例/结构信息和几何参数均在按钮打开的可拖动对话框中,预览顶部只保留“导入机床模型”“机床参数”两个入口,详见 D09 / GLB-UI01 / E07。
|
||||
|
||||
|
||||
## 参数化桁架型(2026-09-18 新增)
|
||||
|
||||
|示例|URDF profile|刀具侧|工作台侧|结构节点|
|
||||
|---|---|---|---|---|
|
||||
|AC / BC 示例|trt-xyz-head/1|底座→X→Y→Z→主轴箱|底座→A或B→C|8 link / 7 joint|
|
||||
|AC / BC 示例桁架型|trt-xyz-gantry/1|底座→X→Y→Z|底座→A或B→C|7 link / 6 joint|
|
||||
|
||||
两类均为五个运动轴。桁架型的 `cnc:machine tool="z_slide"` 直接绑定 Z;另有固定 work_frame 挂 C,作为程序参考坐标,并非第六运动轴。四柱/纵向轨道固定在底座,移动横梁属于 X,横梁滑座属于 Y,滑枕及主轴网格属于 Z。
|
||||
|
||||
参数修改继续使用旋转中心与轴间偏置入口;实际导入模型保留,当前有效 URDF 和 WASM 同步。桁架与标准型共用相同的 AC/BC 原生参数含义,SI 单位、根坐标转换、刀长和几何编辑规则不变。示例外观尺寸在生成器中定义,不由编辑旋转中心自动重建 CAD 网格。
|
||||
|
||||
交付:[AC 桁架 GLB](../../web/react/public/machines/demo-ac-gantry.glb)、[AC 桁架 URDF](../../web/react/public/machines/demo-ac-gantry.urdf)、[BC 桁架 GLB](../../web/react/public/machines/demo-bc-gantry.glb)、[BC 桁架 URDF](../../web/react/public/machines/demo-bc-gantry.urdf)。
|
||||
16
docs/glb-machine/02-子项目程序开发详细步骤.md
Normal file
16
docs/glb-machine/02-子项目程序开发详细步骤.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 子项目程序开发详细步骤
|
||||
|
||||
1. GLB-01:记录规范、网络资源与方案;明确节点关系、单位和原生参数映射。
|
||||
2. GLB-02:实现 GLB 容器预检与 URDF 严格解析、拓扑/绑定/位姿校验;生成独立结构描述。
|
||||
3. GLB-03:可复现生成 AC/BC 模型、内嵌 URDF、单独导出可阅读 XML 和资源清单;节点名与 XML 一致。
|
||||
4. GLB-04:预览区导入及示例;先完成验证再重载匹配 INI,写入解析参数,Worker 仍二次解析 INI;显示成功或失败与参数来源。同机型配置改动后保留 GLB,更新有效 URDF 和运行参数;显式更换机型才卸载。
|
||||
5. GLB-05:URDF link 按真实 WASM 关节做刚体位姿投影,路径附着 C 轴,刀长取运行状态;不在 JS 重写逆解。
|
||||
6. GLB-06:解析拒绝用例、非零参数/刀长与 WASM 几何交叉验证、浏览器导入/门控/截图、类型检查及构建;整理 SHA 和证据、任务状态、接续入口。
|
||||
|
||||
原有本地改动不加入本专项。只运行相关测试,不重跑全仓验收、不修改上游或历史 release gate。
|
||||
|
||||
7. GLB-UI01(后续需求):共享可拖动对话框、预览布局和快捷键隔离,适配导入/参数原流程;验证鼠标/触摸、视口边界、焦点和画布尺寸,证据独立保存在 dialogs 子目录。
|
||||
|
||||
8. GLB-GEO01:几何参数写入有效 URDF,源 GLB/共享网格保留;校验应用、INI 重读/导入、重复编辑、失败和机型切换边界,以及改参数后的 WASM/模型和真实 RTCP Jog。
|
||||
|
||||
9. GLB-GAN01:独立桁架 profile、参数化生成两模型、四例注册入口;验证正确分支运动、导入/下载/几何编辑、真实 WASM/五轴程序及原 profile 兼容,证据 gantry 子目录。
|
||||
103
docs/glb-machine/03-推进台账.md
Normal file
103
docs/glb-machine/03-推进台账.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 推进台账
|
||||
|
||||
## R09 / 2026-09-18 / 初学者工件坐标与 G 代码完整讲义
|
||||
|
||||
- 用户要求在RTCP课件基础上系统扩充工件坐标:坐标含义、原点和方向确定、G代码逐值解析与运动,整个讲义面向初学者。
|
||||
- 新增 `docs/teaching/rtcp-beginners/`,72页A4完整教材,约2.6万正文字符;保留原31页投影概要。新书以坐标尺子入门,区分M/W/J/K/T,再讲工件原点测量、初始方向、G54配准和动态RTCP,最后进入完整程序与实验/答案。
|
||||
- 核心细化:物理固连工件架与G54偏置表不同;本课G54是零位配准输入,动态方向与原点由运动学继续变换。解释G10 L2/L20、G90/G91、单位、F与其他字的上下文,明确普通坐标旋转和完整刀补不等于自动RTCP。
|
||||
- 新增六个生成/验证脚本:`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`。
|
||||
- 数值实测:o=(40,20,10)、BC、P=D=L=0。11个主段、11个额外单位/G54-G55/L20段核对;N10–N90加M2通过实际解释器/TP/WASM执行完成,53个采样,终点与逐行结果一致。M429/M428另按保持物理关节接口核对。
|
||||
- 图像:9张新增原创坐标图,复用11张旧原创图;72页逐页边界/图片/标题检查和Poppler独立渲染检查。字体同形部首导致复制字符不符的问题,通过按实际字符制作Noto SC子集解决;保留字体许可,严格检查所有72页标题可正确提取。
|
||||
- 记录能力边界:本项目解释器是功能切片,完整G43/H刀表、G52/G92、任意方向和所有进给模式不在本次全面验收范围;以官方语义讲解时明确区分,未把“解析接受”当成完整实现。
|
||||
- 验证见E13,文件含目录/书签、HTML源稿、测试数据、教学NGC与复现步骤。未修改运行功能,原本地改动、旧PDF和历史证据保留;未提交/推送。
|
||||
- 下一步:教材已完整交付,按后续教学内容修订需求推进。
|
||||
|
||||
## R08 / 2026-09-18 / 五轴与 RTCP 教学 PDF
|
||||
|
||||
- 用户要求完善“非RTCP各轴独立”和“RTCP坐标随转台变换、刀尖跟随”的理解,提供图文教学课件。
|
||||
- 新增 `docs/teaching/rtcp-five-axis/`:31页16:9中文PDF、可编辑HTML、9张原创原理图、2张无界面控件的桁架模型图、数值报告、目录与逐页验证。
|
||||
- 明确范围:XYZ加AC或BC;独立驱动不等于不能协调插补;程序坐标须经过单位/增量/零点/刀补;RTCP不仅改变方向,还处理中心/偏置/刀长;模式切换应固定物理关节。加入非RTCP后置计算、TCP/倾斜平面差异、限位与版本化M码说明。
|
||||
- 生成脚本:`generate_rtcp_teaching_data.mjs`、`generate_rtcp_teaching_figures.py`、`capture_rtcp_teaching_models.mjs`、`generate_rtcp_teaching_html.py`、`render_rtcp_teaching_pdf.mjs`、`verify_rtcp_teaching_pdf.py`。
|
||||
- 验证 E12:真实WASM十二个姿态正逆解、方向增量/切换算例;31页DOM边界和图片加载检查;Poppler独立渲染所有PDF页并目视检查;PyPDF核验31页、16:9、中文文本、字体自包含、39个书签。
|
||||
- 中间排版修正:两页接近/越过页脚,调整公式和图形间距后严格边界检查通过;字体检查增加对Chrome嵌入Type3字形程序的正确识别,pdffonts也确认emb=yes。没有改应用功能或覆盖前轮证据。
|
||||
- 下一步:课件可直接教学,按后续内容修订需求更新。原有本地改动保留,本轮未提交/推送。
|
||||
|
||||
## R07 / 2026-09-18 / Jog 限位与序列恢复、阴影警告
|
||||
|
||||
- 用户截图:XYZBC B=50.2275°,Connection: ERROR / event_sequence_gap。配置 AXIS_B 范围大,但 JOINT_3 上限=50°;连续 Jog 只以坐标限位作为目标,越过关节限位后原生 FK 返回 -702。首次 Worker 复现得到 `SIM_STEP: wasm_xyzac_forward_-702`。
|
||||
- 第二层根因:SIM_STEP 执行前把请求的未来 tick 写入事件日志,实际在较早 tick 失败;下一命令发生 tick 回退,未写事件而协议已消费序号,再下一命令出现 sequence_gap。
|
||||
- `wasm-linuxcnc-tp.mjs`:对于能直接映射关节的坐标,Jog 临时采用 AXIS/JOINT 限位交集,原生 TP 计算目标和减速,随后恢复正常坐标限位。RTCP 耦合的 XYZ 关节由真实 WASM IK/FK 在每个伺服样本检查;越界则取消剩余轨迹并回到上一个有效样本,发布限位停止而不是继续越界。
|
||||
- `sim-session.mjs`:SIM_STEP 完成/失败后写入实际 tick;成功时仍在 checkpoint 前完成事件记录。调度异常时停止运动,并同步协议/任务时钟。`sim-scheduler.mjs` 中异常保留已尝试 tick,同步 native scheduler,未执行的未来周期不再占用时钟。
|
||||
- UI 将限位拒绝标为 blocked,与 Worker 连接故障区分;Jog 采样出错显示具体原因。到限位后 JOG_STOP、反向 Jog、SNAPSHOT_REQUEST、checkpoint/恢复均可继续。
|
||||
- 用户补充控制台截图仅为 PCFSoftShadowMap 弃用提示,与事件故障无关;XyzacMachineView 改为 PCFShadowMap,Chrome 再测 warnings=[]。
|
||||
- 验证 E11:两机型直接旋转轴50°限位/反向退出、RTCP引发Y接近100mm限位/反向退出、失败后序号及原生事件游标一致、部分tick、无效cycles、checkpoint恢复通过。真实浏览器两机型反复Jog、松开停止、限位后再次运动/画面非空通过;120个精确恢复续跑样本、五轴程序、单步、基础session/scheduler/replay及生产构建通过。
|
||||
- 旧 `test_xyzac_manual_control.mjs` 在回零尚未完成时期待 homed_mask=1,旧 `test_xyzac_button_constraints.mjs` 期待关机优先而得到 not_all_homed;使用只读 HEAD 模块加载器复核也在相同断言失败,保留日志,未修改门控或放宽断言。
|
||||
- 证据归入 coverage/glb-machine/jog-limits/,不改此前证据、上游、本地trace/图片/临时文件。无 C/WASM 变更,无需重建原生核心。本轮及前轮变更仍未提交/推送。
|
||||
- 下一步:专项收口;已进入旧序号错误的浏览器会话需刷新,重新导入模型并回零,不能伪造缺失事件来修补旧会话。
|
||||
|
||||
## R06 / 2026-09-18 / AC、BC 参数化桁架示例
|
||||
|
||||
- 用户要求保留 AC/BC 示例,新增 AC/BC 桁架型,结构为底座→X→Y→Z、底座→A/B→C。
|
||||
- 原 AC/BC 导入示例已经采用双链,但存在 Z→主轴箱固定 link。本轮桁架型独立 profile `trt-xyz-gantry/1`,七 link、六 joint、五运动轴,tool 直接绑定 Z。原 profile `trt-xyz-head/1` 与原模型保持。
|
||||
- `generate_glb_machines.mjs` 新增四柱桁架、固定纵向 X 轨、属于 X 的整根桁架横梁、属于 Y 的横梁滑座、属于 Z 的滑枕/主轴外形。转台仍独立挂到底座;生成两个新单文件 GLB 及 XML。
|
||||
- `machine-urdf.ts` 只对新 profile 放行对应 link/joint 数量和 Z 工具绑定;保留树/单位/轴向/运动学校验。MachineImportPanel 从 manifest 读取四个例子的按钮名和路径,结构文字根据 profile 显示。
|
||||
- 新增 `test_gantry_machine_browser.mjs`;原参数编辑测试和五轴程序测试增加可选 GLB_MACHINE_VARIANT/GLB_EVIDENCE_DIR,复用完整原断言。标准校验脚本支持独立证据目录。
|
||||
- 验证 E10:四个入口和下载、标准 profile 兼容;新模型各分支父子关系、X/Y/Z 分别带动对应外形、底座/转台独立;三类错误新 profile 拒绝;参数应用/INI 保存导入重读保持模型、各18个WASM姿态/刀长、实际 RTCP Jog;每机型41个五轴同时变化采样间隔、42个轨迹投影。四个 GLB 均0错误/警告;重复生成和生产资产一致,原AC/BC字节SHA未变。桌面/手机与类型检查/构建通过。
|
||||
- 原有本地改动及此前证据保留;本轮独立 `coverage/glb-machine/gantry/`。无 native C/WASM 变更、无外部模型资产。
|
||||
- 下一步:任务已验收,无待办;按新目标继续。所有功能改动仍未提交/推送。
|
||||
|
||||
## R05 / 2026-09-18 / 几何编辑保留导入机床
|
||||
|
||||
- 用户发现导入 GLB 后“应用参数”会切回内置机床。根因是 App.applyGeometry 在非导入调用时执行 setImportedMachine(null),属于 R02 为防止参数脱节制定的旧策略。用户新需求覆盖此策略,新增 GLB-GEO01。
|
||||
- 修复前 `scripts/test_imported_geometry_browser.mjs` 明确复现:应用后 GLB hash 从源文件 SHA 变成空串;before.log 保留。
|
||||
- `imported-machine.ts` 新增 updateImportedMachineGeometry:验证机型、运行限位/速度及 INI 参数,按节点绑定更新当前有效 URDF 的 A/B、C、work origin,并重新解析校验;支持用户自定义 joint 名称。源 scene、网格、材质、文件名与 SHA 不变。
|
||||
- buildImportedMachine 的运行克隆使用有效 URDF 设置所有 link 的零位,包括固定 work frame;运动继续采用真实 WASM 关节。App 在 Worker 成功加载配置后提交候选结构;参数预检失败保持旧模型,程序重解析失败则明确报告已应用配置。
|
||||
- App 资源清理依赖 source scene 是否更换,避免几何对象变更时误释放共享网格。导入详情显示当前参数,并说明源 GLB 未改写。显式机型选择仍卸载旧 GLB。
|
||||
- 同机型“应用参数”“重新读取 INI”“导入 INI 后应用”均保留模型;重复相同参数不累加位移。对应更新原 GLB 浏览器脚本的 INI 重载预期,保留所有其他断言。
|
||||
- 验证 E09:AC/BC 的真实 UI 原路径复现、保存/导入/重读、非法输入保留状态、开机门控、机型切换,以及各 18 个不同角度/刀长的 WASM 交叉验证和改参数后实际 RTCP Jog 均通过。原 GLB 全专项、内置参数编辑回归及类型检查/构建通过。
|
||||
- 测试修正:details 展开状态在 AC→BC 切换时会保留,最初无条件点击反而折叠导致文本断言失败;改为仅在折叠时点击,未放宽内容断言。
|
||||
- 证据独立在 coverage/glb-machine/geometry-edit/;旧报告保持,不修改源 GLB 或上游/原有本地改动。
|
||||
- 下一步:本专项已验收,按新需求推进。当前所有本地功能变更仍未提交/推送。
|
||||
|
||||
## R04 / 2026-09-18 / 空闲 M429/M428 切换刀尖跳动
|
||||
|
||||
- 用户截图中 XYZ 坐标保持不变,而 J0/J1/J2 随按钮切换改变,模型真实反映了错误关节值,并非 GLB 层级或显示坐标 bug。新增 TRT-SW01。
|
||||
- 复现:新增 `web/worker/test_trt_switch_stationary.mjs`,修复前在 AC、A=4.8675° / C=179.88° 下 M428 将 J0 从 0 改为 47.97481463927447 mm,强断言失败;保留 before.log。
|
||||
- 根因:`SimSession.switchXyzacKinematics()` 使用保持旧 pose 并逆解的 select()。改为已有 WASM selectPhysical(),输入当前规划器关节,计算新模式下坐标。随后同步 TP 和解释器。
|
||||
- `wasm-linuxcnc-tp.mjs` 的 setPosition 增加可选模式参数,坐标和模式一起更新后才 read,避免中间态把旧坐标交给新模式逆解,尤其接近行程边界时错误越限。默认调用行为保持。
|
||||
- `test_xyzac_trt_case.mjs` 保留原坐标同步断言并补充关节不变断言;新增实际浏览器按钮/MDI/后续 Jog 专项。
|
||||
- 验证 E08:两机型 64 次 Worker 切换、22 次浏览器切换;截图姿态、非零中心/偏置、接近边界、重复模式、M430、空闲 tick、增量/坐标偏置、运行中/非法模式拒绝;实际渲染刀尖不动。原 RTCP Jog、TRT case、单步流程、运行后续和生产构建通过。
|
||||
- 浏览器测试先等待 MDI 到位,再切回 Manual 刷新控件状态后选择切换按钮;第一次直接等待按钮门控刷新超时,未作为通过证据。
|
||||
- 证据独立保存 `coverage/glb-machine/switching/`,未覆盖前轮验收;未修改 native C/WASM 或上游 LinuxCNC。
|
||||
- 下一步:任务已验收,刷新页面载入新 Worker 后重新导入 GLB 即可体验;本轮及前轮改动均未提交/推送,原有本地保留项不变。
|
||||
|
||||
## R03 / 2026-09-18 / 预览放大与可拖动设置对话框
|
||||
|
||||
- 用户截图显示导入说明和参数表占据预览高度,机床仅剩很小显示区域;新增 GLB-UI01。
|
||||
- `App.tsx` 把两个入口合为机床预览顶部紧凑工具条;`MachineImportPanel.tsx` 与 `TrtGeometryPanel.tsx` 的表单移入共享 `DraggableDialog.tsx`。模型画布占据其余高度,不改变左右预览比例。
|
||||
- 原生 dialog 提供模态隔离;标题栏支持鼠标和触摸拖动、视口边界限制、窗口缩小后回到屏幕内;Esc 关闭、Tab/Shift-Tab 循环、焦点返回。关闭保留参数草稿;应用过程中保留结果显示。开机可打开查看,实际导入/参数编辑仍受原门控限制。
|
||||
- App 快捷键在对话框打开时跳过机床操作,F1 急停保留,防止 Esc 误触 PROGRAM_ABORT 或 F2 误开机。
|
||||
- 原有 GLB/参数浏览器脚本只适配打开/关闭对话框步骤;新增 `scripts/test_machine_dialog_browser.mjs`。证据独立写入 `coverage/glb-machine/dialogs/`,保留 E02–E06 原报告。
|
||||
- 验证 E07:2048×859、1440×900、390×844 下机床画布高度分别 351.5、392.5、380 px;占机床面板高度超过 85%;打开对话框画布尺寸不变。拖动、极端边界、触摸、缩屏、焦点、快捷键、草稿、运行门控通过;原参数保存/导入、两机型 GLB 导入和 RTCP Jog 回归通过;类型检查/生产构建通过。
|
||||
- 中间问题:浏览器原生 Tab 可转到浏览器工具栏,专项断言捕获;补充弹窗内 Tab/Shift-Tab 循环后通过,没有放宽断言。
|
||||
- 下一步:当前专项所有任务已验收,按新需求推进。所有改动仍未提交/推送,原有本地改动继续保留。
|
||||
|
||||
## R02 / 2026-09-18 / 实现与验收收口
|
||||
|
||||
- 完成解析器 `web/react/src/machine-urdf.ts`:XML 命名空间、两分支拓扑、正交轴、单位/限位、GLB 自包含/节点绑定/位姿、版本和异常输入校验;推导 AC/BC、rot-point 和 offset。
|
||||
- 完成模型 `scripts/generate_glb_machines.mjs` 及 `web/react/public/machines/` 的 AC/BC GLB、XML、manifest、许可;底座-XYZ-主轴箱、底座-A/B-C,与原移动工作台模型区分。
|
||||
- 完成 `imported-machine.ts`、`MachineImportPanel.tsx` 和 App/Viewer/styles 接入:文件导入、示例与下载,应用前验证,参数通过 INI/Worker 进入 WASM;真实关节驱动、刀长与程序路径参考、旧资产卸载和资源释放。
|
||||
- 新增 `test_glb_machine_browser.mjs`、`test_glb_machine_motion.mjs`、`validate_glb_machines.mjs`;原两个浏览器测试只增加可选证据输出目录,不删除断言。
|
||||
- 验证 E02–E06:42 项拒绝用例、36 个姿态/刀长样本、8 次导入模型 RTCP Jog、两机型各 41 个五轴同时变化的执行间隔、84 个程序执行投影采样;两 GLB 标准校验 0 错误/警告;旧参数编辑与 Jog 回归、桌面/手机、类型检查及构建通过。
|
||||
- 中间问题:生成器默认导出 matrix,首次被 TRS 校验拒绝;改为导出 TRS,同时解析器接受与 URDF 等价的 matrix。运动程序抽样过疏导致样本数断言失败,改为全量采样,未放宽断言。测试损坏文件时模型保持不变,后续重新加载成功示例后截图。重复生成 public 资产触发 Vite 自动刷新,曾打断一次进行中的浏览器测试;停止资产写入后独立重跑。
|
||||
- 证据统一在 `coverage/glb-machine/`;旧 `coverage/trt-parametric/` 未改。原有 trace、子模块、临时文件和图片完整保留。
|
||||
- 边界:本轮 v1 仅支持已声明的 AC/BC TRT 正交双链;运行 INI 仍负责回零/周期等;GLB 当前页面内存保存,刷新重新导入;不宣称任意机床 URDF、碰撞检测或制造商尺寸标定。
|
||||
- 下一步:本专项矩阵无待办,按新目标扩展或按用户要求保存;未提交/推送本轮新功能。
|
||||
|
||||
## R01 / 2026-09-18 / 需求与契约
|
||||
|
||||
- 按用户最新指令确定两分支结构,建立本目录七份文档。
|
||||
- 已读取原专项索引/矩阵、现有预览、参数写入和 WASM 运动学链路;保留原有工作区改动。
|
||||
- 已查阅 glTF、URDF、Three.js 和 LinuxCNC 官方资料,检索网络模型资源;尚未找到可确认满足本契约的可再分发完整 GLB。
|
||||
- 验证:此阶段仅源码和规范核对,未运行新功能测试。
|
||||
- 下一步:GLB-02 严格结构解析,随后生成两种模型并接入 UI。
|
||||
20
docs/glb-machine/04-任务矩阵.md
Normal file
20
docs/glb-machine/04-任务矩阵.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# 任务矩阵
|
||||
|
||||
状态:待办、进行中、已验收、阻塞;已验收必须引用证据。
|
||||
|
||||
|编号|内容|依赖|状态|验收标准|证据|
|
||||
|---|---|---|---|---|---|
|
||||
|GLB-01|方案、规范与资料|无|已验收|七份文档,明确两分支、单位、原生参数映射和来源|E01|
|
||||
|GLB-02|URDF / GLB 解析校验|01|已验收|树、轴、单位、绑定、格式错误拒绝;提取 AC/BC 与参数|E02|
|
||||
|GLB-03|原创 AC/BC 示例|02|已验收|独立可用 GLB,层级与内嵌 XML 一致,可复现生成|E03|
|
||||
|GLB-04|导入与配置联动|02,03|已验收|预览入口、示例下载、识别与重载、保留程序、门控|E02|
|
||||
|GLB-05|真实关节驱动模型|02,03|已验收|XYZ 刀具侧、A/B-C 工件侧;多姿态及刀长吻合 WASM|E02,E04|
|
||||
|GLB-06|回归与接续收口|04,05|已验收|自动测试、浏览器截图、构建、SHA 证据和文档一致|E05,E06|
|
||||
|GLB-UI01|预览区域与可拖动对话框|04|已验收|导入/参数弹窗、拖动与边界、键盘/触摸、画布尺寸、原流程回归|E07|
|
||||
|TRT-SW01|M429/M428 空闲切换保持机床关节|05|已验收|按钮/MDI 无关节或刀尖跳变;规划器与解释器同步;切换后 Jog/增量及门控通过|E08|
|
||||
|GLB-GEO01|编辑几何参数保留导入模型|04,05|已验收|应用/INI重读/导入保留GLB;有效URDF/显示与WASM一致;重复编辑与失败不替换模型|E09|
|
||||
|GLB-GAN01|AC/BC 参数化桁架示例|GEO01|已验收|四个独立入口;桁架XYZ刀具链/独立A或B-C工作台;导入、参数编辑、WASM/联动校验|E10|
|
||||
|TRT-JOG02|Jog 限位后事件序列与反向恢复|SW01|已验收|关节限位不越界;故障不产生序列缺口;停止/反向Jog/快照可用;原运动和恢复回归|E11|
|
||||
|GLB-UI02|Three.js 阴影弃用警告|UI01|已验收|使用 PCFShadowMap,真实浏览器无 PCFSoftShadowMap 警告|E11|
|
||||
|TRT-DOC01|五轴与RTCP中文教学课件|SW01,GAN01|已验收|原理图/数值/程序对照/实验/练习答案;中文PDF可读、分页和算例核验|E12|
|
||||
|TRT-DOC02|工件坐标与G代码初学者完整讲义|DOC01|已验收|原点/方向/各参考系、G54与RTCP分层、逐字逐行实算、完整A4图文PDF及中文提取核验|E13|
|
||||
190
docs/glb-machine/05-验收证据.md
Normal file
190
docs/glb-machine/05-验收证据.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# 验收证据
|
||||
|
||||
## E13 / 工件坐标与G代码初学者完整讲义
|
||||
|
||||
- [完整PDF](../teaching/rtcp-beginners/五轴RTCP与工件坐标-初学者完整讲义.pdf):72页A4,约2.1MB,中文可选择/搜索,含可点击目录及书签;原31页课件保留。
|
||||
- [内容/命令索引](../teaching/rtcp-beginners/README.md)、[逐页目录](../teaching/rtcp-beginners/outline.json)、[编辑源稿](../teaching/rtcp-beginners/handbook.html)。
|
||||
- [数值证据](../teaching/rtcp-beginners/gcode-evidence.json),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)。
|
||||
- [版面报告](../teaching/rtcp-beginners/verification/layout.json):72页无越界/缺图;新增图形无缺字警告。独立PDF渲染总览:[1–24页](../teaching/rtcp-beginners/verification/pdf-contact-1.png)、[25–48页](../teaching/rtcp-beginners/verification/pdf-contact-2.png)、[49–72页](../teaching/rtcp-beginners/verification/pdf-contact-3.png)。
|
||||
- [PDF汇总](../teaching/rtcp-beginners/verification/acceptance.json),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成品](../teaching/rtcp-five-axis/五轴机床与RTCP-教学课件.pdf):31页,16:9,约1.9MB,中文可选择,字体嵌入,39个目录书签。
|
||||
- [编辑源稿及复现命令](../teaching/rtcp-five-axis/README.md)、[各页目录](../teaching/rtcp-five-axis/outline.json)、[原生数值](../teaching/rtcp-five-axis/numeric-evidence.json)。
|
||||
- [排版检查](../teaching/rtcp-five-axis/verification/layout.json):31页无图文越界/缺图/页面错误。[独立PDF渲染总览](../teaching/rtcp-five-axis/verification/pdf-contact-sheet.png):Poppler渲染实际PDF,不仅检查HTML截图。
|
||||
- [汇总](../teaching/rtcp-five-axis/verification/acceptance.json),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 限位和序列恢复、阴影警告
|
||||
|
||||
```bash
|
||||
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 专项](../../coverage/glb-machine/jog-limits/worker.report.json),report_id=`jog-limit-recovery-v1`,两机型直接轴到50°停止并退回49°;RTCP转C触发Y关节边界,在Y=99.952445mm有效样本停止,队列为空/速度零;反向退出、JOG_STOP、快照和checkpoint恢复通过。失败时只完成请求5个tick中的1个,事件、native游标、任务与scheduler一致;非法cycles后仍可继续。
|
||||
- [浏览器专项](../../coverage/glb-machine/jog-limits/browser.report.json),report_id=`jog-limit-browser-v1`:AC/BC真实按钮按住→到限位→松开→反向→多次Jog全部通过,画面恢复运动且WebGL像素非空,无sequence_gap、无pageerror。[AC恢复画面](../../coverage/glb-machine/jog-limits/ac-recovered.png)、[BC恢复画面](../../coverage/glb-machine/jog-limits/bc-recovered.png)。
|
||||
- [精确恢复](../../coverage/glb-machine/jog-limits/exact-checkpoint.report.json):120个续跑状态hash完全一致,12个恢复后Jog样本、trace/new-session/幂等测试通过。[五轴程序](../../coverage/glb-machine/jog-limits/motion.report.json)两机型均通过。基础scheduler新增部分失败后下一个tick断言,session/replay、单步、旧checkpoint恢复和store保留预览测试均通过。
|
||||
- [阴影警告报告](../../coverage/glb-machine/jog-limits/shadow.report.json):原模型和导入BC均加载,Chrome console warnings=[],不再出现PCFSoftShadowMap弃用警告;[截图](../../coverage/glb-machine/jog-limits/shadow.png)。页面 http://127.0.0.1:5174/,Google Chrome / SwiftShader。
|
||||
- [HEAD复现日志](../../coverage/glb-machine/jog-limits/before.log)保留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` 位于本目录。它们不是本轮回归通过声明,不改生产门控迎合旧断言。
|
||||
- [构建日志](../../coverage/glb-machine/jog-limits/build.log)通过,已有大chunk提示;无C/WASM或上游修改。没有硬件减速/碰撞安全声明,RTCP限位为仿真在最后有效伺服样本停止。
|
||||
- [汇总](../../coverage/glb-machine/jog-limits/acceptance.report.json),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 / 严格解析与浏览器导入
|
||||
|
||||
命令(仓库根目录):
|
||||
|
||||
```bash
|
||||
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`](../../coverage/glb-machine/browser.report.json),report_id=`glb-machine-browser-v1`;日志 [`browser.log`](../../coverage/glb-machine/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](../../coverage/glb-machine/ac-imported.png)、[BC](../../coverage/glb-machine/bc-imported.png)、[桌面](../../coverage/glb-machine/viewport-1440.png)、[手机](../../coverage/glb-machine/viewport-390.png)。真实 WebGL 颜色采样非空,控件无横向溢出,browser_errors=[]。
|
||||
|
||||
## E03 / 原创模型、格式与可复现性
|
||||
|
||||
```bash
|
||||
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`](../../coverage/glb-machine/gltf-validation.report.json),report_id=`glb-machine-khronos-validation-v1`。
|
||||
- [`manifest.json`](../../web/react/public/machines/manifest.json) 包含文件长度、SHA256、原生参数和来源;[`LICENSE.txt`](../../web/react/public/machines/LICENSE.txt) 为原创模型 CC0-1.0 说明。
|
||||
- 实际重复运行生成脚本并逐文件 SHA256 比较,通过;生产构建 GLB 与源 GLB 字节相同。报告 [`reproducibility.report.json`](../../coverage/glb-machine/reproducibility.report.json),report_id=`glb-machine-reproducibility-v1`。
|
||||
- 标准验证器仅临时安装在 /tmp,未向项目新增依赖。
|
||||
|
||||
## E04 / 真实解释器和规划器五轴联动
|
||||
|
||||
```bash
|
||||
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_glb_machine_motion.mjs
|
||||
```
|
||||
|
||||
- 报告 [`motion.report.json`](../../coverage/glb-machine/motion.report.json),report_id=`glb-machine-five-axis-motion-v1`;包含实际 G-code 和采样轨迹;日志 [`motion.log`](../../coverage/glb-machine/motion.log)。
|
||||
- 两机型分别 LOAD_WORKSPACE、PROGRAM_LOAD、开机/回零、PROGRAM_RUN,通过真实 WASM 执行 M428 后同时改变 XYZ 与 A/B、C 的两段 G1,均正常完成。
|
||||
- 每机型有 41 个五轴关节同时改变的采样间隔;42 个姿态投影采样。最大误差:AC `2.2591401799415137e-16`,BC `2.482534153247273e-16` 显示单位(当前 1 单位=100 mm)。
|
||||
- 首次测试按每七个采样间隔抽样,程序较短导致样本数量不足;改为记录全部 RTCP 采样,保持原数量与误差强断言。
|
||||
|
||||
## E05 / 原有功能回归与构建
|
||||
|
||||
```bash
|
||||
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`](../../coverage/glb-machine/regression-parametric/)。
|
||||
- 原内置 AC/BC 各四次 RTCP Jog 回归通过,report_id=`trt-rtcp-jog-browser-v1`,证据 [`rtcp-jog-browser.report.json`](../../coverage/glb-machine/regression-jog/rtcp-jog-browser.report.json)。
|
||||
- 类型检查及生产构建通过;[`build.log`](../../coverage/glb-machine/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`](../../coverage/glb-machine/acceptance.report.json) 汇集实际报告状态、模型与 WASM SHA256、证据文件 SHA256。接续时先核对此文件,再按任务矩阵决定下一步;不要因历史台账中曾写“待办”而重复执行已验收任务。
|
||||
|
||||
## E07 / 模型显示区域与可拖动对话框
|
||||
|
||||
```bash
|
||||
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。
|
||||
- [专项报告](../../coverage/glb-machine/dialogs/dialog.report.json),report_id=`machine-dialog-browser-v1`,status=verified。桌面/手机画布高度 351.5 / 392.5 / 380 px,超过机床面板高度 85%,弹窗不改变 canvas 尺寸。
|
||||
- 两弹窗验证:鼠标移动位移、四边限制、Tab 焦点循环、Esc 关闭/焦点返回、F2 不触发开机、草稿保留;触摸拖动和窗口缩小后不越界;开机编辑门控。
|
||||
- [参数编辑回归](../../coverage/glb-machine/dialogs/parametric/browser.report.json) 与 [GLB 导入回归](../../coverage/glb-machine/dialogs/import/browser.report.json) 均 verified,包含文件导入/下载、参数保存/重读、错误拒绝、两机型运动与手机交互;无页面错误。
|
||||
- [构建日志](../../coverage/glb-machine/dialogs/build.log):类型检查及生产构建通过,大 chunk 提示保留。
|
||||
- 截图:[宽屏机床区域](../../coverage/glb-machine/dialogs/preview-2048.png)、[参数对话框](../../coverage/glb-machine/dialogs/parameters-1440.png)、[手机参数](../../coverage/glb-machine/dialogs/parameters-390.png)、[拖动后的模型对话框](../../coverage/glb-machine/dialogs/machine-glb-settings-dragged.png)。
|
||||
- [本轮验收汇总](../../coverage/glb-machine/dialogs/acceptance.report.json),report_id=`glb-machine-dialog-acceptance-v1`,列出实际证据 SHA256。之前 E02–E06 报告保留,本轮不重跑 native/五轴轨迹专项。
|
||||
|
||||
## E08 / M429/M428 保持物理位置
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
- [修复前失败日志](../../coverage/glb-machine/switching/before.log):`KINEMATICS_SELECT mode=1 J0: 47.97481463927447 != 0`。
|
||||
- [Worker 报告](../../coverage/glb-machine/switching/worker.report.json):report_id=`trt-stationary-switch-worker-v1`,64 次按钮/MDI/重复模式切换,两机型关节及可视投影在 1e-8 mm/deg 容差内保持;规划器/解释器同步,后续 3 个 idle tick、G54 偏置后的增量移动、忙碌/非法模式拒绝通过。
|
||||
- [浏览器报告](../../coverage/glb-machine/switching/browser.report.json):report_id=`trt-stationary-switch-browser-v1`,22 次切换,AC/BC GLB 实际渲染刀尖保持;最大关节误差约 1.50e-13、最大显示坐标误差约 1.45e-15;之后旋转 Jog XYZ 补偿仍有效。
|
||||
- 截图:[BC Identity](../../coverage/glb-machine/switching/bc-identity.png)、[BC TCP](../../coverage/glb-machine/switching/bc-tcp.png)、[AC Identity](../../coverage/glb-machine/switching/ac-identity.png)、[AC TCP](../../coverage/glb-machine/switching/ac-tcp.png)。页面 `http://127.0.0.1:5174/`,Chrome / SwiftShader;browser_errors=[]。
|
||||
- 原 TRT case(新增关节不变强断言)、单步、runtime followups、两机型 RTCP Jog、类型检查及生产构建通过;日志在同目录,大 chunk 提示保留。无 C 修改,无需 native 重建,不扩展为全仓 parity 验收。
|
||||
- [本轮验收汇总](../../coverage/glb-machine/switching/acceptance.report.json),report_id=`trt-stationary-switch-acceptance-v1`,包含 WASM 和所有证据 SHA256。无远程 job_id。
|
||||
|
||||
## E09 / 修改几何参数保留 GLB
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
- [修复前失败](../../coverage/glb-machine/geometry-edit/before.log):`applying geometry must retain imported GLB`,源 hash 变为空。
|
||||
- [新专项报告](../../coverage/glb-machine/geometry-edit/browser.report.json):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`、BC `6.636893469679434e-17` 显示单位,模型计算与画面刀尖投影误差均为 0。
|
||||
- [原 GLB 回归](../../coverage/glb-machine/geometry-edit/import/browser.report.json)(含42项拒绝、36个姿态、8次Jog)和 [内置参数编辑回归](../../coverage/glb-machine/geometry-edit/parametric/browser.report.json)(含桌面手机、保存/导入/重读)通过。
|
||||
- [AC 修改后截图](../../coverage/glb-machine/geometry-edit/ac-edited.png)、[BC 修改后截图](../../coverage/glb-machine/geometry-edit/bc-edited.png);页面 `http://127.0.0.1:5174/`,Chrome / SwiftShader,无 pageerror。
|
||||
- [构建日志](../../coverage/glb-machine/geometry-edit/build.log):类型检查/生产构建通过,大 chunk 提示保留。无 C/WASM 修改,不重复 native 验收。
|
||||
- [本轮汇总](../../coverage/glb-machine/geometry-edit/acceptance.report.json),report_id=`imported-geometry-acceptance-v1`,包含所有证据及 WASM SHA256。E02/E07 中“INI 重读卸载模型”为历史验证,当前行为由 D11/E09 替代。无远程 job_id。
|
||||
|
||||
## E10 / AC、BC 参数化桁架型
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
- [四例入口和结构报告](../../coverage/glb-machine/gantry/catalog.report.json),report_id=`gantry-machine-browser-v1`:四个按钮及下载 hash;新 profile 七 link/Z 工具绑定;XYZ 零位及逐支外形运动,转台和底座不随 XYZ 移动;每新机型3类不合法结构拒绝;桌面/手机控件不溢出,无页面错误。
|
||||
- [几何编辑回归](../../coverage/glb-machine/gantry/geometry/browser.report.json),report_id=`imported-geometry-browser-v1`,gantry 环境运行:两机型共36个姿态/刀长、编辑和INI导入/重读保留桁架、非法输入/运行门控、自定义joint名称、真实RTCP Jog 均通过。
|
||||
- [五轴程序报告](../../coverage/glb-machine/gantry/motion.report.json),report_id=`glb-machine-five-axis-motion-v1`:真实解释器/TP,两桁架各41个五轴同时改变的采样间隔、42个投影样本,最大显示误差小于2.5e-16。
|
||||
- [Khronos 校验](../../coverage/glb-machine/gantry/gltf-validation.report.json):四文件均0错误/0警告。[重复生成报告](../../coverage/glb-machine/gantry/reproducibility.report.json):所有生成文件可复现、生产GLB字节相同、原AC/BC文件SHA不变。
|
||||
- [AC 桁架截图](../../coverage/glb-machine/gantry/ac-gantry.png)、[BC 桁架截图](../../coverage/glb-machine/gantry/bc-gantry.png)、[手机入口](../../coverage/glb-machine/gantry/dialog-390.png);页面 `http://127.0.0.1:5174/`,Chrome / SwiftShader。
|
||||
- [构建日志](../../coverage/glb-machine/gantry/build.log):类型/构建通过,已有大chunk提示保留。[验收汇总](../../coverage/glb-machine/gantry/acceptance.report.json),report_id=`gantry-machine-acceptance-v1`,含模型、WASM与证据SHA。无远程job_id,无上游或native改动。
|
||||
69
docs/glb-machine/06-决策记录.md
Normal file
69
docs/glb-machine/06-决策记录.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# 决策记录
|
||||
|
||||
## D13 / Jog 限位失败不破坏传输历史
|
||||
|
||||
AXIS 限位是坐标范围,JOINT 限位是物理约束,XYZBC 的两者可以不同。Identity 的 XYZ 和各模式的旋转轴直接对应关节,Jog 目标由原生 TP 按两者交集约束;RTCP XYZ 不可用坐标限位替代关节限位,逐伺服样本调用已有 WASM 求解器验证。
|
||||
|
||||
RTCP 到达耦合关节边界时在最后有效样本停止,队列取消并报告限位,可反向退出。本次不声明具备预测未来 RTCP 路径并提前减速的硬件级软限位功能,仍是浏览器仿真边界。
|
||||
|
||||
SIM_STEP 事件的 tick 必须是实际完成/停止时间;不预写未执行的未来时刻,不通过跳过序号或删除历史“修复”会话。部分执行失败时统一 native/JS scheduler、task、protocol 的停止 tick,新的停止和撤退命令正常按顺序执行。限位是 motion blocked,不是 Worker transport ERROR。已经损坏的旧会话需刷新重建。
|
||||
|
||||
## D01 / 两条链与唯一结构来源
|
||||
|
||||
严格采用用户要求的底座-XYZ-主轴箱和底座-A/B-C。URDF 是结构来源;GLB 节点必须匹配,不从视觉网格尺寸猜测运动学。v1 限定现有 WASM 能精确支持的 AC/BC TRT,不将任意 URDF 强行归入该求解器。
|
||||
|
||||
## D02 / 单文件与版本化
|
||||
|
||||
URDF XML 放入默认场景 extras.linuxcncMachine,经 GLTFLoader 成为 userData。schema 必须匹配版本;glb 几何、材质和纹理须内嵌,无外部依赖。额外导出 XML 供阅读,不是运行必需文件。
|
||||
|
||||
## D03 / SI 和坐标转换
|
||||
|
||||
URDF 米/弧度与右手 Z-up;根节点显式转为 glTF Y-up。运行参数转毫米/度;旧查看器坐标转换仅在显示外层执行。姿态投影从关节计算刚体变换,逆解仍由 WASM 执行。
|
||||
|
||||
## D04 / 几何与运行配置
|
||||
|
||||
结构解析得到机型、摇篮位置/偏置,通过现有 INI 参数入口进入 Worker。URDF 不能提供回零接线、加速度或伺服周期,所以沿用已识别机型的运行配置;限位差异显式校验,不默默宣称完整工业控制配置已生成。
|
||||
|
||||
## D05 / 原创资产与可验证性
|
||||
|
||||
现有网上候选未确认所需层级与许可,交付原创可复现程序化资产,记录来源和许可。不复制未知许可证模型。模型是仿真示例,不是制造商尺寸标定数据。
|
||||
|
||||
## D06 / GLB 与 INI 冲突及失败处理
|
||||
|
||||
导入完成格式、树、轴和运动范围校验后才提交 LOAD_WORKSPACE。保留当前程序,不按机型偷偷替换 G-code;配置成功而原程序解析失败属于分阶段结果,必须显式报告。后续 INI 修改或手工切换机型会卸载 GLB,避免旧结构驱动新参数。损坏 GLB 不改变已生效模型及参数。
|
||||
|
||||
## D07 / 刀长与现有原生坐标约定
|
||||
|
||||
`trtfuncs.c` 在逆解中使用 dz + tool-offset。物理摇篮中心不随刀长改变;主轴箱刀尖沿本地 Z 减去 tool-offset,程序参考沿 C 的本地 Z 同样减去该值。多姿态、正负刀长必须用真实 WASM 逆解验证,不能只验证零角姿态。姿态矩阵只用于显示,不替代运动学求解。
|
||||
|
||||
## D08 / 保存与发布范围
|
||||
|
||||
本轮交付文件、导入和当前页面运行。没有将大型 GLB 塞进现有 1 MiB OPFS checkpoint,也不改变其恢复边界;页面明确提示刷新后需重新导入。证据全部归入 coverage/glb-machine;原测试增加可选 TRT_EVIDENCE_DIR,默认行为不变,防止新回归覆写历史验收文件。
|
||||
|
||||
## D09 / 预览优先与对话框交互
|
||||
|
||||
用户要求释放机床显示面积,导入和参数表改为按钮打开的可拖动对话框。保留两个入口在一行,不常驻占用模型高度;不改变左右两类预览比例。采用共享原生 dialog,标题栏拖动并限制在视口内,窗口缩小时重新约束位置。关闭不丢失草稿,不因异步导入开始而自动隐藏结果。打开查看与执行编辑分开,编辑仍由既有 Worker/前端门控控制。
|
||||
|
||||
弹窗内 Esc 专用于关闭,F2/Jog 等全局机床快捷键不执行;F1 急停继续有效。Tab 在弹窗内循环,关闭返回触发按钮。
|
||||
|
||||
## D10 / 空闲运动学切换保持物理关节
|
||||
|
||||
只选择 M429/M428/M430 不构成运动指令。应固定当前实际关节,由新模式正解得到坐标,再同步 TP 与解释器;坐标数值允许改变,三维刀尖不能改变。依据本地 LinuxCNC `control.c::handle_kinematicsSwitch()`:复制 joint.pos_cmd → kinematicsSwitch → kinematicsForward → tpSetPos,以及 [官方 switchkins 同步说明](https://linuxcnc.org/docs/html/motion/switchkins.html)。
|
||||
|
||||
Web 按钮/MDI 原来使用 select() 保持 pose 的策略不符合上述物理约束,改为调用已有 selectPhysical()。不在 Three.js 中补偿错误关节,也不冻结模型掩盖跳变。规划器 pose/tag 必须一起切换,避免中间态逆解;随后解释器同步确保下一条增量命令使用新坐标参考。运行中切换门控保持。
|
||||
|
||||
## D11 / 同机型几何编辑保留导入资产(替代 D06/D08 的卸载策略)
|
||||
|
||||
用户确认:导入 GLB 后修改几何参数不应替换成内置模型。导入资产的网格/材质、文件名和源文件 SHA 保持;当前有效 URDF 是独立的会话参数覆盖,A/B origin=P+D、C origin=-D、work origin=-P。修改、重读或导入同机型 INI 都使用这一路径。
|
||||
|
||||
在 LOAD_WORKSPACE 前构造并校验候选有效 URDF;成功后提交模型参数和界面配置。源场景不原地修改,渲染克隆采用有效 URDF,包括固定工件坐标节点;程序重解析失败时保留已提交模型并明确报告分阶段结果。资源释放依赖源 scene 是否更换,不因结构参数对象变化释放共享网格。
|
||||
|
||||
结构详情显示已应用参数。源 GLB 文件不会被静默改写,示例下载仍是原始示例;可以保存 INI 记录参数。网格外形不自动缩放或重新生成,固定在底座的外观网格仍属于底座;此功能校正结构节点和运动学参数,不宣称对任意导入网格完成 CAD 尺寸重建。显式选择机型配置仍视为更换整机,切换后返回该机型内置模型。
|
||||
|
||||
## D12 / 独立的桁架型 profile 与示例注册
|
||||
|
||||
用户新增桁架型层级到 Z 结束,因此 tool 直接绑定 Z link,主轴作为 Z 下的外观网格,不另设固定主轴箱 link。新 profile `trt-xyz-gantry/1` 为七 link/六 joint;原 `trt-xyz-head/1` 保留八 link/七 joint。模型类型 AC/BC 仍由实际轴向与两条机械链推断,不靠文件名。
|
||||
|
||||
桁架固定四柱与纵轨挂底座,移动横梁挂 X、横梁滑座挂 Y、滑枕/主轴挂 Z;A/B→C 为独立工作台分支。复用原生 TRT 求解器和已有参数映射,不新增 JS 逆解。参数化范围沿用几何中心/轴间偏置及真实关节运动,不增加无实际控制依据的外观尺寸表单。
|
||||
|
||||
四个示例共用 manifest 注册名称和文件路径;旧 AC/BC GLB 字节不变。新例子为原创程序化模型,许可证沿用 CC0,单文件含几何与 URDF。
|
||||
35
docs/glb-machine/README.md
Normal file
35
docs/glb-machine/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# GLB / URDF 五轴机床子项目
|
||||
|
||||
接续顺序:本索引 → [04-任务矩阵](04-任务矩阵.md) → [03-推进台账](03-推进台账.md) 最新轮 → 当前任务相关方案和代码;实施前核对 [06-决策记录](06-决策记录.md),验收后更新 [05-验收证据](05-验收证据.md)。
|
||||
|
||||
最新交付:[工件坐标与RTCP初学者完整PDF](../teaching/rtcp-beginners/五轴RTCP与工件坐标-初学者完整讲义.pdf),72页A4,详解原点/方向/G54/G代码逐字逐行和关节运动;源稿、数据、复现见[完整教材索引](../teaching/rtcp-beginners/README.md)。任务TRT-DOC02,台账R09,证据E13。原[31页投影课件](../teaching/rtcp-five-axis/五轴机床与RTCP-教学课件.pdf)保留为概要;既有功能状态仍见下文R07。
|
||||
|
||||
- [01-子项目功能内容](01-子项目功能内容.md)
|
||||
- [02-子项目程序开发详细步骤](02-子项目程序开发详细步骤.md)
|
||||
- 原专项 [TRT 参数化](../trt-parametric/README.md) 已验收,不重复实现。
|
||||
- 工作区原有 trace、LinuxCNC 子模块、临时脚本和图片全部保留。
|
||||
- 示例交付目录:`web/react/public/machines/`;证据:`coverage/glb-machine/`。
|
||||
|
||||
目标:导入一个含层级网格和 URDF XML 的 GLB,识别 AC/BC 结构、提取几何参数,经 INI/Worker 进入真实 WASM;预览由实际关节驱动。
|
||||
|
||||
Jog 限位与事件序列修复见 R07/E11:限位后可停止和反向退出,旧的 event_sequence_gap 会话需刷新并重新导入/回零。用户补充的 PCFSoftShadowMap 弃用警告也已消除。
|
||||
|
||||
## 当前状态与交付
|
||||
|
||||
GLB-01 至 GLB-06、GLB-UI01/02、TRT-SW01、GLB-GEO01、GLB-GAN01、TRT-JOG02 全部已专项验收,最新台账 R07,最新证据 E11(两项既有旧测试失败单独记录)。新功能尚未提交/推送;开发服务 `http://127.0.0.1:5174/` 已启动,重启环境后应重新检查。
|
||||
|
||||
- [AC 单文件机床模型](../../web/react/public/machines/demo-ac-xyz-head.glb) / [可阅读 URDF](../../web/react/public/machines/demo-ac-xyz-head.urdf)
|
||||
- [BC 单文件机床模型](../../web/react/public/machines/demo-bc-xyz-head.glb) / [可阅读 URDF](../../web/react/public/machines/demo-bc-xyz-head.urdf)
|
||||
- [AC 桁架模型](../../web/react/public/machines/demo-ac-gantry.glb) / [URDF](../../web/react/public/machines/demo-ac-gantry.urdf)
|
||||
- [BC 桁架模型](../../web/react/public/machines/demo-bc-gantry.glb) / [URDF](../../web/react/public/machines/demo-bc-gantry.urdf)
|
||||
- [模型 manifest](../../web/react/public/machines/manifest.json) / [验收汇总](../../coverage/glb-machine/acceptance.report.json)
|
||||
|
||||
使用:打开页面 → 关机且空闲 → 机床预览顶部“导入机床模型” → 对话框中“AC 示例”“BC 示例”“AC 示例桁架型”“BC 示例桁架型”或“导入 GLB” → 确认显示的机型与参数 → 开机、重新回零 → Jog 或运行匹配的五轴程序。可展开结构详情,并通过“下载 AC/BC”保存完整 GLB。页面刷新后需重新导入。
|
||||
|
||||
后续制模先读 01 的契约和完整 XML 示例;软件位置在 03 台账。当前无待办任务,不自动认领旧发布轨道,也不重复已通过测试。若新增任意轴向/头头机型、持久化 GLB 或碰撞检查,应先新增任务和对应决策。
|
||||
|
||||
参数入口为机床预览顶部“机床参数”;两个对话框均可拖动标题栏、Esc 关闭,关闭保留未应用草稿。最新 UI 验收见 [E07 汇总](../../coverage/glb-machine/dialogs/acceptance.report.json)。
|
||||
|
||||
空闲 M429/M428 切换已改为保持关节和刀尖位置,XYZ 数值按新运动学坐标重新计算;证据见 [E08 汇总](../../coverage/glb-machine/switching/acceptance.report.json)。
|
||||
|
||||
导入模型后应用/重读/导入同机型 INI 参数会保留 GLB,并同步有效 URDF 与 WASM;原始 GLB 文件不改写,可通过保存 INI 记录参数。只在显式更换机型时卸载旧模型,见 [E09 汇总](../../coverage/glb-machine/geometry-edit/acceptance.report.json)。
|
||||
Reference in New Issue
Block a user