更新KDL与GRL推进记录

This commit is contained in:
wangdequan
2026-06-27 08:40:51 -04:00
parent fe13b081e3
commit 93d8ede54b
4 changed files with 144 additions and 23 deletions

View File

@@ -1095,3 +1095,93 @@
1. 执行 `KW-112`:自动生成规则和往返。
2. 生成稳定 GRL 文本,确保可 diff、可解析、可语义检查并可后处理。
### 轮次 023
日期2026-06-27
关联任务:`KW-112`
本轮目标:完成 GRL 自动生成规则和往返,确保生成文本稳定、可 diff、可解析并可进入语义 IR 与后处理链路。
做了什么:
1. 复核 `kdl-wasm/web/src/grl/generator` 现有生成器实现和 roundtrip 测试。
2. 修正 source metadata 字符串格式化规则:`id` 等外部标识保留字符串引号,`type` 等类别值可保持 GRL 标识符。
3. 确认 `generateGrlProgram` 支持 expanded/compact 两种输出。
4. 确认 target 按名称稳定排序,未显式命名的 path point 自动生成 `p00/p01/...`
5. 确认生成文本可解析为 target/path/operation且可进入 `compileSemanticProgram` 和三品牌后处理。
6. 更新 `README.md`、任务矩阵和验收证据,将 `KW-112` 收口为完成状态。
改了哪些文件:
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/generator/generator.ts`
2. `/home/meswork/kdl_work/work/working1/README.md`
3. `/home/meswork/kdl_work/work/working1/03-推进台账.md`
4. `/home/meswork/kdl_work/work/working1/04-任务矩阵.md`
5. `/home/meswork/kdl_work/work/working1/05-验收证据.md`
验证了什么:
1. `npm run typecheck` 通过。
2. `npm run test -- grl generator roundtrip` 通过12 个 GRL 相关测试文件共 49 个测试通过。
3. `npm test` 通过27 个测试文件共 107 个测试通过。
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
问题和风险:
1. `KW-112` 已完成自动生成和往返,但当前生成器仍聚焦 target/path/operation不覆盖完整 GRL 程序自动合成。
2. 任务矩阵中 `KW-002.4` 保持 `Review`:当前 RobotHandle 由 TypeScript registry 管理,真实 Orocos KDL `Tree/Chain` solver 深度绑定仍需后续专门推进。
3. FANUC 输出仍为 LS/TP 风格文本原型,不是 TP 二进制。
下一步:
1. 若继续深化 KDL 主线,优先推进真实 Orocos KDL WASM `Tree/Chain`、FK/IK/Jacobian solver 接入和 golden 对比。
2. 若继续深化 GRL 主线,可扩展自动生成器覆盖更完整的 proc/func/control/IO/exception 程序生成。
### 轮次 024
日期2026-06-27
关联任务:`KW-002.4``KW-003``KW-005``KW-013`
本轮目标:继续深化 KDL native 主线,让 C ABI 从 `NormalizedRobotModel` 构造 Orocos KDL Chain并补 native FK/Jacobian golden 对比。
做了什么:
1. `kdl-wasm` CMake 接入 Orocos KDL 最小源码集Chain、Segment、Joint、Frame、JntArray、Jacobian、FK solver、Jacobian solver 和必要 utility/inertia 文件。
2. C ABI 增加轻量 JSON 解析,读取 `NormalizedRobotModel``robotId/name/baseLink/tipLink/joints/activeJointNames`
3. `kdl_create_robot` 根据标准模型构造 native KDL Chain并返回包含 `nativeState: "kdl_chain"`、dof 和 jointNames 的 info。
4. 实现 native `kdl_fk`,通过 `ChainFkSolverPos_recursive` 输出 pose7。
5. 实现 native `kdl_jacobian`,通过 `ChainJntToJacSolver` 输出 6 x dof 行主序矩阵。
6. 修复 native solver 生命周期问题FK/Jacobian solver 必须在 map 内稳定 `RobotRecord` 上构造,避免持有 move 前 Chain 引用。
7. Emscripten 构建导出 `HEAPF64` 并启用 C++ exception catching用于 C ABI 测试和结构化错误边界。
8. C ABI 测试新增 Rz+Px 链 native FK/Jacobian golden case。
9. 更新 `README.md`、任务矩阵和验收证据,将 `KW-002.4` 收口为完成状态。
改了哪些文件:
1. `/home/meswork/kdl_work/kdl-wasm/CMakeLists.txt`
2. `/home/meswork/kdl_work/kdl-wasm/bindings/kdl_c_api.cpp`
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/nativeModule.ts`
4. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/cAbi.test.ts`
5. `/home/meswork/kdl_work/work/working1/README.md`
6. `/home/meswork/kdl_work/work/working1/03-推进台账.md`
7. `/home/meswork/kdl_work/work/working1/04-任务矩阵.md`
8. `/home/meswork/kdl_work/work/working1/05-验收证据.md`
验证了什么:
1. `npm run typecheck` 通过。
2. `cmake --build kdl-wasm/build-wasm -j16` 通过。
3. `npm test -- kdl-wasm/web/tests/kdl/cAbi.test.ts` 通过1 个测试文件共 5 个测试通过。
4. `npm run test -- kdl fk jacobian checks c-abi` 通过27 个测试文件共 108 个测试通过。
5. `npm test` 通过27 个测试文件共 108 个测试通过。
问题和风险:
1. native `fkAllLinks` 仍未做 JSON 序列化输出Worker `fkAllLinks` 继续由 TypeScript baseline 承载。
2. native IK 尚未接入,当前 IK 和相关 MOVEL/MOVEC 逐点求解仍由 TypeScript baseline 承载。
3. native `planMoveJ/planMoveL/planMoveC/planPath/sampleTrap` 仍返回 `KDL_NOT_IMPLEMENTED`,轨迹规划继续由 TypeScript runtime 承载。
4. C ABI 轻量 JSON 解析只覆盖当前 `NormalizedRobotModel` 必需字段,后续若模型 schema 扩展需要同步增强。
下一步:
1. 若继续深化 KDL native 主线,优先接入 native `fkAllLinks` JSON 输出和 native IK。
2. native IK 稳定后,再逐步把 `planMoveL/planMoveC/planPath` 从 TypeScript baseline 切到 native solver。