Files
Web_FreeCAD_Bitbybit/docs/cam-native-kernel-pipeline.zh-CN.md

7.8 KiB
Raw Blame History

CAM 原生内核流水线实施与任务分解

更新日期2026-08-07

强制执行顺序

CAD 几何
  -> OpenCAMLib WASM 刀位算法
  -> CAMotics 源码阶段运动契约
  -> 生成规范 G-code
  -> LinuxCNC WASM 解析、控制器语义、执行与验收

CAMotics 不解析流水线产生的规范 G-code。唯一的 G-code 解析和控制器语义权威是 LinuxCNC WASM。

已落地能力

任务 状态 实现与证据
CAM-NATIVE-01 OpenCAMLib 完成 上游提交 95b036fe28ce6d77c97b98e5fbc337904ae49560 通过 Emscripten 3.1.69 构建;浏览器执行 PathDropCutter,不是 TypeScript 重写算法。
CAM-NATIVE-02 OCL 制品门禁 完成 public/vendor/opencamlib/ocl.js 为单文件嵌入 WASMSHA-256 为 0379040910f7af277c6e1f6411efb549292db0b071422a83954d93631253bf89
CAM-NATIVE-03 CAMotics 源码阶段 完成(源码契约) 锁定 CAMotics 提交 e84665f2fa9d1151f03282ac7e01320bc65e015b,依据 GCodeMachine.cppstartchangeToolsetFeedmoveend 语义生成 G-code适配层不解析输出。
CAM-NATIVE-03B CAMotics 原生构建 完成Qt5 GUI + TPL + CLI CAMotics e84665f2... 使用官方 C! 9b6672a0...、Qt5、V8 ABI v8_compress_pointers=0 构建 CAMotics/camoticsCAMotics/tplangcamsimgcodetoolplannerbuild/camotics.soGUI/TPL 哈希、动态 Qt/V8 依赖、官方 TPL 10/10 测试和 Xvfb 主窗口1200x800、可见均通过 config/camotics-native-artifact.json
CAM-NATIVE-03C CAMotics 独立 WASM 内核 完成(扫掠子集) 直接编译上游 Sweep.cppConicSweep.cppSpheroidSweep.cpp 为零 imports 的 standalone WASMChrome 150 实际加载并执行 Conic/Spheroid depth、长段包围盒和确定性回放。
CAM-NATIVE-04 OCCT 材料去除 完成(当前模型) 使用 Bitbybit OCCT WASM 创建库存与切削工具并执行 BRep 布尔差;浏览器验证剩余体为结构有效单实体,可导出 BRep。
CAM-NATIVE-05 Chrome 验收 完成 Chrome 150 中 OCL 14 个刀位点、18 行 G-code、库存体积 300、去除体积 12、剩余体积 288、释放后内核引用为 0。
CAM-NATIVE-06 主链 OCL 接管 完成(认证机型) prepareCamPipeline 强制调用上游 PathDropCutter,以 48 个 OCL 刀位点驱动 CAMotics 源码阶段和 LinuxCNC XYZBC G-code未提供 runner 时不会静默回退。

当前材料去除模型是确定性采样的平底刀 BRep 模型。轴向水平直线使用单个连续段包络,任意采样折线使用定向圆柱与端点球的连续段 BRep sweep它是原生 OCCT 实体布尔,但不是 FreeCAD 原生 Path 材料去除的等价实现,能力报告固定为 freeCadNativeEquivalent: false

LinuxCNC WASM 接管

cnc_wams_gpt6/linuxcnc-master/web/src/app.js 已提供受控 postMessage bridge。父页面只能发送已经生成的 G-codeLinuxCNC 页面等待 machine case ready 后调用原生 loadProgram,由 LinuxCNC WASM 上游解释器生成轨迹,再按请求决定是否 run;返回结果固定带有 backend: linuxcnc-wasmparserAuthority: linuxcnc-wasm。父页面不接收或替代 RS274 解析,也不把 CAMotics parser 放入执行链。

