接上一轮,按接续文件继续执行
结论:Three.js 程序预览和刀具执行显示已收口,公网 HTTP/IP 下 Save/Restore Session 已支持 memory-fallback 降级并通过 node/browser gate。
This commit is contained in:
93
备忘/备忘1.txt
93
备忘/备忘1.txt
@@ -1,40 +1,91 @@
|
||||
wasm-port/docs/porting-steps-standalone.md 的 Phase 9/10 继续推进,并直接补上第一批独立 kinematics WASM ABI。
|
||||
做全量 kinematics ABI
|
||||
需要完善的内容,做个备忘
|
||||
按 web-rtcp-5axis-sim-plan/docs/native-task-hal-sync-implementation-steps.md 的边界要求,本次只处理 Web Three.js 可视化层,不改 LinuxCNC task/HAL runtime 语义。
|
||||
|
||||
完成内容:
|
||||
新增独立 kinematics WASM C ABI:[linuxcnc_kinematics_wasm.c](/home/cnc/桌面/cnc_wams/wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_kinematics_wasm.c)
|
||||
Three.js 三维显示区改为 toolpath-only:删除画布内地板、网格、坐标轴、机床包络、转台、刀具实体,只保留刀具预览路径线。
|
||||
|
||||
新增构建脚本:[build_kinematics_wasm.sh](/home/cnc/桌面/cnc_wams/wasm-port/tools/build_kinematics_wasm.sh)
|
||||
补齐 Three.js 相机交互:
|
||||
- 鼠标左键/单指拖动:旋转
|
||||
- 鼠标中键、右键或 Shift+拖动:平移
|
||||
- 鼠标滚轮:缩放
|
||||
- 双指:缩放并平移
|
||||
- X/Y/Z/Fit 按钮:预设视角/复位视角
|
||||
|
||||
新增 SDK:[linuxcnc-kinematics.js](/home/cnc/桌面/cnc_wams/wasm-port/runtime/sdk/src/linuxcnc-kinematics.js)
|
||||
并从 [index.js](/home/cnc/桌面/cnc_wams/wasm-port/runtime/sdk/src/index.js) 导出
|
||||
|
||||
新增 Node/WASM smoke:[verify_kinematics_wasm.sh](/home/cnc/桌面/cnc_wams/wasm-port/tests/wasm/node/verify_kinematics_wasm.sh)
|
||||
[verify_kinematics_wasm.mjs](/home/cnc/桌面/cnc_wams/wasm-port/tests/wasm/node/verify_kinematics_wasm.mjs)
|
||||
边界说明:
|
||||
这次没有提升 nativeTaskReady/nativeHalSyncReady;它仍属于 Web simulation UI 显示层调整。task/HAL native/WASM 边界仍需继续按执行文档阶段 0-8 推进。
|
||||
|
||||
更新文档:[porting-steps-standalone.md](/home/cnc/桌面/cnc_wams/wasm-port/docs/porting-steps-standalone.md)
|
||||
[README.md](/home/cnc/桌面/cnc_wams/wasm-port/runtime/sdk/README.md)
|
||||
|
||||
写入新接续文件:[text39.txt](/home/cnc/桌面/cnc_wams/textbak/text39.txt)
|
||||
继续按 web-rtcp-5axis-sim-plan/docs/native-task-hal-sync-implementation-steps.md 边界推进 Three.js 显示层:程序预览和刀具执行过程已显示在 Three.js 区域。
|
||||
|
||||
完成内容:
|
||||
Three.js 区域现在同时显示:
|
||||
- 完整程序预览路径:来自 state.programExecution.motion,也就是 LinuxCNC interpreter/WASM canonical motion events。
|
||||
- 已执行路径:优先来自 state.programExecutionTiming.samples,也就是 LinuxCNC TP queue runtime timing samples;没有 samples 时回退到 canonical motion 端点。
|
||||
- 当前刀具/TCP 执行标记:来自 state.programRuntimeFeedback.axisPose / task-HAL runtime feedback,并显示刀轴方向线。
|
||||
- 快速移动路径辅助层:从 canonical motion 中的 STRAIGHT_TRAVERSE 提取。
|
||||
|
||||
保留功能:
|
||||
- 鼠标/触控旋转、平移、缩放仍可用。
|
||||
- X/Y/Z/Fit 预设视角仍可用。
|
||||
- Clear 会同步清空完整预览路径和已执行路径。
|
||||
|
||||
实现文件:
|
||||
[five-axis-scene.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/visualization/five-axis-scene.js)
|
||||
[gmoccapy_shell_smoke.html](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html)
|
||||
|
||||
新增可观测状态:
|
||||
canvas.dataset.threeSceneMode=program-preview-and-tool-execution
|
||||
canvas.dataset.threeProgramPreviewSource=linuxcnc-interpreter-wasm / linuxcnc-machine-file-remap-wasm / fixture-line-playback
|
||||
canvas.dataset.threePathPoints=完整程序预览点数
|
||||
canvas.dataset.threeExecutedPathPoints=已执行路径点数
|
||||
canvas.dataset.threeToolExecutionMarker=true/false
|
||||
|
||||
当前生成的独立 kinematics WASM 产物:
|
||||
linuxcnc_xyzac_trt_kinematics.js
|
||||
linuxcnc_xyzac_trt_kinematics.wasm
|
||||
linuxcnc_xyzbc_trt_kinematics.js
|
||||
linuxcnc_xyzbc_trt_kinematics.wasm
|
||||
验证已通过:
|
||||
EMSDK_QUIET=1 source /home/cnc/emsdk/emsdk_env.sh >/dev/null && wasm-port/tests/wasm/node/verify_kinematics_wasm.sh
|
||||
输出包含:
|
||||
kinematics_wasm_node_smoke=ok
|
||||
准确状态现在是:xyzac-trt / xyzbc-trt TRT kinematics 独立 WASM ABI 已完成第一批;但不能说 LinuxCNC 所有逆解算法都已完整移植到 WASM。全量 kinematics family 仍需继续逐个按 native probe -> 独立 WASM module -> SDK smoke 的路径补齐。
|
||||
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
|
||||
|
||||
边界说明:
|
||||
Three.js 不解析 G-code,不手写 LinuxCNC 运动语义;只消费已有 LinuxCNC interpreter canonical motion、TP timing samples、task/HAL runtime feedback。nativeTaskReady/nativeHalSyncReady 的提升仍按执行文档阶段任务另行完成。
|
||||
|
||||
|
||||
我先确认当前程序执行数据从哪里来,以及 LinuxCNC 示例程序在仓库里如何被加载。目标是让 Three.js 区域既能显示完整程序预览路径,也能显示执行中的刀具位置/已执行轨迹,并尽量复用已有 interpreter/task/HAL 输出,不手写新的 CNC 语义。
|
||||
|
||||
|
||||
文档更新会比较小:把 “下一步要做 Worker/store” 改为 “已接线”,把当前边界标为 Web simulation promoted,同时仍明确 hardware/realtime kernel/external user-M/tool DB 不支持。历史 M18/M13 记录不改。
|
||||
|
||||
|
||||
公网测试已经跑到一个明确失败点:Save Session 在 http://82.156.24.101:8092 下抛出 OPFS is not available in this browser。这类浏览器存储 API 在公网 HTTP/IP 环境不是安全上下文,很多“保存、恢复、暂存机床文件、完整边界审计”都会受影响;我会继续把其余功能用异常隔离方式跑完,确认还有没有独立问题。
|
||||
|
||||
|
||||
代码确认了:会话保存和机床文件暂存都硬依赖 OPFS。公网 HTTP/IP 不满足安全上下文,因此这些功能天然不可用;我会先用降级后的脚本继续测试不依赖 OPFS 的操作功能,再给出完整问题清单。
|
||||
|
||||
本轮继续处理公网 HTTP/IP 测试失败点:Save Session 在 http://82.156.24.101:8092 下因 OPFS 不可用报错。
|
||||
|
||||
完成内容:
|
||||
- five-axis session runtime 现在会优先使用 OPFS;如果当前浏览器没有 navigator.storage.getDirectory,则自动使用页面内存会话存储。
|
||||
- Save Session / Restore Session 返回并记录 storageMode:
|
||||
- opfs:安全上下文下的 OPFS 持久化;
|
||||
- memory-fallback:公网 HTTP/IP 等无 OPFS 环境下的页面内存后备;
|
||||
- memory:测试显式注入的内存存储。
|
||||
- gmoccapy 信息面板 Session 行现在显示 status / storageMode / path,避免把 memory-fallback 误认成 OPFS 持久化。
|
||||
- browser smoke 覆盖默认 Save/Restore 按钮路径,确认无 OPFS 环境不会再抛出 “OPFS is not available in this browser.”。
|
||||
|
||||
实现文件:
|
||||
[five-axis-session.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/five-axis-session.js)
|
||||
[store.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/store.js)
|
||||
[gmoccapy-shell.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js)
|
||||
[verify_five_axis_session.mjs](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs)
|
||||
[gmoccapy_shell_smoke.html](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html)
|
||||
|
||||
验证已通过:
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
|
||||
|
||||
边界说明:
|
||||
memory-fallback 只解决公网 HTTP/IP 下“当前页面生命周期内保存/恢复会话”的可用性,不声称提供 OPFS 持久化。机床文件暂存、完整边界审计中仍硬依赖 OPFS 的部分,公网 HTTP/IP 下还需要继续按功能逐项降级或标记 blocked。
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user