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