Upload project files

This commit is contained in:
wangdequan
2026-06-28 08:20:33 +08:00
parent f0e96308d2
commit 84a5b54195
162 changed files with 14070 additions and 31381 deletions

254
working1/03-推进台账.md Normal file
View File

@@ -0,0 +1,254 @@
# 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` 增加任务文件,应按同样方式补任务矩阵和验收证据。