6.9 KiB
决策记录
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 同步说明。
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。