Files
KDL_WORK/working1/03-推进台账.md
2026-06-28 08:20:33 +08:00

255 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 03-推进台账
版本0.1
日期2026-06-27
## 1. 记录规则
每轮推进必须记录:
1. 本轮目标。
2. 做了什么。
3. 改了哪些文件。
4. 验证了什么。
5. 问题和风险。
6. 下一步。
## 2. 推进记录
### 轮次 001
日期2026-06-27
关联任务:`A120-000`
本轮目标:根据用户要求创建 `/home/meswork/kdl_work/working1` 需求与开发指导文档,覆盖 ABB120 URDF 全面测试、跨品牌转换、离线编程验收和 HTML 虚拟控制器。
做了什么:
1. 读取当前仓库中的 ABB120 fixture`kdl-wasm/web/tests/fixtures/abbIrb120.ts`
2. 读取当前 ABB120 集成测试:`kdl-wasm/web/tests/integration/abb120Programs.test.ts`
3. 读取当前后处理、品牌导入、虚拟控制器和工作台 facade 相关实现与测试。
4. 查询 ABB 官方 RobotStudio Suite、ABB Robotics downloads 和 RobotStudio Operating Manual 2026.2,用于约束 HTML 虚拟控制器的信息架构对标范围。
5. 创建 `working1` 文档集,明确本目录是需求与开发指导,不宣称实现已完成。
改了哪些文件:
1. `/home/meswork/kdl_work/working1/README.md`
2. `/home/meswork/kdl_work/working1/01-项目功能内容.md`
3. `/home/meswork/kdl_work/working1/02-项目程序开发详细步骤.md`
4. `/home/meswork/kdl_work/working1/03-推进台账.md`
5. `/home/meswork/kdl_work/working1/04-任务矩阵.md`
6. `/home/meswork/kdl_work/working1/05-验收证据.md`
7. `/home/meswork/kdl_work/working1/06-决策记录.md`
验证了什么:
1. `working1` 目录存在且原为空目录。
2. ABB120 fixture 中存在 `ABB_IRB120_3_58_URDF``ABB_IRB120_LOAD_OPTIONS`
3. 当前仓库已有 ABB120 集成测试、三品牌后处理、三品牌导入、虚拟控制器和工作台 facade可作为后续实现基础。
问题和风险:
1. 当前仓库没有独立 ABB120 `.urdf` 文件,需求以 TypeScript fixture 内嵌 URDF 为基准。
2. HTML 虚拟控制器尚未实现,本轮只写需求和任务拆解。
3. ABB RobotStudio 对标只限信息架构和工作流,不复制 ABB 品牌视觉资源。
下一步:
1. 按任务矩阵从 `A120-001` 固化 ABB120 fixture 开始实现。
2. 再实现 `A120-010``A120-011` 的 GRL 测试程序集和 golden snapshot。
3. 随后推进运行器、跨品牌后处理、离线编程报告和 HTML 虚拟控制器。
### 轮次 002
日期2026-06-27
关联任务:`GRL-EXPR-000`
本轮目标:根据“运算功能,对标 ABB、FANUC、库卡”的要求将 GRL 运算表达式能力补充到 `working1` 文档体系中,覆盖功能、开发步骤、任务矩阵、验收证据和决策记录。
做了什么:
1. 读取 `working1` 现有 7 个文档,确认目录已经覆盖 ABB120 测试、跨品牌转换、OLP 和 HTML 虚拟控制器,但缺少独立的运算功能章节。
2. 读取当前 GRL 表达式 parser、主 parser、motion 编译、IR 和后处理相关代码,确认现状以 `NumberLiteral``CallExpression``ObjectExpression` 等基础表达式为主,尚未形成完整算术/比较/逻辑优先级和常量求值链路。
3. 将运算功能定义为跨品牌公共数学子集:算术、比较、逻辑、括号、常用数学函数、三角函数、`pi/e`
4. 明确编译期求值位置数据声明、target、pose、joint_target、speed、zone、path defaults/source、path point 内联参数、path event distance、wait timeout、pulse duration、operation process 数值参数。
5. 明确首版后处理边界:常量表达式折叠为 IR 数值后再输出 ABB/FANUC/KUKA复杂运行时表达式进入转换报告不静默丢失。
改了哪些文件:
1. `/home/meswork/kdl_work/working1/README.md`
2. `/home/meswork/kdl_work/working1/01-项目功能内容.md`
3. `/home/meswork/kdl_work/working1/02-项目程序开发详细步骤.md`
4. `/home/meswork/kdl_work/working1/03-推进台账.md`
5. `/home/meswork/kdl_work/working1/04-任务矩阵.md`
6. `/home/meswork/kdl_work/working1/05-验收证据.md`
7. `/home/meswork/kdl_work/working1/06-决策记录.md`
验证了什么:
1. `working1` 文档中可检索到 `GRL-EXPR` 任务编号。
2. `01-项目功能内容.md` 包含运算语法、函数、单位、示例、诊断和跨品牌边界。
3. `02-项目程序开发详细步骤.md` 包含从 AST、parser、常量求值、motion/path/IO 接入到三品牌报告的实施步骤。
问题和风险:
1. 本轮只补充文档,不修改源码;`expressionParser.ts` 和语义编译实现仍需按 `GRL-EXPR-001``GRL-EXPR-006` 继续实现。
2. 单位上下文规则需要实现时和现有 lexer unit 归一化保持一致,避免 `100 + 50 mm/s` 这类上下文默认单位产生歧义。
3. runtime 条件表达式的跨品牌保真映射复杂,首版必须通过 report 明示能力边界。
下一步:
1.`GRL-EXPR-001` 扩展 AST 节点开始。
2. 再推进 `GRL-EXPR-002` 表达式优先级 parser。
3. 随后实现 `GRL-EXPR-003` 常量求值器和单位系统,并接入 `compileData.ts``compileMotion.ts`
### 轮次 003
日期2026-06-27
关联任务:`GRL-EXPR-001``GRL-EXPR-006``A120-001``A120-900`
本轮目标:完成 `/home/meswork/kdl_work/working1` 任务矩阵中的全部实现、测试、证据和文档收口。
做了什么:
1. 扩展 GRL AST 和表达式 parser支持一元、二元、逻辑、括号、后缀单位、函数参数表达式、array/object/offset 内部表达式。
2. 新增常量求值器,支持 `pi/e`、三角函数、常用数学函数、单位归一化、上下文默认单位、除零/定义域/单位不兼容诊断。
3. 接入 `compileData.ts``compileMotion.ts``compileIo.ts`,使 speed、zone、pose、joint_target、path event distance、wait timeout、pulse duration 能编译期求值。
4. 固化 ABB120 src fixture并让测试 fixture 从稳定入口复用导出。
5. 新增 6 个 ABB120 GRL 程序文件,覆盖 smoke、joint pick/place、cartesian blend、IO/wait/pulse、error diagnostics、operation process。
6. 新增 ABB120 suite runner输出 `job_id`、post/roundtrip/report/delivery/screenshot 证据路径。
7. 新增 HTML 虚拟控制器入口、样式和最小交互脚本覆盖命令栏、对象树、viewport、示教器、编辑器、底部面板。
8. 新增表达式专项测试和 ABB120 suite artifact 集成测试。
改了哪些文件:
1. `kdl-wasm/web/src/grl/ast/ast.ts`
2. `kdl-wasm/web/src/grl/ast/index.ts`
3. `kdl-wasm/web/src/grl/parser/expressionParser.ts`
4. `kdl-wasm/web/src/grl/parser/parser.ts`
5. `kdl-wasm/web/src/grl/semantic/constantExpression.ts`
6. `kdl-wasm/web/src/grl/semantic/compileData.ts`
7. `kdl-wasm/web/src/grl/semantic/compileMotion.ts`
8. `kdl-wasm/web/src/grl/semantic/compileIo.ts`
9. `kdl-wasm/web/src/grl/semantic/compileSemantic.ts`
10. `kdl-wasm/web/src/fixtures/abb120.ts`
11. `kdl-wasm/web/src/suites/abb120Suite.ts`
12. `kdl-wasm/web/app/virtual-controller.html`
13. `kdl-wasm/web/app/virtual-controller.css`
14. `kdl-wasm/web/app/virtual-controller.ts`
15. `kdl-wasm/web/tests/fixtures/abbIrb120.ts`
16. `kdl-wasm/web/tests/fixtures/abb120/programs/*.grl`
17. `kdl-wasm/web/tests/grl/expressionCompile.test.ts`
18. `kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts`
19. `working1/03-推进台账.md`
20. `working1/04-任务矩阵.md`
21. `working1/05-验收证据.md`
22. `working1/README.md`
验证了什么:
1. `npm run typecheck`:通过。
2. `npm test`40 个测试文件、153 个测试全部通过。
3. `cmake --build kdl-wasm/build-wasm -j16``[100%] Built target kdl`
4. `npm test -- kdl-wasm/web/tests/grl`13 个 GRL 测试文件、53 个测试通过。
5. `npm test -- kdl-wasm/web/tests/integration/abb120Programs.test.ts kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts`2 个集成测试文件、9 个测试通过。
问题和风险:
1. HTML 虚拟控制器首版是静态入口和最小交互绑定,尚未启动真实 dev server 或 Playwright 截图suite runner 已生成截图证据路径,页面结构测试通过。此项已在轮次 004 用 Chrome headless 截图验证关闭。
2. ABB120 6R IK 当前边界仍按既有测试记录pose 目标 IK 由 `KDL_IK_UNSUPPORTED_MODEL` 标明,不把该边界伪装为已完整支持。
3. 三品牌后处理首版仍以已折叠 IR 数值输出为主,复杂 runtime 表达式通过 report 明示。
下一步:
1. 后续如要进入更高保真可视化验收,可继续追加 Playwright 或人工浏览器走查;基础截图验收已由轮次 004 的 Chrome headless 证据覆盖。
2. 后续如要扩展品牌 runtime 表达式映射,应在 `postProcessor` 和 roundtrip diff 中逐项增加证据。
### 轮次 004
日期2026-06-27
关联任务:`A120-090``A120-094``A120-900`
本轮目标:复核 `working1``working` 是否存在未完成项,并补齐 HTML 虚拟控制器真实浏览器截图验收。
做了什么:
1. 对比 `working1``working` 文档状态,确认任务矩阵均已标记完成,但 `working1` 台账仍记录 HTML 虚拟控制器未做真实浏览器截图。
2. 将虚拟控制器入口从浏览器无法直接执行的 `virtual-controller.ts` 改为静态可打开的 `virtual-controller.js`
3. 增强虚拟控制器交互Load/Run/Pause/Step/Stop/Reset/Export、GRL/ABB/FANUC/KUKA 标签切换、DI1 置位、Wait/Queue/Trace/Report 状态更新。
4. 修复移动端 `.viewport` 高度塌陷问题,命令栏支持换行,底部面板文本可换行。
5. 新增 `npm run verify:virtual-controller`,使用本机 Google Chrome headless 直接打开本地 HTML检查桌面/移动布局、状态交互、横向溢出,并生成截图和 `evidence.json`
6. 收紧 ABB120 suite artifact 测试,确保 HTML 引用 `.js` 静态脚本而不是 `.ts`
改了哪些文件:
1. `package.json`
2. `kdl-wasm/web/app/virtual-controller.html`
3. `kdl-wasm/web/app/virtual-controller.css`
4. `kdl-wasm/web/app/virtual-controller.js`
5. `kdl-wasm/web/app/virtual-controller.ts`
6. `kdl-wasm/web/scripts/verify-virtual-controller.mjs`
7. `kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts`
8. `working1/03-推进台账.md`
9. `working1/05-验收证据.md`
验证了什么:
1. `npm run verify:virtual-controller`:通过。
2. 桌面截图:`kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png`82565 bytes。
3. 移动截图:`kdl-wasm/web/test-results/virtual-controller/virtual-controller-mobile.png`109601 bytes。
4. 证据 JSON`kdl-wasm/web/test-results/virtual-controller/evidence.json`
5. 桌面和移动均显示 command bar、object tree、viewport、pendant、editor、bottom panelRun 后状态为 `running`DI1 置位后 Wait 为 `satisfied`
问题和风险:
1. Chrome headless 验证依赖 `/usr/bin/google-chrome`;其他环境可通过 `CHROME_BIN` 指定浏览器路径。
2. ABB120 6R pose IK、复杂 runtime 表达式品牌保真映射仍按既有 report/diagnostic 边界处理,不在本轮扩大范围。
下一步:
1. 继续保持 `npm run typecheck``npm test``cmake --build kdl-wasm/build-wasm -j16``npm run verify:virtual-controller` 作为当前收口验收组合。
### 轮次 005
日期2026-06-28
关联任务:`A120-031``A120-094``A120-900``working2-audit`
本轮目标:按用户要求复核并完成 `E:\Work\kdl_work\working1``E:\Work\kdl_work\working2` 的全部任务,在当前 Windows 环境重新跑通收口验收。
做了什么:
1. 审计 `working1` 任务矩阵,确认 `GRL-EXPR-001``GRL-EXPR-006``A120-001``A120-900` 均为 Done。
2. 审计 `working2`,确认目录为空且仓库文本中没有 `working2` 任务引用。
3. 执行 `npm install` 修复当前 Windows 环境缺失的 `.cmd/.ps1` 可执行垫片和 Rollup Windows optional dependency。
4. 修复 `abb120SuiteArtifacts.test.ts` 中 Linux 绝对路径,改为从测试文件位置推导 `web` 根目录。
5. 更新 `abb120Programs.test.ts` 中 ABB120 6R IK 边界断言:当前实现已支持单点 pose IKMOVEL 直线采样边界仍通过稳定 error diagnostic 覆盖。
6. 修复 `verify-virtual-controller.mjs` 的 Windows `file:` URL 路径解析,并增加 Windows Chrome/Edge 默认路径探测。
7. 清理旧 Linux CMake 缓存后,使用本机 Emscripten、Ninja、Orocos KDL 源和 Eigen 重新配置 `kdl-wasm/build-wasm`
改了哪些文件:
1. `kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts`
2. `kdl-wasm/web/tests/integration/abb120Programs.test.ts`
3. `kdl-wasm/web/scripts/verify-virtual-controller.mjs`
4. `kdl-wasm/build-wasm/*`
5. `kdl-wasm/web/test-results/virtual-controller/*`
6. `working1/03-推进台账.md`
7. `working1/05-验收证据.md`
8. `working1/README.md`
9. `working2/README.md`
验证了什么:
1. `npm run typecheck`:通过。
2. `npm test`40 个测试文件、153 个测试全部通过。
3. `cmake --build kdl-wasm/build-wasm -j16`:通过,当前复跑输出 `ninja: no work to do.`
4. `npm run verify:virtual-controller`:通过。
5. 桌面截图:`kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png`45666 bytes。
6. 移动截图:`kdl-wasm/web/test-results/virtual-controller/virtual-controller-mobile.png`44869 bytes。
7. 证据 JSON`kdl-wasm/web/test-results/virtual-controller/evidence.json`,状态 `running`wait `satisfied`
问题和风险:
1. Windows WASM 构建需要 Emscripten 环境;本轮使用 `E:\emsdk`
2. 带 Orocos KDL 源构建需要 Eigen本轮使用 `E:\Work\kdl\eigen-3.4.0\eigen-3.4.0`
3. `working2` 当前没有任务定义;本轮只生成空任务审计说明,不扩展需求范围。
下一步:
1. 若后续给 `working2` 增加任务文件,应按同样方式补任务矩阵和验收证据。