Skip to content

Releases: gh503/robot-modkit

v1.15.1 · 离线壳热修

Choose a tag to compare

@gh503 gh503 released this 25 Oct 16:24

v1.15.1 · 离线壳热修

修复发布后第一次刷新可能先拿到旧 JS 的问题。

变更

  • Service Worker 对 script / style / worker 改为 network-first,
    网络失败才回退缓存;发布后第一次刷新即可拿到新版。
  • 导航仍 network-first;图片/模型仍 stale-while-revalidate,离线仍可用。
  • 缓存版本 modkit-shell-v1.15.1 与包版本同步,测试拦漂移。
  • 测试仍 280。

验证

  • 浏览器实测:SW 更新到 v1.15.1 后,同价减重 3 个候选正常显示,无控制台异常。
  • make check 全绿;280 项 pytest。
  • 发布包 SHA256 见 SHA256SUMS。

边界

  • 首次离线访问仍需在线;只缓存同源 GET。
  • 仍是软件装配验证;物理闸门 0/5。

v1.15.0 · 同价减重候选

Choose a tag to compare

@gh503 gh503 released this 25 Oct 16:15

v1.15.0 · 同价减重候选

预算优化器不只回答“怎么更便宜”,也能回答“成本不变怎么更轻”。

新增

  • suggest(include_mass=True) / CLI --mass / BOM 页“同价减重”:
    • 默认仍只列 BOM 成本严格下降的候选;
    • 勾选后额外保留成本不升、重量下降的候选。
  • m1 的 240→160 底盘:
    • 成本 ¥1127.4 不变;
    • 重量 1853.8→1773.8g(-80g);
    • 18 组件/4 关节仍通过校验;支撑面变小,风险 high。
  • 候选卡显示“成本不升 · 省重 80g”;Markdown 报告新增“省重 g”列。
  • 规划 plan() 仍只按预算优化,不把减重当目标。
  • 测试 278 → 280。

边界

  • 同价减重只覆盖替换表里“成本不升”的结构替换,不是拓扑优化。
  • 仍是软件装配验证;没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;280 项 pytest;7 个装配预设 PASS。
  • JS/Python/CLI 三端对同价减重候选结果一致。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/68-预算优化器.md

v1.14.0 · 规划报告、截断提示与可访问性

Choose a tag to compare

@gh503 gh503 released this 25 Oct 16:08

v1.14.0 · 规划报告、截断提示与可访问性

这一版主要是把“结果可信”和“能用键盘/无 JS 也能理解”补齐。

新增

  • 规划报告:预算报告可包含“目标规划”段(目标、每步成本、可达/未达标、仍差多少)。
  • 截断诚实提示:精确搜索达到 200 节点上限时,规划卡/报告/CLI 都明确标记
    “可能不是全局最优”,不再把截断结果当完整最优。
  • 标签页键盘导航:←/→/Home/End,维护 aria-selected / tabindex。
  • noscript:Studio 和 3D 查看器在禁用 JS 时给出说明。
  • SW 版本同步:sw.js 缓存版本必须等于包版本,测试拦截漂移。

边界

  • 截断提示不扩大搜索范围;仍是候选表 + 深度/节点上限。
  • 仍是软件装配验证;没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;278 项 pytest;7 个装配预设 PASS。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/67-网页设计器.md · docs/68-预算优化器.md

v1.13.0 · 分享、离线与导入校验

Choose a tag to compare

@gh503 gh503 released this 25 Oct 16:03

v1.13.0 · 分享、离线与导入校验

Studio 从“能算”补到“能带走、能断网打开、坏数据不崩”。

