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

1421 lines
72 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.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. 对每个采样点逐点 IKseed 使用上一采样点关节解。
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. 对每个圆弧采样点逐点 IKseed 使用上一采样点关节解。
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 msTypedArray FK 平均 0.019288 ms平面 IK 平均 0.010930 ms1000 点可达性 7.166 ms10 秒 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 segmentoperation 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 保留原始 tokenPath 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 requestIO、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` 目录任务已全部完成并有验收证据。