真实边界

  • OpenCAMLib上游算法已作为浏览器 WASM 执行。
  • CAMotics工作区已具备通过哈希、Qt5/V8 动态链接、官方 TPL 测试和真实 Xvfb 窗口冒烟验证的 1.3 原生 GUI/TPL并保留 camsimgcodetoolplanner 和 Python 模块作为宿主 CLI/sidecar同时有直接来源编译的 standalone sweep WASM浏览器可执行该内核子集但不是完整 Qt/TPL/程序运行时。
  • CAMotics 解析边界:原生 camsim 只在独立冒烟证据中消费仓库示例。规范生产链仍由源码运动契约生成 G-code并直接交 LinuxCNC WASM不得把 CAMotics parser 提升为第二套规范解析器。
  • CAMotics 浏览器边界:public/vendor/camotics/camotics-sweep.wasm 只包含上游扫掠数学和包围盒,不包含 G-code parser、TPL、Qt、文件系统或完整原生 GUI。能力报告将 browserWasmKernelExecutable=truebrowserExecutable=false 分开记录Qt5 GUI/TPL 仅在宿主进程中可用。
  • LinuxCNC WASM桥接已接入根应用和 LinuxCNC 页面Chrome machine acceptance 已在重建后的 LinuxCNC WASM 产物上通过报告保留解析块、轨迹段、RTCP 模态和限位结果;同一份程序已分别通过 dry-runrun
  • 连续工具轴:所选 XYZBC table-rotary-tilting 数字机型已完成;其他机型、完整奇异点 oracle 和生产授权仍关闭。LinuxCNC web/evidence/production-safety-gate-matrix.json 已覆盖 6 个 5 轴 INI所有 gate fail-closedproductionOpen=false,没有实体运动或计量认证。
  • 曲线扫掠Chrome 已验证 continuous-segment-sweep-brep 的结构有效单实体和非零去料;解析 NURBS/圆弧的无弦误差 sweep、刀柄/夹具实体 oracle 仍开放。

后续任务安排

优先级 任务 验收条件 状态/所有者
P0 CAM-PIPE-01 LinuxCNC WASM 接管 将本模块生成的 G-code 送入 LinuxCNC WASM记录解析块、模态状态、刀具/进给、执行轨迹及限位结果;不得调用 CAMotics parser。 已完成(认证机型)
P0 CAM-PIPE-02 端到端一致性 比较 OCL 刀位、生成 G-code、LinuxCNC WASM 执行轨迹;建立坐标、单位、模态与容差门禁。 已完成Chrome 认证链;泛化容差继续)
P1 CAM-SIM-01 CAMotics 原生构建 安装并锁定 C!/SCons构建 Qt5 camotics GUI、tplangcamsimgcodetoolplanner 与 Python 模块提供提交、编译器、Qt/V8 动态依赖、制品哈希、官方 TPL 测试和 Xvfb 窗口冒烟证据。 已完成(宿主 Qt5 GUI/TPL/CLI浏览器集成保持边界
P1 CAM-SIM-02 CAMotics standalone WASM 从锁定上游 C++ sweep 源码构建零 imports WASM提供 ABI、制品哈希、Node 和 Chrome 实际执行证据;禁止引入第二套规范 G-code parser。 已完成sweep 子集;完整程序继续)
P1 CAM-MR-02 任意曲线路径扫掠 对 OCL 采样段执行连续段 BRep sweep定向圆柱 + 端点球并集),每个结果通过 OCCT BRep 结构校验;解析任意曲线的无弦误差 sweep 继续保留。 已完成continuous-segment 子集;解析任意曲线仍开放)
P1 CAM-5AXIS-01 连续工具轴 接入机床运动学、姿态连续性、奇异点和关节限位求解,并由 LinuxCNC WASM 执行轨迹验收。 已完成XYZBC 数字机型;泛化姿态/奇异点和其它机型生产门仍开放)
P1 CAM-FCSTD-01 Path 对象往返 Path Job、ToolBit、ToolController、Operation 和命令列表执行 FCStd 双向 round-trip并与 FreeCAD oracle 比较。 待 FCStd 所有者完成

验证命令

./npmw run build:camotics-native
./npmw run check:camotics-native
./npmw run build:camotics-wasm
./npmw run check:camotics-wasm
./npmw run test:camotics-wasm
./npmw run test:chrome-camotics-wasm
./npmw run check:chrome-camotics-wasm
node scripts/check-opencamlib-wasm.mjs
./npmw exec tsx -- --test tests/camNativeSimulation.test.ts
./npmw exec tsc -- --noEmit
node scripts/run-chrome-cam-native-simulation.mjs
node scripts/check-chrome-cam-native-simulation.mjs
npm run test:chrome-cam-linuxcnc-machine
npm run check:chrome-cam-linuxcnc-machine

机器可读证据位于 config/camotics-native-artifact.jsonconfig/camotics-wasm-artifact.jsonconfig/chrome-camotics-wasm-verification.jsonconfig/opencamlib-wasm-artifact.jsonconfig/chrome-cam-native-simulation-verification.jsonconfig/chrome-cam-linuxcnc-machine-verification.json 与 LinuxCNC web/evidence/digital-machine-five-axis-certification.json