新增

  • 分享链接
    • 顶部“分享”把当前装配编码进 URL hash(#d=...)并复制;
    • 打开链接自动载入并重新求解;
    • 超过 60000 字符拒绝,提示导出 JSON。
  • PWA 离线壳
    • manifest.webmanifest / pwa.js / sw.js;
    • 缓存 Studio 壳和组件数据,导航 network-first,静态资源 stale-while-revalidate;
    • 断网刷新实测仍能打开并求解(首次访问需在线)。
  • 导入/恢复形状校验
    • MODKIT_ASSEMBLY.check() 在 validate() 前检查 JSON 对象、非空 components、
      id 唯一、type 存在、parent 引用、at/rot/spin 数值、根组件恰好 1 个;
    • 导入和本地草稿都会先过这一层,错误显示前几条。
  • 本地草稿元数据
    • localStorage 存 {schema, savedAt, assembly},兼容旧裸装配格式。
  • 测试 276 → 278。

边界

  • 分享链接是快照;后续编辑不会自动改写已复制的链接。
  • 离线首次访问仍需在线;Service Worker 只缓存同源 GET。
  • 仍是软件装配验证;没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;278 项 pytest;7 个装配预设 PASS。
  • 浏览器 QA:分享链接往返、hashchange 载入、断网刷新、无控制台异常。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/67-网页设计器.md

v1.12.0 · 精确预算规划

Choose a tag to compare

@gh503 gh503 released this 25 Oct 15:56

v1.12.0 · 精确预算规划

预算规划不再只看“当前这一步最省”,而是在候选树里找步数最少、成本最低的达标路径。

变更

  • plan()(web/budget-core.js / software/modkit/optimizer.py)从贪心改为
    深度受限穷举:
    • 优先步数最少的达标路径;
    • 同一步数再选成本最低;
    • 默认最多 4 步(CLI --max 可到 8),候选树节点上限 200;
    • 超限返回 truncated=true 和当前最优,不假装搜完。
  • 网页“规划达标”和 CLI --goal 自动使用精确搜索,接口不变。
  • m1 目标 ¥1000 仍是一步 ¥968;目标 ¥900 仍显示 ¥964.4 / 差 ¥64.4。
  • 测试 275 → 276(新增节点上限/truncated 回归)。

边界

  • “精确”只相对于当前替换候选表和深度/节点上限,不是无限制全局最优。
  • 仍是软件装配验证;没有动力学/网格碰撞/运动后干涉。
  • 没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;276 项 pytest;7 个装配预设 PASS。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/68-预算优化器.md

v1.11.0 · 目标预算规划

Choose a tag to compare

@gh503 gh503 released this 25 Oct 15:19

v1.11.0 · 目标预算规划

优化器现在能回答“按我的预算,能不能到、要怎么到”。

新增

  • 规划达标(网页 BOM 页)
    • 读取 budget_cny,最多走 4 步单步候选
    • 可达:列出每一步,点“应用全部”一次写入,记一步撤销
    • 不可达:明确显示最多到多少、还差多少,不显示“应用全部”
  • CLI --goal
    modkit assemble suggest assemblies/m1.json --goal 1000
    # 1 步可达 ¥968
    
    modkit assemble suggest assemblies/m1.json --goal 900
    # 2 步最多到 ¥964.4,仍差 ¥64.4
    
    modkit assemble suggest assemblies/m1.json --goal 1000 \
      --apply-plan --out /tmp/m1-plan.json
    # 写出 -plan.json,可继续 validate/plan
  • --json 输出纯 JSON 规划元数据(不含完整 assembly)。
  • 每一步仍重新走 assembly.validate;网页/CLI 结果一致。
  • 测试 272 → 275。

边界

  • 规划是贪心:每步选节省最大,不是全局最优;可能错过“两步组合更省”的路径。
  • 不可达通常意味着需要结构改动,而不是继续换小件。
  • 没有动力学/网格碰撞/运动后干涉。
  • 没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;275 项 pytest;7 个装配预设 PASS。
  • 规划回归:m1 ¥1000 一步 ¥968;m1 ¥900 两步 ¥964.4 / 差 ¥64.4。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/68-预算优化器.md

v1.10.0 · 预算报告与撤销/重做

Choose a tag to compare

@gh503 gh503 released this 25 Oct 15:10

v1.10.0 · 预算报告与撤销/重做

优化器现在有完整的“看—试—回”闭环:看候选、试应用、回退。

新增

  • 预算报告导出(网页)
    • BOM → 预算优化 → 导出报告
    • 下载 Markdown:当前 BOM + 每条候选的节省、应用后成本、组件/关节、风险、代价
    • 与 CLI modkit assemble suggest --out report.md 同用途
  • Studio 撤销/重做
    • 顶部 ↶/↷,或 Ctrl+Z / Ctrl+Shift+Z / Ctrl+Y
    • 最多 40 步装配快照
    • 加件/换件/删件/应用参数/应用优化候选/载入预设都记一步
    • 撤销后继续编辑会截断 redo 分支
    • 历史只在当前会话,不写 localStorage
  • web/budget-core.js 增加 reportMarkdown()
  • 测试 271 → 272

边界

  • 撤销只回滚网页装配 JSON,不回滚已导出的文件或相机视角。
  • 历史不持久化;刷新后重置为当前草稿。
  • 优化器仍是单步候选,不是全局最优。
  • 没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;272 项 pytest;7 个装配预设 PASS。
  • 浏览器 QA:撤销/重做(含 Ctrl+Z / Ctrl+Shift+Z)、优化报告下载、无控制台异常。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/67-网页设计器.md · docs/68-预算优化器.md

v1.9.0 · CLI 预算优化器

Choose a tag to compare

@gh503 gh503 released this 25 Oct 15:03

v1.9.0 · CLI 预算优化器

v1.8 的预算优化器现在不只活在网页里。命令行也能生成同一批候选、写报告、直接产出新装配 JSON。

新增

# 列出候选
modkit assemble suggest assemblies/m1.json

# 纯 JSON 元数据(可直接 pipe 给 jq)
modkit assemble suggest assemblies/m1.json --json

# Markdown 报告
modkit assemble suggest assemblies/m1.json --out /tmp/budget.md

# 应用候选,写新装配
modkit assemble suggest assemblies/m1.json \
  --apply drop-elbow --out /tmp/m1-opt.json

# 继续正常流程
modkit assemble validate /tmp/m1-opt.json
modkit assemble plan /tmp/m1-opt.json --out cad/out/m1-opt
  • software/modkit/optimizer.py:与 web/budget-core.js 同语义的单步候选;
    每个候选重新 assembly.validate,按 BOM 节省 排序。
  • m1 的 drop-elbow:18→15 组件、4→3 关节、¥1127→¥968。
  • --apply 不覆盖原文件;新 JSON 名字自动加 -opt,描述记录来源候选。
  • 网页端 BOM → 预算优化保持同步;两端对 7 个预设的候选结果一致。
  • 测试 269 → 271。

边界

  • 单步候选,不是全局最优;没有组合搜索/多目标加权。
  • 仍然是软件装配验证:AABB 粗碰撞/静载/质量/功率;没有动力学、网格碰撞、
    运动后干涉。
  • 去掉肘关节是能力裁剪,不是免费降本。
  • 没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;271 项 pytest;7 个装配预设 PASS。
  • CLI:suggest、--json、--out、--apply 均实测;写出的 JSON 再校验 PASS。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/68-预算优化器.md

v1.8.0 · 预算优化器

Choose a tag to compare

@gh503 gh503 released this 25 Oct 14:50

v1.8.0 · 预算优化器

在线:https://gh503.github.io/robot-modkit/design.html → BOM → 预算优化

v1.7 只告诉你"超了 ¥127";v1.8 开始告诉你:哪一步替换最省钱,而且还能装上。

新增

  • web/budget-core.js:纯函数候选生成器
    • 去掉肘关节(把末端工具直接装回父件)
    • 换更小的甲板/立柱/方梁/夹爪
    • 每个候选重新走 MODKIT_ASSEMBLY.validate,只保留校验通过且 BOM 成本严格下降的项
  • BOM 页新增 生成降本候选:
    • 显示:省多少钱、代价、应用后的成本/组件数/关节数
    • 点"应用"后重新校验、重新生成剩余候选
    • 名字加 -opt,描述记录来源候选,自动保存到 localStorage
  • 示例:
    • m1:18 组件 / 4 关节 / ¥1127 → 15 组件 / 3 关节 / ¥968
    • arm_4dof:14 → 9 组件、¥869 → ¥562;标题会明确写"及下游 wrist"
  • 测试 268 → 269;7 个预设仍全部 PASS。

一个刻意的反例

frame.chassis_240 → frame.chassis_160 的组件标价不同,但 BOM 里两者都是 3 块底盘板,
报价不会降。候选按 BOM 合计判断,所以不会展示这种"看起来便宜"的替换。

边界

  • 单步候选,不是全局最优;没有组合搜索/多目标加权。
  • AABB/静载子集;没有动力学、网格碰撞、运动后干涉。
  • 去掉肘关节是能力裁剪,不是免费降本;UI 用 high risk 标出。
  • 仍没有采购/打印/装配/上电/标定;物理闸门 0/5。

验证

  • make check 全绿;269 项 pytest;7 个预设 PASS。
  • 浏览器 QA:7 预设生成候选、应用 m1 两关节候选、应用方梁候选、无控制台异常。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/68-预算优化器.md

v1.7.0 · 预算模式与 m1_budget

Choose a tag to compare

@gh503 gh503 released this 25 Oct 14:25

v1.7.0 · 预算模式与 m1_budget

在线:https://gh503.github.io/robot-modkit/design.html

这一版回答一个很具体的问题:¥1000 以内到底能做出什么? 不把完整 M1 说成"降价就能做",而是给一个任务范围明确的裁剪方案。

新增

  • m1_budget 装配:240 底盘 + yaw + shoulder + 固定 upper 100mm 梁 + 40mm 夹爪
    • 15 组件 / 5 舵机 / 1649g / ¥968
    • 两关节定点抓放:没有肘关节,不能改变臂展;只能抓放与肩关节同一半径上的站点
    • 没有相机/树莓派,不能做视觉识别;是固定工位/示教抓放,不是自主任务
    • 这是有意识的裁剪,不是"三关节也能随便抓"
  • Studio 预算模式:
    • budget_cny 默认 ¥1000,可编辑;
    • 校验 pill / HUD / 指标 / BOM 都显示"余 ¥32"或"超 ¥127";
    • 导出 JSON 会带上预算字段;m1 完整版自动红色显示超支。
  • 7 个预设:m1_budget ¥968、mini_rover ¥653、pan_tilt ¥506、arm_4dof ¥869、wide_gripper ¥721、sensor_tower ¥256、m1 ¥1127。
  • 测试 267 → 268;文档 65/67、README、CHANGELOG 同步。

边界

  • 预算字段只用于设计决策,不改变 BOM 计算,也不会让不合法的装配变合法;最终报价仍要供应商复核。
  • m1_budget 没有相机/视觉,不能自主识别目标;仍是软件装配验证,没有采购/打印/装配/上电/标定;物理闸门 0/5。
  • 网页动画是运动学示意,不是动力学;装配 STL 是简化网格,不是精确参数化装配。

验证

  • make check 全绿;7 个装配预设全部 PASS。
  • 浏览器 QA:7 预设、预算编辑、超支显示、JSON 导出(version 1.7.0)。
  • 发布包 SHA256 见 SHA256SUMS。

详细说明:docs/67-网页设计器.md