1421 lines
72 KiB
Markdown
1421 lines
72 KiB
Markdown
# 03-推进台账
|
||
|
||
版本:0.5
|
||
日期:2026-06-27
|
||
|
||
## 1. 记录规则
|
||
|
||
每轮推进后追加记录,格式固定:
|
||
|
||
```text
|
||
轮次:
|
||
日期:
|
||
关联任务:
|
||
本轮目标:
|
||
做了什么:
|
||
改了哪些文件:
|
||
验证了什么:
|
||
问题和风险:
|
||
下一步:
|
||
```
|
||
|
||
## 2. 台账
|
||
|
||
### 轮次 001
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-000`
|
||
本轮目标:根据用户要求,将 `working` 实施文档调整为完全对标两份源文档:
|
||
|
||
1. `/home/meswork/kdl_work/work/doc/KDL_WASM计算接口设计.md`
|
||
2. `/home/meswork/kdl_work/work/doc/通用机器人编程语法规范.md`
|
||
|
||
做了什么:
|
||
|
||
1. 抽取 KDL WASM 文档中的目标、架构、API、数据类型、轨迹函数、诊断、P0/P1、测试要求和实施顺序。
|
||
2. 抽取 GRL 语法规范中的词法、顶层结构、类型系统、目标点、运动、Path、Operation、IO、流程控制、proc/func、异常、中断、多任务、品牌扩展、后处理、IR、语义检查、EBNF、P0/P1。
|
||
3. 将任务编号重排为:
|
||
- `KW-001` 到 `KW-013`:KDL WASM 计算接口实施。
|
||
- `KW-100` 到 `KW-112`:GRL 编程语法实施。
|
||
4. 删除当前实施范围中对其他源文档的依赖表述。
|
||
5. 按两份源文档重写功能范围、开发步骤、任务矩阵、验收证据和 ADR。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `working/README.md`
|
||
2. `working/01-项目功能内容.md`
|
||
3. `working/02-项目程序开发详细步骤.md`
|
||
4. `working/03-推进台账.md`
|
||
5. `working/04-任务矩阵.md`
|
||
6. `working/05-验收证据.md`
|
||
7. `working/06-决策记录.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `work/doc/KDL_WASM计算接口设计.md` 存在。
|
||
2. `work/doc/通用机器人编程语法规范.md` 存在。
|
||
3. `working` 当前文档只以这两份文档作为对标来源。
|
||
4. KDL P0 29 个函数已进入任务和验收证据。
|
||
5. GRL P0 14 类能力已进入任务和验收证据。
|
||
|
||
问题和风险:
|
||
|
||
1. 当前仍是实施文档,不包含实际代码实现。
|
||
2. KDL 性能指标需要真实 WASM 构建和浏览器环境验证。
|
||
3. GRL 后处理 golden file 需要补充 ABB、FANUC、KUKA 示例。
|
||
4. `trap/interrupt/task` 属于 GRL P1,若提前解析但不执行,必须返回明确诊断。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-001`:建立 KDL WASM wrapper 工程和 Worker RPC。
|
||
2. 并行执行 `KW-100`:建立 GRL lexer、单位规范化和关键字表。
|
||
3. 第一集成点为 `KW-103`:GRL `movej/movel/movec` 编译为 KDL request。
|
||
|
||
### 轮次 002
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-001`、`KW-100`
|
||
本轮目标:按 `working` 下一步连续推进,建立 KDL WASM wrapper/Worker RPC 工程骨架,并实现 GRL lexer、单位规范化和关键字表。
|
||
|
||
做了什么:
|
||
|
||
1. 新建 `/home/meswork/kdl_work/kdl-wasm` 工程骨架。
|
||
2. 增加 CMake/Emscripten WASM wrapper,导出 `kdl.js`、`kdl.wasm`、`kdl.d.ts`。
|
||
3. 增加 C ABI 占位边界:`kdl_init`、`kdl_create_robot`、`kdl_destroy_robot`、`kdl_get_robot_info`、`kdl_fk`、`kdl_ik`、`kdl_plan_movej`、`kdl_last_error` 等。
|
||
4. 增加 TypeScript KDL 类型、`KdlRpcRequest/KdlRpcResponse`、结构化错误、Worker dispatch、`kdl.worker.ts` 和 `KdlWorkerClient`。
|
||
5. Worker runtime 支持注入 native module loader;默认通过 ES module 动态加载 WASM wrapper,`init` 调用底层 `kdl_init`。
|
||
6. 增加 GRL lexer:注释、关键字、标识符、字符串、数字、source range、EOF token。
|
||
7. 增加 GRL 单位规范化:长度、角度、时间、质量、线速度、角速度、线加速度、角加速度、百分比。
|
||
8. 增加 Vitest 单元测试和 TypeScript 严格类型检查入口。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/package.json`
|
||
2. `/home/meswork/kdl_work/package-lock.json`
|
||
3. `/home/meswork/kdl_work/.gitignore`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/CMakeLists.txt`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/bindings/kdl_c_api.cpp`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/bindings/kdl.d.ts`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/*`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/lexer/*`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/rpc.test.ts`
|
||
10. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/lexer.test.ts`
|
||
11. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
12. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
13. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm test` 通过,2 个测试文件共 11 个测试通过。
|
||
3. `npm run test -- kdl rpc` 通过。
|
||
4. `npm run test -- grl lexer` 通过。
|
||
5. `emcmake cmake -S kdl-wasm -B kdl-wasm/build-wasm -DCMAKE_BUILD_TYPE=Release -DKDL_SOURCE_DIR=/home/meswork/kdl_work/orocos_kinematics_dynamics/orocos_kdl` 通过。
|
||
6. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
7. `kdl-wasm/build-wasm/kdl.js`、`kdl-wasm/build-wasm/kdl.wasm`、`kdl-wasm/build-wasm/kdl.d.ts` 存在。
|
||
8. Node 动态加载 `kdl.js` 并调用 `kdl_init` 返回 `0`。
|
||
|
||
问题和风险:
|
||
|
||
1. `KW-001` 已完成工程骨架和 Worker RPC,但 C ABI 中机器人建模、FK/IK、轨迹规划仍是后续任务占位。
|
||
2. `KW-100` 已完成 lexer 和单位表,但 parser、AST、语义检查尚未开始。
|
||
3. 当前未启动浏览器 Worker 真实环境测试,Worker 加载通过注入 loader 和 Node 动态 import 验证;浏览器/Playwright 可在 UI 或集成环境出现后补充。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-002`:URDF XML 解析、`NormalizedRobotModel`、RobotHandle 生命周期和基础模型诊断。
|
||
2. 执行 `KW-101`:GRL parser 和 AST 骨架,覆盖最小文件、source range 和错误行列号。
|
||
|
||
### 轮次 003
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-002`、`KW-101`
|
||
本轮目标:继续按台账推进,完成 URDF 到标准模型和 GRL parser/AST 骨架。
|
||
|
||
做了什么:
|
||
|
||
1. 增加 URDF XML 解析,读取 robot/link/joint/parent/child/origin/axis/limit。
|
||
2. 增加 `NormalizedRobotModel` 生成,包含 `robotId/name/baseLink/tipLink/links/joints/activeJointNames/limits/source.urdfHash`。
|
||
3. 增加 base/tip 连通性检查、unsupported joint type、jointOrder 和 limit override 处理。
|
||
4. 增加 TypeScript `RobotModelRegistry`,支持 RobotHandle create/getInfo/getJointLimits/destroy 生命周期。
|
||
5. 扩展 Worker runtime 和 `KdlWorkerClient`,支持 `loadRobotFromUrdf/createRobotFromModel/destroyRobot/getRobotInfo/getJointLimits`。
|
||
6. 增加 GRL AST 类型和 parser 骨架,覆盖 `language grl 0.1`、`module`、`import`、`proc`,并保留顶层 raw declaration。
|
||
7. 增加 parser 错误行列号和 source range 测试。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/package.json`
|
||
2. `/home/meswork/kdl_work/package-lock.json`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/*`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/*`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/*`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/urdf.test.ts`
|
||
10. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/parser.test.ts`
|
||
11. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
12. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
13. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm test` 通过,4 个测试文件共 19 个测试通过。
|
||
3. `npm run test -- kdl urdf normalized-model` 通过。
|
||
4. `npm run test -- grl parser ast` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. RobotHandle 目前绑定 TypeScript 标准模型 registry,尚未创建真实 Orocos KDL `Tree/Chain` 求解器。
|
||
2. Parser 对数据声明、target、path、operation、语句体仍保留 raw token,细化工作进入 `KW-102` 到 `KW-109`。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-003`:基于标准模型实现 FK 和 fkAllLinks 的初版数值计算、维度诊断和 link 顺序测试。
|
||
2. 执行 `KW-102`:细化数据声明、类型系统、target/tool/frame/speed/zone 和 offset AST。
|
||
|
||
### 轮次 004
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-003`、`KW-102`
|
||
本轮目标:继续推进 FK/fkAllLinks 计算接口,并把 GRL 数据声明、target、speed、zone、offset 编译为共享类型。
|
||
|
||
做了什么:
|
||
|
||
1. 增加基础位姿数学工具:矩阵相乘、RPY、轴角、四元数、pose compose。
|
||
2. 基于 `NormalizedRobotModel` 实现 TypeScript FK 基线,支持 revolute、continuous、prismatic、fixed joint。
|
||
3. 实现 `fk`,返回 flange、tcp、joints、diagnostics,并支持 tool/frame 选项。
|
||
4. 实现 `fkAllLinks`,返回 base-to-tip link pose 列表。
|
||
5. 增加 FK 维度和非法关节值结构化诊断。
|
||
6. 扩展 Worker runtime 和 `KdlWorkerClient`,暴露 `fk/fkAllLinks`。
|
||
7. 扩展 GRL AST 和 parser,结构化输出 `DataDeclaration`、`TargetDeclaration`、表达式 AST、object/call/array/offset。
|
||
8. 增加 GRL 数据编译函数,支持 `tool/frame/joint_target/pose_target/speed/zone/offset` 到共享数据结构。
|
||
9. 增加负数单位值解析,覆盖 `offset y -10 mm` 等场景。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/math/poseMath.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/*`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/*`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/*`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/fk.test.ts`
|
||
10. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/dataDeclarations.test.ts`
|
||
11. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
12. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
13. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm test` 通过,6 个测试文件共 28 个测试通过。
|
||
3. `npm run test -- kdl fk` 通过。
|
||
4. `npm run test -- grl types declarations targets` 通过。
|
||
5. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. 当前 FK 是 TypeScript 标准模型基线,尚未与真实 Orocos KDL WASM solver 做数值 golden 对比。
|
||
2. GRL 数据编译已覆盖 P0 数据结构,但尚未做全局符号表、类型引用检查和重复定义诊断;这些进入 `KW-110`。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-004`:IK 和 ikBatch 的基础接口、失败原因和回代测试。
|
||
2. 执行 `KW-103`:解析 `movej/movel/movec`、当前 tool/frame/speed/zone,并编译为 KDL request。
|
||
|
||
### 轮次 005
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-004`、`KW-103`
|
||
本轮目标:继续推进 IK/ikBatch 基础接口,并完成 GRL 运动语句到 KDL request 的第一个集成点。
|
||
|
||
做了什么:
|
||
|
||
1. 正式化 `IkOptions/IkResult`、`MoveJRequest/MoveLRequest/MoveCRequest` 类型。
|
||
2. 在 TypeScript 标准模型 registry 中实现 `ik` 和 `ikBatch`。
|
||
3. IK 当前支持 single-prismatic 和 Rz+Px 链,返回可达、关节限位、unsupported model 等结构化结果。
|
||
4. `ikBatch` 保持输入顺序,并在前一点成功时复用上一点结果作为后续 seed。
|
||
5. Worker runtime 和 `KdlWorkerClient` 暴露 `ik/ikBatch`。
|
||
6. 增加 GRL Motion IR:`MotionInstruction`、`MotionKind` 和 request 编译类型。
|
||
7. 增加 `buildMotionContext`,从 data/target 声明建立 targets、speeds、zones、tools、frames。
|
||
8. 增加 `parseProcedureMotionInstructions`,从 `proc` body token 解析 `set_tool/set_frame/set_speed/set_zone/movej/movel/movec`。
|
||
9. 增加 `compileMotionToKdlRequest`,生成 `MoveJRequest/MoveLRequest/MoveCRequest`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/*`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileMotion.ts`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/parser.ts`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/ik.test.ts`
|
||
10. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/motionCompile.test.ts`
|
||
11. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
12. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
13. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm test` 通过,8 个测试文件共 34 个测试通过。
|
||
3. `npm run test -- kdl ik` 通过。
|
||
4. `npm run test -- grl motion` 通过。
|
||
5. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. IK 当前是受限 TypeScript 几何基线,不是完整 Orocos KDL 迭代 IK。
|
||
2. `KW-103` 已完成直写 `proc` 内 motion 指令编译,但 path/operation 内 point/event 展开仍属于后续 `KW-104/KW-105`。
|
||
3. 独立 `integration grl-kdl-motion` 测试文件尚未建立,当前由 `grl motion` 和全量测试覆盖同一集成链路。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-005`:Jacobian、奇异性和基础检查 API。
|
||
2. 执行 `KW-104`:Path、event 和 `run_path` 编译为 PathPlanRequest。
|
||
|
||
### 轮次 006
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-005`
|
||
本轮目标:实现 Jacobian、奇异性、关节限位、速度限位和可达性批量检查 API。
|
||
|
||
做了什么:
|
||
|
||
1. 正式化 `JacobianResult`、`LimitCheckResult`、`SingularityResult`、`ReachabilityResult` 类型。
|
||
2. 基于 FK 数值差分实现 `jacobian`,返回 6 x dof 矩阵。
|
||
3. 实现 `checkSingularity`,输出 manipulability、conditionNumber 和 `KDL_SINGULARITY` warning。
|
||
4. 实现 `checkJointLimits`,对超限关节输出 `KDL_JOINT_LIMIT`。
|
||
5. 实现 `checkVelocityLimits`,对轨迹点速度/加速度输出 `KDL_VELOCITY_LIMIT`、`KDL_ACCEL_LIMIT` 和最大比例。
|
||
6. 实现 `checkReachability/checkReachabilityBatch`,复用 IK 基线并保持批量顺序。
|
||
7. Worker runtime 和 `KdlWorkerClient` 暴露 KW-005 API。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/checks.test.ts`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl jacobian checks` 通过。
|
||
3. `npm test` 通过,9 个测试文件共 38 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. Jacobian 当前为 TypeScript 数值差分基线,后续真实 Orocos KDL solver 接入后应增加 golden 对比。
|
||
2. 奇异性指标当前使用线速度 Jacobian 的 Gram 行列式和列范数估算,适合作为 P0 诊断基线,不等价于完整工业控制器判据。
|
||
3. `KW-104` 依赖 `KW-011 planPath/validatePath`,本轮未推进,避免把 Path 集成误标完成。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-006`:位姿变换和 offset API。
|
||
2. 执行 `KW-007`:梯形速度曲线,为后续 `planMoveJ/planMoveL/planMoveC` 做准备。
|
||
|
||
### 轮次 007
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-006`
|
||
本轮目标:实现位姿规范化、组合、逆变换、tool/frame 应用和 offset API。
|
||
|
||
做了什么:
|
||
|
||
1. 在数学模块补充 `inversePose` 刚体逆变换。
|
||
2. 增加 `kdl/poseApi.ts`,集中实现 `normalizePose/composePose/inversePose/applyToolAndFrame/applyOffset`。
|
||
3. `normalizePose` 支持 `position/quaternion`、`xyz/rpy`、`xyz/quat` 三种输入,并统一规范化四元数。
|
||
4. `applyToolAndFrame` 保持与当前 FK 一致的 `frame * target.pose * tool` 约定。
|
||
5. `applyOffset` 支持 `frame/world` 左乘偏移和 `tool` 右乘偏移,并保留 `PoseTarget` 元数据。
|
||
6. Worker runtime 和 `KdlWorkerClient` 暴露 KW-006 API。
|
||
7. 非法位姿输入返回 `KDL_INVALID_POSE` 结构化诊断。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/math/poseMath.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/poseApi.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/poseApi.test.ts`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl pose offset` 通过,10 个测试文件共 43 个测试通过。
|
||
3. `npm test` 通过,10 个测试文件共 43 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. `frameId` 当前作为 `OffsetSpec` 元数据保留,尚未接入全局 frame registry;命名 frame 解析会在 `KW-110` 语义检查和后续路径集成中继续完善。
|
||
2. 位姿变换当前为 TypeScript 基线实现,后续 C ABI / WASM 真实封装可复用这些测试作为行为约束。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-007`:梯形速度曲线。
|
||
2. 之后按依赖推进 `KW-008 planMoveJ`。
|
||
|
||
### 轮次 008
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-007`
|
||
本轮目标:实现梯形速度曲线 profile 和采样 API,为后续运动规划提供路径参数。
|
||
|
||
做了什么:
|
||
|
||
1. 将 `TrapProfileOptions/TrapSample/TrapProfileResult` 从 `JsonObject` 占位改为明确类型。
|
||
2. 增加 `kdl/trapProfile.ts`,实现 `makeTrapProfile` 和 `sampleTrapProfile`。
|
||
3. 长距离场景生成 trapezoid,短距离场景自动退化为 triangle。
|
||
4. 采样点输出 `index/time/s/sd/sdd`,其中 `s` 为 `[0,1]` 归一化路径参数。
|
||
5. 首末采样点严格固定为 `s=0` 和 `s=1`,中间采样按 `sampleTime` 单调生成。
|
||
6. 非法输入返回 `KDL_INVALID_TRAP_PROFILE` 结构化诊断。
|
||
7. Worker runtime 和 `KdlWorkerClient` 暴露 `makeTrapProfile/sampleTrapProfile`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/trapProfile.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/trapProfile.test.ts`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl trap-profile` 通过,11 个测试文件共 47 个测试通过。
|
||
3. `npm test` 通过,11 个测试文件共 47 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. 当前速度曲线是 TypeScript 基线实现,后续真实 KDL `VelocityProfile_Trap` 接入后应使用这些测试做行为对齐。
|
||
2. `startVelocity/endVelocity` 已做输入校验,但后续连续 path blend 对非零边界速度的策略还需要在 `KW-011` 中统一。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-008`:`planMoveJ`。
|
||
2. 继续把梯形速度曲线接入 MOVEJ 轨迹采样、限位和诊断。
|
||
|
||
### 轮次 009
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-008`
|
||
本轮目标:实现 `planMoveJ`,把目标关节、梯形速度曲线、FK 和诊断串成可回放轨迹。
|
||
|
||
做了什么:
|
||
|
||
1. 将 `TrajectoryPoint/TrajectoryEvent/TrajectoryResult` 从 `JsonObject` 占位改为明确类型。
|
||
2. 在 `RobotModelRegistry` 中实现 `planMoveJ`。
|
||
3. `joint_target` 直接生成终点关节,`pose_target` 复用当前 IK 基线求终点关节。
|
||
4. 使用 `KW-007` 梯形速度曲线生成归一化 `s/sd/sdd`,并映射到每个关节的位置、速度、加速度。
|
||
5. 每个轨迹点执行 FK,输出 `flange/tcp`,用于仿真回放。
|
||
6. 覆盖起终点关节限位、采样点速度/加速度、奇异性和 P0 zone 近似诊断。
|
||
7. Worker runtime 和 `KdlWorkerClient` 暴露 `planMoveJ`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/planMoveJ.test.ts`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl movej planMoveJ` 通过,12 个测试文件共 51 个测试通过。
|
||
3. `npm test` 通过,12 个测试文件共 51 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. `pose_target` 的 IK 仍使用当前 TypeScript 几何基线,真实 6 轴工业机器人求解要等 Orocos KDL solver 深度接入。
|
||
2. `zone` 在 P0 仍近似为 fine,连续 blend 会在 `KW-011` 统一处理。
|
||
3. 当前 MOVEJ 使用归一化同步参数实现,同起同停可用;品牌控制器级 look-ahead 和更复杂速度策略属于后续阶段。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-009`:`planMoveL`。
|
||
2. 复用 `TrajectoryResult`、梯形速度曲线和 IK seed 连续策略生成 TCP 直线轨迹。
|
||
|
||
### 轮次 010
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-009`
|
||
本轮目标:实现 `planMoveL`,按 TCP 直线采样、逐点 IK,并输出可回放轨迹。
|
||
|
||
做了什么:
|
||
|
||
1. 在 `RobotModelRegistry` 中实现 `planMoveL`。
|
||
2. 使用起点 FK 得到 TCP 起点,按目标 pose 生成 TCP 直线采样 pose。
|
||
3. 使用 `KW-007` 梯形速度曲线按直线长度生成 `s/sd/sdd`。
|
||
4. 对每个采样点逐点 IK,seed 使用上一采样点关节解。
|
||
5. 每个轨迹点输出 `joints/jointVelocity/jointAcceleration/flange/tcp`。
|
||
6. 覆盖 TCP 直线误差、采样点 IK 失败、速度/加速度、奇异性和 P0 zone 近似诊断。
|
||
7. Worker runtime 和 `KdlWorkerClient` 暴露 `planMoveL`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/planMoveL.test.ts`
|
||
5. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
6. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
7. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl movel planMoveL` 通过,13 个测试文件共 54 个测试通过。
|
||
3. `npm test` 通过,13 个测试文件共 54 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. 姿态插值当前为 P0 固定目标四元数近似,完整 slerp 和 `tool_z_lock` 会在后续真实 KDL/轨迹阶段继续完善。
|
||
2. 当前 IK 基线仍只覆盖 single-prismatic 与 Rz+Px 链,通用 6 轴 MOVEL 依赖后续 Orocos KDL solver 深度接入。
|
||
3. `zone` 仍近似为 fine,连续 blend 进入 `KW-011`。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-010`:`planMoveC`。
|
||
2. 复用轨迹点结构、梯形速度曲线和逐点 IK seed 策略,补圆弧几何和退化诊断。
|
||
|
||
### 轮次 011
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-010`
|
||
本轮目标:实现 `planMoveC`,完成三点圆弧几何、圆弧采样、逐点 IK 和退化诊断。
|
||
|
||
做了什么:
|
||
|
||
1. 在 `RobotModelRegistry` 中实现 `planMoveC`。
|
||
2. 基于起点 TCP、via、target 三点计算圆心、半径、法向、角度、弧长和方向。
|
||
3. 使用 `KW-007` 梯形速度曲线按圆弧长度生成 `s/sd/sdd`。
|
||
4. 对每个圆弧采样点逐点 IK,seed 使用上一采样点关节解。
|
||
5. 每个轨迹点输出 `joints/jointVelocity/jointAcceleration/flange/tcp`。
|
||
6. `TrajectoryResult.meta.circle` 输出 `center/radius/normal/angle/length/direction/maxArcError`。
|
||
7. 三点重合或共线返回 `KDL_ARC_DEGENERATE`。
|
||
8. Worker runtime 和 `KdlWorkerClient` 暴露 `planMoveC`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/planMoveC.test.ts`
|
||
5. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
6. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
7. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl movec planMoveC` 通过,14 个测试文件共 57 个测试通过。
|
||
3. `npm test` 通过,14 个测试文件共 57 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. MOVEC 当前为 P0 三点圆弧基线,尚未覆盖 `arcMode=center/radius` 和 `circleDirection=long/cw/ccw` 的完整品牌语义。
|
||
2. 姿态插值当前为 P0 固定目标四元数近似,完整 slerp 会在后续阶段继续完善。
|
||
3. 当前 IK 基线仍限制通用 6 轴 MOVEC 覆盖范围,真实 Orocos KDL solver 接入后需补更多 golden 测试。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-011`:`planPath` 和 `validatePath`。
|
||
2. 将 MOVEJ/MOVEL/MOVEC 段轨迹合并,并保留 segmentId、targetId、sourceMap 与诊断报告。
|
||
|
||
### 轮次 012
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-011`
|
||
本轮目标:实现 `planPath` 和 `validatePath`,把 MOVEJ/MOVEL/MOVEC 段轨迹合并成整条路径,并输出段级验证报告。
|
||
|
||
做了什么:
|
||
|
||
1. 将 `MotionSegmentRequest/PathPlanRequest/PathPlanResult/SegmentValidationReport/PathValidationResult` 从占位类型改为明确结构。
|
||
2. 在 `RobotModelRegistry` 中实现 `planPath`。
|
||
3. `planPath` 按段调用 `planMoveJ/planMoveL/planMoveC`,并用上一段终点关节作为下一段起点。
|
||
4. 合并轨迹点时重新编号、累加时间,并保留 `segmentId/targetId/sourceMap`。
|
||
5. 空路径返回 `KDL_PATH_EMPTY` 结构化诊断。
|
||
6. 实现 `validatePath`,输出 `segmentReports`、`cycleTime`、速度/加速度比例、笛卡尔误差和诊断。
|
||
7. Worker runtime 和 `KdlWorkerClient` 暴露 `planPath/validatePath`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/path.test.ts`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl path validation` 通过,15 个测试文件共 60 个测试通过。
|
||
3. `npm test` 通过,15 个测试文件共 60 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. `planPath` 当前按 P0 语义串行拼接各段,尚未实现连续 blend/look-ahead。
|
||
2. `validatePath` 的笛卡尔误差从已有段诊断和 `meta.circle.maxArcError` 汇总,后续可扩展更细的路径误差统计。
|
||
3. Path 中 event 和 `run_path` 的 GRL 语法编译仍属于 `KW-104`。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-012`:节拍估算、重采样和诊断报告。
|
||
2. 继续补 `estimateCycleTime/resampleTrajectory`,为路径报告和回放采样做准备。
|
||
|
||
### 轮次 013
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-012`
|
||
本轮目标:实现节拍估算、轨迹重采样和诊断分级,为路径报告和回放采样提供基础 API。
|
||
|
||
做了什么:
|
||
|
||
1. 新增 `CycleTimeResult/CycleTimeSegment` 明确类型。
|
||
2. 实现 `estimateCycleTime`,支持单段 `TrajectoryResult` 和多段 `PathPlanResult`。
|
||
3. 实现 `resampleTrajectory`,按固定 `sampleTime` 重采样轨迹点并保持首末点稳定。
|
||
4. 重采样对关节、关节速度、关节加速度、flange 和 tcp 位置做线性插值。
|
||
5. 空轨迹返回 `KDL_RESAMPLE_EMPTY_TRAJECTORY` warning。
|
||
6. 非法采样时间抛出 `KDL_INVALID_SAMPLE_TIME` 结构化错误。
|
||
7. 成功重采样追加 `KDL_TRAJECTORY_RESAMPLED` info 诊断。
|
||
8. Worker runtime 和 `KdlWorkerClient` 暴露 `estimateCycleTime/resampleTrajectory`。
|
||
9. 将 path 段内 points 的 `segmentId/sourceMap` 与合并 points 保持一致,便于节拍和诊断定位。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/trajectoryUtils.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/trajectoryUtils.test.ts`
|
||
7. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
8. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
9. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- kdl cycle-time resample diagnostics` 通过,16 个测试文件共 63 个测试通过。
|
||
3. `npm test` 通过,16 个测试文件共 63 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. 节拍估算当前只统计 KDL 运动时间,`waitTime/ioTime` 保留为 0,完整 IO/等待节拍需等 GRL `KW-106` 接入。
|
||
2. 姿态重采样当前采用端点四元数选择的 P0 近似,完整 slerp 可在轨迹精度增强阶段补充。
|
||
3. 重采样暂未输出 TCP 速度/加速度,后续若 UI 或后处理需要可从采样点差分扩展。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-013`:C ABI / Embind 和性能优化。
|
||
2. 梳理当前 C ABI 导出、JS 包装接口和 TypedArray/批量性能基线,补最小可验收测试。
|
||
|
||
### 轮次 014
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-013`
|
||
本轮目标:稳定 C ABI 导出和错误边界,补 TypedArray 高频 FK 接口,并记录性能基线。
|
||
|
||
做了什么:
|
||
|
||
1. C++ C ABI 增加 RobotHandle 生命周期缓存:`kdl_create_robot/kdl_destroy_robot/kdl_get_robot_info`。
|
||
2. `kdl_get_robot_info` 返回 JSON handle 信息,输出缓冲区不足时返回 `KDL_BUFFER_TOO_SMALL`。
|
||
3. 保持计算类 C ABI 函数为显式 `KDL_NOT_IMPLEMENTED`,避免伪造尚未接入的 C++ solver 能力。
|
||
4. 新增 `KdlNativeAbi`,封装 C ABI 导出检查、JSON 缓冲区读取、返回码检查和 `kdl_last_error` 结构化错误。
|
||
5. 扩展 Emscripten native module 类型,覆盖 `cwrap/UTF8ToString/_malloc/_free`。
|
||
6. 新增 `fkPose7`,通过 `Float64Array` 输入和可复用输出缓冲返回 TCP pose7。
|
||
7. Worker runtime 和 `KdlWorkerClient` 暴露 `fkPose7`。
|
||
8. 新增性能基线工具,记录 6 轴初始化、TypedArray FK、平面 IK、1000 点批量可达性、10 秒 4 ms 轨迹采样。
|
||
9. 新增 C ABI、性能和 `fkPose7` 测试。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/bindings/kdl_c_api.cpp`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/nativeModule.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/nativeAbi.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/performanceBaseline.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/runtime.ts`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/kdlClient.ts`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/robot/normalizedRobotModel.ts`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/cAbi.test.ts`
|
||
10. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/performance.test.ts`
|
||
11. `/home/meswork/kdl_work/kdl-wasm/web/tests/kdl/fk.test.ts`
|
||
12. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
13. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
14. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
3. `npm run test -- kdl c-abi performance` 通过,18 个测试文件共 68 个测试通过。
|
||
4. `npm test` 通过,18 个测试文件共 70 个测试通过。
|
||
5. 性能基线:6 轴初始化 3.536 ms;TypedArray FK 平均 0.019288 ms;平面 IK 平均 0.010930 ms;1000 点可达性 7.166 ms;10 秒 4 ms 轨迹 2526 点、48.864 ms。
|
||
|
||
问题和风险:
|
||
|
||
1. C++ C ABI 当前稳定到导出、handle 生命周期和结构化错误边界,真实 FK/IK/Jacobian/轨迹求解仍由 TypeScript runtime 基线承载。
|
||
2. 性能基线中的 IK 是当前支持的平面 Rz+Px 模型,不代表通用 6 轴 IK 性能。
|
||
3. `fkPose7` 为 P0 高频 FK 输出,后续可继续补 `jacobian`/批量 FK 的 TypedArray 接口。
|
||
|
||
下一步:
|
||
|
||
1. 进入 `KW-104`:GRL Path、event 和 `run_path`。
|
||
2. 将 GRL path 语法编译到 `PathPlanRequest`,并保留 path point/source map/event 信息。
|
||
|
||
### 轮次 015
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-104`
|
||
本轮目标:实现 GRL Path、event 和 `run_path`,将 path 编译为 KDL `PathPlanRequest`。
|
||
|
||
做了什么:
|
||
|
||
1. 将 `path` 从 raw top-level declaration 提升为结构化 `PathDeclaration` AST。
|
||
2. 新增 `PathDefaultsBlock/PathSourceBlock/PathPoint/PathEvent` AST 类型。
|
||
3. Parser 支持 `defaults/source/point/event before/after/at distance`。
|
||
4. `PathPlanRequest` 扩展 `pathId/events/source`,`MotionSegmentRequest` 扩展 `targetId/source`。
|
||
5. 新增 `compilePathToPlanRequest`,把 path point 编译为 `MotionSegmentRequest`。
|
||
6. Path defaults 支持 `tool/frame/speed/zone`,优先级高于当前上下文。
|
||
7. Source metadata 编译为 `PathPlanRequest.source`,并保留到每个 segment。
|
||
8. Event 编译为 `PathEventRequest` metadata,保留 timing、pointId、distance、kind、statement、sourceMap。
|
||
9. 新增 `parseProcedureRunPathStatements`,从 proc body token 提取 `run_path` 引用并保留 sourceMap。
|
||
10. Motion target 支持 `OffsetExpression`,`movel pick offset z 100 mm` 可编译为 offset 后的 PoseTarget。
|
||
11. 空 path、重复 point、event 引用缺失 point 均返回结构化错误。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/kdl/types.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/ast.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/index.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/parser.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileData.ts`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileMotion.ts`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
10. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/pathCompile.test.ts`
|
||
11. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
12. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
13. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl path run_path event` 通过,6 个测试文件共 22 个测试通过。
|
||
3. `npm test` 通过,19 个测试文件共 75 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. Event 当前保留为 metadata,具体 IO/Wait/Pulse IR 展开属于 `KW-106`。
|
||
2. `run_path` 目前提取 path 引用和 sourceMap,完整执行流组合将在 `KW-105/KW-110` 继续增强。
|
||
3. Path 的连续 blend/look-ahead 仍由 KDL 路径规划后续阶段处理,当前 GRL 编译只负责结构展开。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-105`:Operation 和 `run_operation`。
|
||
2. 解析 operation/process/actions,并将 `run_operation` 展开为 action + path + action 的 IR 骨架。
|
||
|
||
### 轮次 016
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-105`
|
||
本轮目标:实现 GRL Operation 和 `run_operation`,将 operation 展开为 start action、path、end action 的 IR 骨架。
|
||
|
||
做了什么:
|
||
|
||
1. 将 `operation` 从 raw top-level declaration 提升为结构化 `OperationDeclaration` AST。
|
||
2. 新增 `OperationProcessBlock/OperationActionBlock` AST 类型。
|
||
3. Parser 支持 `kind/path/process/start_action/end_action`。
|
||
4. 新增 Operation IR 类型:`CompiledOperation/OperationActionInstruction/RunOperationInstruction/OperationExecutionStep`。
|
||
5. 新增 `compileOperation`,验证 operation 引用的 path 存在。
|
||
6. Process 参数编译为 metadata,保留字符串、数值、identifier 和复合字面量。
|
||
7. start/end action 编译为 metadata,保留 actionKind、operationId、statement 和 sourceMap。
|
||
8. 新增 `parseProcedureRunOperationStatements`,从 proc body token 提取 `run_operation`。
|
||
9. 新增 `expandRunOperation`,展开为 start action、`RUN_PATH`、end action。
|
||
10. 缺失 path 返回 `GRL_OPERATION_PATH_NOT_FOUND`,缺失 operation 返回 `GRL_OPERATION_NOT_FOUND`。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/ast.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/index.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/parser.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileMotion.ts`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/operationCompile.test.ts`
|
||
9. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
10. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
11. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl operation run_operation` 通过,6 个测试文件共 23 个测试通过。
|
||
3. `npm test` 通过,20 个测试文件共 79 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. Operation action 当前保留为 metadata,具体 IO/Wait/Pulse 语义将在 `KW-106` 展开。
|
||
2. `expandRunOperation` 输出 IR 骨架,完整可执行 IR 调度仍属于 `KW-110`。
|
||
3. KDL 边界仍只接收 Path 展开的 motion segment,operation action 不直接进入 KDL 运动规划。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-106`:IO、wait 和 pulse。
|
||
2. 解析 IO 地址、wait、pulse,并把 path/operation action metadata 展开为对应 IR。
|
||
|
||
### 轮次 017
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-106`
|
||
本轮目标:实现 GRL IO、wait 和 pulse 语义,将 procedure body、Path event 和 Operation action 中的 IO 语句展开为独立 IR,并保持 KDL 边界清晰。
|
||
|
||
做了什么:
|
||
|
||
1. 新增 IO IR 类型:`IoReference/IoWriteInstruction/WaitInstruction/PulseInstruction/IoFlowInstruction`。
|
||
2. 新增 `parseIoFlowStatements`,从 GRL token 编译 IO 写入、wait 和 pulse。
|
||
3. 支持 `io.di/do/ai/ao/gi/go/ri/ro` 和 `io.alias.*`,并按 `IoMap.allowedRanges` 校验地址范围。
|
||
4. 地址越界返回结构化错误 `GRL_IO_ADDRESS_NOT_FOUND`。
|
||
5. `wait` 支持条件字符串、`timeout`、`on_timeout alarm` 和 `on_timeout call`。
|
||
6. wait 条件覆盖 `all/any/rising/falling/changed` 表达式,并修正连续语句边界,避免 wait 吞掉后续 `pulse/io`。
|
||
7. `pulse` 生成 set/reset trace,并将 `ms/s` 等单位归一化为秒。
|
||
8. Operation action IR 保留原始 token,Path event metadata 保留原始 token,避免 statement 字符串丢失单位类型。
|
||
9. 新增 `compilePathEventIo` 和 `compileOperationActionIo`,可将 Path event / Operation action metadata 展开为 IO/wait/pulse IR。
|
||
10. statement fallback 使用 GRL lexer 重新解析,保持 `true/false` 和单位字面量类型正确。
|
||
11. 新增 `ioCompile.test.ts` 覆盖 procedure IO 流、alias、地址校验、wait timeout/on_timeout、pulse trace、Path event 和 Operation action 展开。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileIo.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileMotion.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/ioCompile.test.ts`
|
||
7. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
8. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
9. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl io wait pulse` 通过,7 个测试文件共 28 个测试通过。
|
||
3. `npm test` 通过,21 个测试文件共 84 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. `WaitInstruction.condition` 当前保留为字符串 IR,尚未建立布尔表达式 AST;更完整的静态类型检查归入 `KW-110`。
|
||
2. IO/wait/pulse 当前作为独立 GRL IR,不直接进入 KDL;完整执行调度和与 path/operation 的顺序组合仍属于 `KW-110`。
|
||
3. IO alias 只在可解析为 `IoReference` 的位置解析;wait 条件内部的 alias 仍以条件字符串保留。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-107`:流程控制。
|
||
2. 解析 `if/elseif/else`、`while`、`for`、`switch`、`break/continue`、`label/jump`,并补充结构化流程 IR 和非法跳转诊断。
|
||
|
||
### 轮次 018
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-107`
|
||
本轮目标:实现 GRL 流程控制语义层,将 procedure body token 编译为结构化流程 IR,并覆盖关键合法性诊断。
|
||
|
||
做了什么:
|
||
|
||
1. 新增流程控制 IR 类型:`ControlExpression/RawProcedureStatement/IfInstruction/WhileInstruction/ForInstruction/SwitchInstruction/BreakInstruction/ContinueInstruction/LabelInstruction/JumpInstruction`。
|
||
2. 新增 `parseProcedureControlFlow` 和 `parseControlFlowStatements`。
|
||
3. 支持 `if/elseif/else`,每个分支保留条件文本、原始 token、sourceMap 和嵌套 body。
|
||
4. 支持 `while` 和 `for i = from to to step step`,并维护 loop depth。
|
||
5. 支持 `switch/case/default`,case 值编译为常量,重复 case/default 返回结构化错误。
|
||
6. `break` 限定在 loop 或 switch 内,`continue` 限定在 loop 内。
|
||
7. `label/jump` 支持重复 label、缺失 label 和跳入内层块诊断。
|
||
8. 控制条件做 P0 bool 检查,明显数值/字符串条件报 `GRL_CONTROL_CONDITION_NOT_BOOL`。
|
||
9. 未识别普通语句保留为 `RAW_STATEMENT`,便于后续 KW-110 将 motion/io/run 等 IR 统一组合。
|
||
10. 新增 `controlFlow.test.ts` 覆盖正常流程树、非法条件、break/continue、switch case、label/jump。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileControlFlow.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/controlFlow.test.ts`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl control-flow` 通过,8 个测试文件共 33 个测试通过。
|
||
3. `npm test` 通过,22 个测试文件共 89 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. 条件 bool 检查目前是 P0 语法/字面量级别;基于 symbol table 的完整类型判断属于 `KW-110`。
|
||
2. 普通语句暂存为 `RAW_STATEMENT`,完整可执行 IR 顺序组合属于 `KW-110`。
|
||
3. label/jump 当前按块作用域防止跳入内层或兄弟块,未做更复杂的异常/多任务边界检查。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-108`:proc、func、参数方向和作用域。
|
||
2. 建立过程/函数签名、call/return 语义、参数方向检查和函数副作用限制。
|
||
|
||
### 轮次 019
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-108`
|
||
本轮目标:实现 GRL proc/func/call/return 语义检查,覆盖参数方向、返回路径、作用域和函数副作用限制。
|
||
|
||
做了什么:
|
||
|
||
1. 将 `func` 从 `RawTopLevelDeclaration` 提升为结构化 `FunctionDeclaration` AST。
|
||
2. Parser 支持 `func return_type name(params) ... end`,保留参数 token 和 body token。
|
||
3. 新增 routine IR 类型:`ProcedureSignature/FunctionSignature/RoutineParameter/CallInstruction/ReturnInstruction/ProcFunctionAnalysis`。
|
||
4. 新增 `analyzeProcFunctionSemantics`,统一建立 proc/func 签名表。
|
||
5. 支持 `in/out/inout` 参数方向解析,默认参数方向为 `in`。
|
||
6. `call` 检查目标存在、参数数量、基础类型兼容和 out/inout 左值。
|
||
7. `out` 参数做所有正常返回路径赋值检查,并支持通过调用带 out/inout 参数的子过程完成赋值。
|
||
8. `return` 检查 proc 不能带返回值,func 必须返回且返回类型兼容。
|
||
9. func 默认禁止运动、`wait`、`pulse`、`run_path`、`run_operation` 和调用 procedure。
|
||
10. 自递归和名称遮蔽以 warning diagnostic 返回。
|
||
11. 新增 `procFunction.test.ts` 覆盖签名、call/return、out 赋值路径、左值检查、返回类型、函数副作用、递归 warning 和遮蔽 warning。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/ast.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ast/index.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/parser.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileProcFunction.ts`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/procFunction.test.ts`
|
||
9. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
10. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
11. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl proc func scope` 通过,9 个测试文件共 39 个测试通过。
|
||
3. `npm test` 通过,23 个测试文件共 95 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. 参数和返回类型检查目前覆盖基础字面量、变量和简单函数调用,完整表达式类型推断仍归入 `KW-110`。
|
||
2. out 赋值路径采用保守控制流合并模型,异常路径和复杂 early-exit 仍待 `KW-109/KW-110` 联合完善。
|
||
3. 名称解析当前覆盖全局名、参数和本地声明,完整 symbol table 仍属于 `KW-110`。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-109`:异常、报警、中断和多任务语法。
|
||
2. P0 实现 alarm/raise/try/catch/finally 基础语义,P1 trap/interrupt/task 保留可解析结构和明确诊断。
|
||
|
||
### 轮次 020
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-109`
|
||
本轮目标:实现 GRL alarm/raise/try/catch/finally 基础语义,并为 P1 trap/interrupt/task 提供可解析结构和明确未实现诊断。
|
||
|
||
做了什么:
|
||
|
||
1. 新增异常/报警 IR 类型:`AlarmInstruction/RaiseInstruction/TryInstruction/CatchInstruction/FinallyInstruction/UnsupportedRuntimeInstruction`。
|
||
2. 新增 `parseProcedureExceptionFlow` 和 `parseExceptionFlowStatements`。
|
||
3. 支持 procedure body 中的 `alarm`,保留 alarm id、message、severity 和 sourceMap。
|
||
4. 支持 `raise alarm_id`。
|
||
5. 支持 `try/catch/finally/end`,catch 可带 alarm id。
|
||
6. `try` 没有 catch/finally 时返回 `GRL_TRY_HANDLER_MISSING`。
|
||
7. `alarm` 或 `raise` 缺少 id 时返回结构化错误。
|
||
8. 修正 top-level raw parser,使 `task ... cycle ... end` 按 end-style block 收集,不再要求 `{}`。
|
||
9. `trap` 和 `task` 保留为完整 `RawTopLevelDeclaration` token block。
|
||
10. 新增 `analyzeExceptionSemantics`,对 P1 trap/task 输出 `UNSUPPORTED_RUNTIME` 和 `GRL_P1_UNIMPLEMENTED` warning。
|
||
11. procedure body 内 `enable/disable interrupt` 输出 `UNSUPPORTED_RUNTIME`,明确 P0 不执行。
|
||
12. 新增 `exceptionCompile.test.ts` 覆盖 alarm/raise、try/catch/finally、trap/task raw 语法和 P1 未实现诊断。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/parser/parser.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileException.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/exceptionCompile.test.ts`
|
||
7. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
8. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
9. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl alarm interrupt task` 通过,10 个测试文件共 43 个测试通过。
|
||
3. `npm test` 通过,24 个测试文件共 99 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. P1 trap/interrupt/task 当前只解析和诊断,不执行调度。
|
||
2. 异常传播、finally 在复杂控制流中的执行顺序仍留给 `KW-110` 的统一 executable IR。
|
||
3. alarm/raise 目前只编译为 IR,不接入运行时报警系统。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-110`:语义检查、IR 和 source map。
|
||
2. 统一 Motion/IO/Wait/Call/Branch/Alarm/Return 等 IR,补齐第 21 章语义检查和 source map 快照。
|
||
|
||
### 轮次 021
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-110`
|
||
本轮目标:实现统一 Semantic Analyzer、Executable IR、source map 聚合和 GRL 到 KDL request 的编译桥接。
|
||
|
||
做了什么:
|
||
|
||
1. 新增统一语义 IR:`SemanticProgramIr/SemanticSymbol/SemanticSourceMapEntry/ExecutableProcedure/ExecutableInstruction`。
|
||
2. 新增 executable control IR:`EXEC_IF/EXEC_WHILE/EXEC_FOR/EXEC_SWITCH`。
|
||
3. 新增 `compileSemanticProgram`,组合前序数据、target、path、operation、IO、流程控制、proc/func、异常/报警分析结果。
|
||
4. 输出 `symbols` 符号表,覆盖 data、target、path、operation、procedure、function、raw P1 declaration。
|
||
5. 输出 22 项 `semanticChecks` 清单,对齐 GRL 第 21 章 P0 检查面。
|
||
6. 统一 procedure executable IR,覆盖 Motion、IO、Wait、Pulse、RunPath、RunOperation、Call、Return、Branch、Alarm、UnsupportedRuntime。
|
||
7. 通过 `kdlBridge.motionRequests` 将 executable motion 映射为 KDL request。
|
||
8. 通过 `kdlBridge.pathRequests` 保留 PathPlanRequest。
|
||
9. 聚合 source map,覆盖 procedure 行列、path point/event、operation action。
|
||
10. 重复符号输出 `GRL_SYMBOL_DUPLICATE` diagnostic。
|
||
11. 修正 motion 参数解析跨行边界,避免 motion 表达式吞掉下一行 IO/wait/control token。
|
||
12. 新增 `semanticIr.test.ts` 覆盖完整程序、统一 IR、KDL bridge、source map 和重复符号诊断。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/motion.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/ir/index.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileMotion.ts`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/compileSemantic.ts`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/semantic/index.ts`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/tests/grl/semanticIr.test.ts`
|
||
7. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
8. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
9. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- grl semantic ir sourcemap` 通过,11 个测试文件共 46 个测试通过。
|
||
3. `npm test` 通过,25 个测试文件共 102 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. `semanticChecks` 当前是 P0 检查面清单,完整逐项 spec 编号映射可在规范文本稳定后继续细化。
|
||
2. Executable IR 已统一主要 P0 指令,但虚拟控制器实际调度仍在后续任务中接入。
|
||
3. KDL bridge 当前覆盖 motion/path request,IO、Alarm、Call、Branch 不直接调用 KDL,符合边界设计。
|
||
|
||
下一步:
|
||
|
||
1. 执行 `KW-111`:ABB、FANUC、KUKA 后处理原型。
|
||
2. 基于 `SemanticProgramIr` 输出三品牌后处理 golden file 和转换报告。
|
||
|
||
### 轮次 022
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-111`
|
||
本轮目标:实现 ABB RAPID、FANUC LS/TP 风格、KUKA KRL 三品牌后处理原型,并输出转换报告。
|
||
|
||
做了什么:
|
||
|
||
1. 新增 `kdl-wasm/web/src/grl/post` 后处理模块。
|
||
2. 新增 `postProcessBrand` 和 `postProcessAllBrands`,以 `SemanticProgramIr` 为输入。
|
||
3. ABB RAPID 原型输出 `MODULE/PROC`、`MoveJ/MoveL/MoveC`、`SetDO`、`WaitUntil`、`PulseDO`。
|
||
4. FANUC LS/TP 风格原型输出 `/PROG`、`/MN`、`J/L/C`、`DO`、`WAIT`、`PULSE`。
|
||
5. KUKA KRL 原型输出 `DEF`、`PTP/LIN/CIRC`、`$OUT`、`WAIT FOR`、`PULSE`。
|
||
6. speed/zone 映射覆盖 joint percent、linear speed、fine、distance zone。
|
||
7. `post_hint abb` 对 ABB 生效,对 FANUC/KUKA 产生 `GRL_POST_HINT_IGNORED` report。
|
||
8. 不支持的 executable IR 产生 `GRL_POST_UNSUPPORTED` report。
|
||
9. 新增 `postProcessor.test.ts`,用 golden 字符串覆盖三品牌文本和转换报告。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/post/postProcessor.ts`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/grl/post/index.ts`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/tests/post/postProcessor.test.ts`
|
||
4. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
5. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
6. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- post abb fanuc kuka` 通过,1 个测试文件共 2 个测试通过。
|
||
3. `npm test` 通过,26 个测试文件共 104 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
|
||
问题和风险:
|
||
|
||
1. FANUC 输出为 LS/TP 风格文本原型,并非完整 TP 二进制。
|
||
2. 品牌扩展目前以 `post_hint` raw symbol 为主,`@brand.*` 装饰语法仍留作后续扩展。
|
||
3. 后处理当前覆盖 P0 运动、IO、wait、pulse;更复杂流程控制展开策略可在后续虚拟控制器阶段细化。
|
||
|
||
下一步:
|
||
|
||
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/working/README.md`
|
||
3. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
4. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
5. `/home/meswork/kdl_work/working/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/working/README.md`
|
||
6. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
7. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
8. `/home/meswork/kdl_work/working/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。
|
||
|
||
### 轮次 025
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-003`、`KW-004`、`KW-007`、`KW-013`
|
||
本轮目标:闭合轮次 024 遗留的 native `fkAllLinks` JSON 输出、native IK 和 native sampleTrap C ABI 基线。
|
||
|
||
做了什么:
|
||
|
||
1. C ABI 增加 native `kdl_fk_all_links` JSON 序列化,输出 `{ ok, linkPoses, diagnostics }`,并过滤 KDL 内部 origin 辅助段。
|
||
2. CMake 接入 Orocos KDL `ChainIkSolverPos_LMA` 源文件。
|
||
3. `RobotRecord` 持有 native IK solver,随 KDL Chain 生命周期稳定构造。
|
||
4. 实现 native `kdl_ik`,从 pose7 归一化四元数构造 KDL Frame,并输出 joint buffer。
|
||
5. 实现 native `kdl_sample_trap`,输出完整 trapezoid/triangle profile JSON,覆盖 zero length、triangle fallback 和非法输入诊断。
|
||
6. 扩展 `cAbi.test.ts`,覆盖 native FK、fkAllLinks、Jacobian、IK、sampleTrap 和结构化失败路径。
|
||
7. 更新 `README.md`、任务矩阵和验收证据,修正 native IK/fkAllLinks 的旧待办表述。
|
||
|
||
改了哪些文件:
|
||
|
||
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/tests/kdl/cAbi.test.ts`
|
||
4. `/home/meswork/kdl_work/working/README.md`
|
||
5. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
6. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
7. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
2. `npm run test -- kdl cAbi trapProfile` 通过,27 个测试文件共 109 个测试通过。
|
||
3. `npm run typecheck` 通过。
|
||
4. `npm test` 通过,27 个测试文件共 109 个测试通过。
|
||
|
||
问题和风险:
|
||
|
||
1. Worker runtime 当前仍由 TypeScript registry 管理高层机器人句柄;native C ABI 已覆盖 FK、fkAllLinks、Jacobian、IK 和 sampleTrap,但尚未成为 Worker 默认计算路径。
|
||
2. native `planMoveJ/planMoveL/planMoveC/planPath` 仍保留稳定导出边界,高层轨迹规划继续由 TypeScript runtime 基线承载。
|
||
3. C ABI 轻量 JSON 解析仍只覆盖当前 `NormalizedRobotModel` 和 trap options 必需字段,后续 schema 扩展需要同步增强。
|
||
|
||
下一步:
|
||
|
||
1. 若继续深化 KDL native 主线,优先设计 Worker 中 TypeScript handle 与 native RobotHandle 的映射关系。
|
||
2. 映射稳定后,再逐步把 `planMoveJ/planMoveL/planMoveC/planPath` 从 TypeScript runtime 切到 native solver 或 native-assisted solver。
|
||
|
||
### 轮次 026
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-000`、`KW-001` 到 `KW-013`、`KW-100` 到 `KW-112`
|
||
本轮目标:按当前 `/home/meswork/kdl_work/working` 目录完成全量收口核对,确认任务矩阵、验收证据和实现侧验证一致。
|
||
|
||
做了什么:
|
||
|
||
1. 复核 `working` 目录 README、任务矩阵、推进台账、验收证据和 ADR。
|
||
2. 将文档中仍指向旧实施目录的路径统一为 `/home/meswork/kdl_work/working`。
|
||
3. 执行实现侧全量验证:TypeScript 类型检查、Vitest 全量测试、WASM 构建。
|
||
4. 确认任务矩阵中 `KW-001` 到 `KW-013`、`KW-100` 到 `KW-112` 均为 `Done`。
|
||
5. 确认当前实现包含 KDL Worker/TS API、URDF 标准模型、KDL C ABI native Chain、native FK/fkAllLinks/Jacobian/IK/sampleTrap、轨迹规划 TS runtime、GRL lexer/parser/semantic IR/post/generator。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/working/README.md`
|
||
2. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
3. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
4. `/home/meswork/kdl_work/working/06-决策记录.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm test` 通过,27 个测试文件共 109 个测试通过。
|
||
3. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
4. `rg -n 'work[i]ng1|work/work[i]ng1|/home/meswork/kdl_work/work/work[i]ng1' /home/meswork/kdl_work/working` 无匹配。
|
||
|
||
问题和风险:
|
||
|
||
1. P0 任务已按当前文档范围闭合;高层 `planMoveJ/planMoveL/planMoveC/planPath` 仍由 TypeScript runtime 基线承载,native C ABI 已保留稳定导出边界。
|
||
2. Worker 默认计算路径仍以 TypeScript registry 管理高层机器人句柄;native FK/fkAllLinks/Jacobian/IK/sampleTrap 已通过 C ABI 测试。
|
||
|
||
下一步:
|
||
|
||
1. 当前 `working` 目录任务已全部完成并有验收证据。
|
||
2. 若后续继续深化 native 主线,可单独新增任务把 Worker 默认路径切到 native solver 或 native-assisted solver。
|
||
|
||
### 轮次 027
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-000`、`KW-200` 到 `KW-208`
|
||
本轮目标:根据用户要求,将 `/home/meswork/kdl_work/working` 从原 KDL/GRL 双文档对标扩展为 `/home/meswork/kdl_work/work/doc` 全目录五份 Markdown 源文档对标。
|
||
|
||
做了什么:
|
||
|
||
1. 读取 `/home/meswork/kdl_work/work/doc` 源文档清单,确认需要纳入 5 份 Markdown:
|
||
- `KDL_WASM计算接口设计.md`
|
||
- `通用机器人编程语法规范.md`
|
||
- `通用机器人离线编程虚拟控制器技术方案.md`
|
||
- `通用机器人项目主要实施步骤.md`
|
||
- `通用机器人项目功能与数据流程图.md`
|
||
2. 更新 README,将实施主线从 KDL/GRL 两条扩展为 GRL、KDL WASM、虚拟控制器、OLP 工作台/工作区、数据流/集成验收五条。
|
||
3. 更新功能范围,补充虚拟控制器状态机、IO Service、Wait、Motion Queue、OPFS、Web 工作台、品牌导入、报告、客户交付包、数据流和线程模型。
|
||
4. 更新开发步骤,新增 `KW-200` 到 `KW-208` 的后续实施步骤。
|
||
5. 更新任务矩阵,新增 `KW-200` 到 `KW-208` 总任务和子任务,并全部保持 `Todo`,避免把尚未实现的虚拟控制器、OPFS、UI、报告和品牌导入误标为完成。
|
||
6. 更新验收证据,新增全目录对标任务入库证据,并明确 `KW-200` 到 `KW-208` 需要后续实现验收。
|
||
7. 更新 ADR,将 `working` 范围改为 `work/doc` 全目录对标,并新增统一 IR、OPFS 导入导出、工作台首屏、品牌导入、报告和客户交付包决策。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/working/README.md`
|
||
2. `/home/meswork/kdl_work/working/01-项目功能内容.md`
|
||
3. `/home/meswork/kdl_work/working/02-项目程序开发详细步骤.md`
|
||
4. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
5. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
6. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
7. `/home/meswork/kdl_work/working/06-决策记录.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `find /home/meswork/kdl_work/work/doc -maxdepth 1 -type f -name '*.md' -print | sort` 确认 5 份源文档。
|
||
2. `rg -n 'KW-20[0-8]' working/02-项目程序开发详细步骤.md working/04-任务矩阵.md` 确认新增任务进入步骤和矩阵。
|
||
3. `rg -n '虚拟控制器|OPFS|品牌程序导入|客户交付包|IO 脚本|Wait 调试|OLP 对象模型' working` 确认新增主线进入工作文档。
|
||
4. `rg -n '^\\| KW-[0-9]+ \\|.*\\| (Doing|Blocked|Review) \\|' working/04-任务矩阵.md` 无匹配,确认没有半完成状态任务。
|
||
|
||
问题和风险:
|
||
|
||
1. `KW-001` 到 `KW-013`、`KW-100` 到 `KW-112` 仍是已实现并有证据的 KDL/GRL 范围。
|
||
2. `KW-200` 到 `KW-208` 是本轮从全目录对标新增的后续实施任务,当前只有文档入库证据,没有实现验收证据。
|
||
3. 虚拟控制器、OPFS、UI、品牌导入、报告和客户交付包涉及新模块,后续实现会扩大测试面和前端验证面。
|
||
|
||
下一步:
|
||
|
||
1. 若继续推进全目录 MVP,实现顺序建议从 `KW-200` OLP 对象模型和 `KW-201` OPFS Workspace 开始。
|
||
2. 再进入 `KW-202` 虚拟控制器状态机和 `KW-204` IO/Wait 运行时。
|
||
|
||
### 轮次 028
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-000`、`KW-209` 到 `KW-211`
|
||
本轮目标:根据用户补充要求,将 `/home/meswork/kdl_work/working` 的覆盖范围从 `/home/meswork/kdl_work/work/doc` Markdown 正文扩展到 `/home/meswork/kdl_work/work` 下全部文档资产和全部功能。
|
||
|
||
做了什么:
|
||
|
||
1. 重新扫描 `/home/meswork/kdl_work/work`,确认除 5 份 Markdown 外,还包含:
|
||
- `flow-01.mmd` 到 `flow-05.mmd`
|
||
- `flow-01.png` 到 `flow-05.png`
|
||
2. 更新 README,把覆盖对象改为 `/home/meswork/kdl_work/work` 下全部文档资产,包括 Markdown、Mermaid 源图和 PNG 渲染图。
|
||
3. 更新功能范围,新增 `/work` 全功能覆盖索引,将每份 Markdown、每张流程图源和 PNG 映射到任务编号。
|
||
4. 更新开发步骤,新增:
|
||
- `KW-209`:虚拟调试增强和跨源定位。
|
||
- `KW-210`:多机器人、外部轴和真实控制器校验扩展。
|
||
- `KW-211`:流程图资产覆盖和同步维护。
|
||
5. 更新任务矩阵,把 `KW-209` 到 `KW-211` 加入总表和子任务表,补齐虚拟调试、商业级扩展、流程图资产同步这些之前过粗的功能面。
|
||
6. 更新验收证据,新增 `EV-201`,记录 `/work` 下 5 份 Markdown、5 份 `.mmd` 和 5 份 `.png` 全部纳入覆盖。
|
||
7. 更新 ADR,将 ADR-001 改为 `/work` 全部文档资产对标,并新增流程图资产同步、商业级扩展任务归属决策。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/working/README.md`
|
||
2. `/home/meswork/kdl_work/working/01-项目功能内容.md`
|
||
3. `/home/meswork/kdl_work/working/02-项目程序开发详细步骤.md`
|
||
4. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
5. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
6. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
7. `/home/meswork/kdl_work/working/06-决策记录.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `find /home/meswork/kdl_work/work -maxdepth 3 -type f -print | sort` 确认全部文档资产。
|
||
2. `find /home/meswork/kdl_work/work/doc/通用机器人项目功能与数据流程图-png -maxdepth 1 -type f -printf '%f %s bytes\n' | sort` 确认 5 份 `.mmd` 和 5 份 `.png`。
|
||
3. `rg -n 'KW-20[9]|KW-210|KW-211' working/01-项目功能内容.md working/02-项目程序开发详细步骤.md working/04-任务矩阵.md` 确认新增任务进入功能、步骤和矩阵。
|
||
4. `rg -n 'flow-01|flow-02|flow-03|flow-04|flow-05|流程图资产' working` 确认流程图资产进入 working 文档。
|
||
|
||
问题和风险:
|
||
|
||
1. `KW-209` 到 `KW-211` 当前是文档覆盖和后续任务入库,不是实现完成。
|
||
2. 完整虚拟调试、多机器人、外部轴、真实控制器校验、流程图同步检查涉及后续新增代码、UI 和测试。
|
||
3. 商业级扩展不应阻塞 KDL/GRL 已完成 P0,但不能从任务矩阵中省略。
|
||
|
||
下一步:
|
||
|
||
1. 若继续实现全功能 MVP,优先从 `KW-200`、`KW-201`、`KW-202`、`KW-204` 开始。
|
||
2. 若要先补文档自动一致性,可优先实现 `KW-211` 的流程图资产同步检查。
|
||
|
||
### 轮次 029
|
||
|
||
日期:2026-06-27
|
||
关联任务:`KW-200` 到 `KW-211`
|
||
本轮目标:按用户要求完成 `/home/meswork/kdl_work/working` 中剩余全部任务的实现、验证和文档收口。
|
||
|
||
做了什么:
|
||
|
||
1. 新增 OLP 对象模型、JSON patch、Path/Operation 到 GRL 生成、几何路径生成、基础碰撞和校准应用模块。
|
||
2. 新增 Workspace 存储模块,覆盖 OPFS-like async storage、`project.json` manifest、文本/JSON 读写删除、snapshot/restore、migration、损坏检测和稳定 JSON bundle 导入导出。
|
||
3. 新增虚拟控制器状态机、IR 执行内核、trace/source map、Motion Queue、KDL runtime bridge、IO runtime、wait/pulse/edge/script 支持。
|
||
4. 新增 Workbench/Debug facade,覆盖对象树、编辑器、示教器、IO 面板、报告入口、断点、运动断点、变量 watch、轨迹回放和跨源定位。
|
||
5. 新增报告和客户交付包模块,覆盖验证报告 JSON schema、HTML 报告、源程序/品牌程序/IO map/报告/校准/trace 交付 bundle。
|
||
6. 新增 ABB、KUKA、FANUC 品牌导入 MVP,生成 OLP patch、GRL、Semantic IR 和导入报告。
|
||
7. 新增流程图资产覆盖检查,自动校验 `flow-01` 到 `flow-05` 的 Mermaid/PNG 资产、关键术语和任务映射。
|
||
8. 整合并行实现中的 API 冲突和严格 TypeScript 可选属性问题,保证全量类型检查和测试通过。
|
||
9. 更新 README、任务矩阵、验收证据和 ADR,将 `KW-200` 到 `KW-211` 标记为完成并补充实现证据。
|
||
|
||
改了哪些文件:
|
||
|
||
1. `/home/meswork/kdl_work/kdl-wasm/web/src/olp/*`
|
||
2. `/home/meswork/kdl_work/kdl-wasm/web/src/workspace/*`
|
||
3. `/home/meswork/kdl_work/kdl-wasm/web/src/controller/*`
|
||
4. `/home/meswork/kdl_work/kdl-wasm/web/src/runtime/*`
|
||
5. `/home/meswork/kdl_work/kdl-wasm/web/src/workbench/*`
|
||
6. `/home/meswork/kdl_work/kdl-wasm/web/src/reports/*`
|
||
7. `/home/meswork/kdl_work/kdl-wasm/web/src/importers/*`
|
||
8. `/home/meswork/kdl_work/kdl-wasm/web/src/docs/*`
|
||
9. `/home/meswork/kdl_work/kdl-wasm/web/tests/{olp,workspace,controller,runtime,workbench,reports,importers,docs}/*`
|
||
10. `/home/meswork/kdl_work/working/README.md`
|
||
11. `/home/meswork/kdl_work/working/03-推进台账.md`
|
||
12. `/home/meswork/kdl_work/working/04-任务矩阵.md`
|
||
13. `/home/meswork/kdl_work/working/05-验收证据.md`
|
||
14. `/home/meswork/kdl_work/working/06-决策记录.md`
|
||
|
||
验证了什么:
|
||
|
||
1. `npm run typecheck` 通过。
|
||
2. `npm run test -- controller runtime workbench workspace importers reports olp docs` 通过,10 个测试文件共 31 个测试通过。
|
||
3. `npm test` 通过,38 个测试文件共 146 个测试通过。
|
||
4. `cmake --build kdl-wasm/build-wasm -j16` 通过。
|
||
5. `validateFlowAssetCoverage` 检查 5 份 Mermaid 源图和 5 份 PNG 渲染资产均存在且映射到任务。
|
||
|
||
问题和风险:
|
||
|
||
1. Workspace 导入导出使用稳定 JSON bundle 完成 MVP 验收,真实 `.zip` 封装可作为外层适配接入。
|
||
2. Workbench 当前是可测试的数据 facade,不包含浏览器 DOM UI。
|
||
3. 真实控制器通信、完整 CAD kernel、高精度轨迹复现和品牌控制器 look-ahead 完全复刻仍是非 MVP 边界。
|
||
|
||
下一步:
|
||
|
||
1. 当前 `working` 目录任务已全部完成并有验收证据。
|