Files
KDL_WORK/working/02-项目程序开发详细步骤.md
2026-06-28 08:20:33 +08:00

869 lines
24 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.
# 02-项目程序开发详细步骤
版本0.5
日期2026-06-27
对标文档:
1. `/home/meswork/kdl_work/work/doc/KDL_WASM计算接口设计.md`
2. `/home/meswork/kdl_work/work/doc/通用机器人编程语法规范.md`
3. `/home/meswork/kdl_work/work/doc/通用机器人离线编程虚拟控制器技术方案.md`
4. `/home/meswork/kdl_work/work/doc/通用机器人项目主要实施步骤.md`
5. `/home/meswork/kdl_work/work/doc/通用机器人项目功能与数据流程图.md`
6. `/home/meswork/kdl_work/work/doc/通用机器人项目功能与数据流程图-png/flow-01.mmd``flow-05.mmd`
7. `/home/meswork/kdl_work/work/doc/通用机器人项目功能与数据流程图-png/flow-01.png``flow-05.png`
## 1. 推荐目录
目录按五条主线组织:`grl` 负责语言、AST、语义、IR、后处理`kdl-wasm` 负责 KDL Worker API 和运动计算;`controller` 负责虚拟控制器、IO、wait、trace`workspace``station` 负责 OPFS、OLP 对象模型和资源;`reports/importers/ui` 负责报告、品牌导入和工作台。
```text
/home/meswork/kdl_work/
orocos_kinematics_dynamics/
orocos_kdl/
kdl-wasm/
CMakeLists.txt
bindings/
kdl_c_api.cpp
kdl_embind.cpp
web/
src/
kdl/
kdlClient.ts
kdl.worker.ts
rpc.ts
types.ts
robot/
urdfParser.ts
normalizedRobotModel.ts
grl/
lexer/
parser/
ast/
semantic/
ir/
generator/
post/
abb/
fanuc/
kuka/
controller/
runtime/
io/
alarm/
debug/
workspace/
opfs.ts
project.ts
importExport.ts
station/
stationModel.ts
resources.ts
olp/
model.ts
path.ts
operation.ts
importers/
abb/
fanuc/
kuka/
reports/
reportModel.ts
htmlReport.ts
jsonReport.ts
ui/
appShell.ts
tests/
kdl/
grl/
controller/
workspace/
reports/
importers/
integration/
post/
```
## 2. KDL 实施线
KDL 实施顺序严格对标 `KDL_WASM计算接口设计.md` 第 24 章。
### 2.1 KW-001WASM 工程骨架和 Worker RPC
目标:
1. 新建 `kdl-wasm` wrapper 工程。
2. 使用 Emscripten 编译 Orocos KDL。
3. 生成 `kdl.js``kdl.wasm``kdl.d.ts`
4. 建立 `KdlRpcRequest/KdlRpcResponse`
5. 建立 `KdlWorkerClient`,所有 KDL API 异步调用。
核心要求:
1. KDL 运行在 Worker 中。
2. Worker 请求必须有唯一 id。
3. Worker 初始化失败可恢复并重新初始化。
4. 错误返回结构化 `{ code, message, diagnostics }`
验收:
1. `init()` 返回 `KdlRuntimeInfo`
2. `dispose()` 可释放 Worker。
3. Worker RPC 单元测试通过。
### 2.2 KW-002`NormalizedRobotModel` 到 KDL Chain
目标:
1. TypeScript 解析 URDF XML。
2. 检查 link/joint 连通性和单位。
3. 生成 `NormalizedRobotModel`
4. WASM 根据标准模型构造 KDL `Tree/Chain`
5. 创建 `RobotHandle` 并缓存求解器。
必须实现:
1. `loadRobotFromUrdf`
2. `createRobotFromModel`
3. `destroyRobot`
4. `getRobotInfo`
5. `getJointLimits`
验收:
1. URDF joint 顺序稳定。
2. base/tip 不连通返回 `KDL_INVALID_MODEL`
3. 不支持 joint 类型返回诊断。
4. 机器人信息中的 `dof/jointNames/limits` 正确。
### 2.3 KW-003FK 和 fkAllLinks
目标:
1. 实现 `fk`
2. 实现 `fkAllLinks`
3. 支持 tool/frame 选项。
4. 输出法兰位姿、TCP 位姿和 link 位姿。
验收:
1. FK 与 golden 数据或原生 KDL 对比在容差内。
2. `fkAllLinks` link 数量和顺序正确。
3. 关节维度错误有结构化诊断。
### 2.4 KW-004IK 和 ikBatch
目标:
1. 实现 `ik`
2. 实现 `ikBatch`
3. 支持 seed、qMin/qMax、多 seed、容差、最大迭代次数。
4. 失败原因覆盖 `unreachable/joint_limit/singularity/max_iteration/invalid_model`
验收:
1. IK 后 FK 回代误差小于容差。
2. `ikBatch` 返回顺序与输入顺序一致。
3. 不可达目标返回 `KDL_TARGET_UNREACHABLE``KDL_IK_FAILED`
4. 连续点 seed 使用上一点结果。
### 2.5 KW-005Jacobian、奇异性和基础检查
目标:
1. 实现 `jacobian`
2. 实现 `checkSingularity`
3. 实现 `checkJointLimits`
4. 实现 `checkReachability``checkReachabilityBatch`
5. 实现 `checkVelocityLimits`
验收:
1. Jacobian 行列数正确。
2. 奇异点附近产生 `KDL_SINGULARITY` warning。
3. 关节超限产生 `KDL_JOINT_LIMIT`
4. 批量可达性保持输入顺序。
### 2.6 KW-006位姿变换和 offset
目标:
1. 实现 `normalizePose`
2. 实现 `composePose`
3. 实现 `inversePose`
4. 实现 `applyToolAndFrame`
5. 实现 `applyOffset`
验收:
1. `pose()` 欧拉角可规范化为四元数。
2. `poseq()` 四元数可归一化。
3. `offset` 默认在 frame 下解释。
4. `offset_in tool``offset_in frame fixture` 结果正确。
### 2.7 KW-007梯形速度曲线
目标:
1. 实现 `makeTrapProfile`
2. 实现 `sampleTrapProfile`
3. 长距离输出 trapezoid。
4. 短距离自动退化为 triangle。
验收:
1. 首点 `s=0`
2. 末点 `s=1`
3. `s` 单调递增。
4. 所有 `TrajectoryResult` 保留实际速度曲线采样。
### 2.8 KW-008`planMoveJ`
目标:
1. 对应 GRL `movej`
2. target 为 `joint_target` 时直接得到 `qEnd`
3. target 为 `pose_target` 时先 IK。
4. 按关节速度、加速度约束计算同步运动时长。
5. 每个采样点 FK 输出 TCP。
必须诊断:
1. 目标 IK 失败。
2. 起点或终点关节超限。
3. 采样点速度或加速度超限。
4. 接近奇异点。
5. P0 zone 被近似为 fine。
### 2.9 KW-009`planMoveL`
目标:
1. 对应 GRL `movel`
2. 起点由 `startJoints` FK 得到。
3. 目标点应用 tool/frame/offset。
4. 生成 TCP 直线采样。
5. 姿态使用 fixed 或 slerp。
6. 每个采样点 IKseed 使用上一采样点关节。
必须诊断:
1. 目标不可达。
2. 采样点 IK 失败。
3. TCP 直线误差超过容差。
4. 姿态误差超过容差。
5. 关节配置突变。
6. 速度或加速度超限。
### 2.10 KW-010`planMoveC`
目标:
1. 对应 GRL `movec via ... target ...`
2. 起点由当前关节 FK 得到。
3. via 和 target 应用 tool/frame/offset。
4. 检查三点重合或近似共线。
5. 计算圆心、半径、法向、角度、弧长。
6. 每个圆弧采样点 IK。
7. `TrajectoryResult.meta.circle` 包含 `CirclePlanMeta`
必须诊断:
1. via 或 target 不可达。
2. 三点重合、近似重合或近似共线。
3. 半径过小或弧长过短。
4. 采样点 IK 失败。
5. 圆弧误差超过容差。
6. 速度或加速度超限。
### 2.11 KW-011`planPath` 和 `validatePath`
目标:
1. `planPath` 用于 `run_path` 展开后的整条路径轨迹生成。
2. `validatePath` 用于离线编程路径验证。
3. `run_operation` 在 TypeScript 层展开KDL 只处理 motion segment。
验收:
1. 段顺序正确。
2. 上一段终点关节作为下一段起点。
3. 合并后轨迹点重新编号和更新时间。
4. 保留 `segmentId/targetId/sourceMap`
5. 空路径返回 `KDL_PATH_EMPTY`
### 2.12 KW-012节拍估算、重采样和诊断报告
目标:
1. 实现 `estimateCycleTime`
2. 实现 `resampleTrajectory`
3. KDL 只估算运动时间。
4. waitTime、ioTime 由调用方补充。
验收:
1. `CycleTimeResult.motionTime/totalTime/segmentTimes` 正确。
2. 重采样后轨迹时间、点序、source map 稳定。
3. error/warning/info 分级正确。
### 2.13 KW-013C ABI / Embind 和性能优化
目标:
1. 底层导出稳定 C ABI。
2. TypeScript API 包装 C ABI 或 Embind。
3. 高频 FK/IK 增加 TypedArray 版本。
4. RobotHandle 缓存 FK、IK、Jacobian solver。
5. 长路径分块计算或提供进度。
性能目标:
1. 单机器人 6 轴初始化小于 1 秒。
2. 单次 FK 小于 1 ms。
3. 单次 IK 平均小于 10 ms。
4. 1000 个目标点批量可达性检查在可接受交互时间内完成。
5. 10 秒轨迹按 4 ms 采样约 2500 点可稳定生成和回放。
## 3. GRL 实施线
GRL 实施顺序严格对标 `通用机器人编程语法规范.md` 第 24 章。
### 3.1 KW-100Lexer、单位和关键字
目标:
1. UTF-8 输入。
2. 识别单行、多行注释。
3. 识别标识符、字符串、数字、单位。
4. 识别保留关键字。
5. 单位规范化到 SI。
验收:
1. `100 mm` -> `0.1 m`
2. `180 deg` -> `pi rad`
3. `300 mm/s` -> `0.3 m/s`
4. 注释位置可保留。
### 3.2 KW-101Parser 和 AST 骨架
目标:
1. 实现 EBNF 第 22 章主体。
2. 支持 `language grl 0.1`
3. 支持 `module/import/end`
4. 支持 top-level declarations。
5. AST 保留 source range、原始单位文本、规范化值和 metadata。
验收:
1. 最小文件可解析。
2. 错误行列号准确。
3. AST snapshot 稳定。
### 3.3 KW-102数据声明、类型系统和目标点
目标:
1. `const/var/persistent`
2. 基础类型和机器人类型。
3. `tool/frame/load`
4. `joint_target/pose_target`
5. `pose/poseq/robot_config/ext_axis`
6. `speed/zone`
7. `offset/offset_in`
验收:
1. 类型 AST 正确。
2. target 能编译为 `JointTarget/PoseTarget`
3. speed/zone 能编译为 `SpeedSpec/ZoneSpec`
4. offset 能编译为 `OffsetSpec`
### 3.4 KW-103运动指令和当前上下文
目标:
1. `movej`
2. `movel`
3. `movec`
4. `set_tool`
5. `set_frame`
6. `set_speed`
7. `set_zone`
编译规则:
1. 显式运动参数优先。
2. path defaults 次之。
3. target 自带 tool/frame 次之。
4. 当前控制器状态最低。
5. 编译到 IR 前必须解析出确定 tool/frame/speed/zone。
验收:
1. `movej` 可生成 `MotionInstruction(joint)`
2. `movel` 可生成 `MotionInstruction(linear)`
3. `movec` 可生成 `MotionInstruction(circular)`
4. `movej/movel/movec` 可生成 KDL request。
### 3.5 KW-104Path、event 和 `run_path`
目标:
1. `path`
2. `defaults`
3. `source`
4. `point`
5. `event before/after`
6. `event at ... distance`
7. `run_path`
编译语义:
1. 展开 defaults、points、events。
2. 每个 point 变为 Motion IR。
3. event 变为 IO/Wait/Process IR。
4. 保留 pathId、pointId、source metadata。
验收:
1. 空 path 报错。
2. 重复 point 名称报错。
3. `run_path` 可生成 `PathPlanRequest`
### 3.6 KW-105Operation 和 `run_operation`
目标:
1. `operation`
2. `kind`
3. `path`
4. `process`
5. `start_action`
6. `end_action`
7. `run_operation`
编译语义:
1. 执行 start action。
2. 执行引用 path。
3. 执行 end action。
4. 保留工艺参数,供仿真、报告和后处理使用。
验收:
1. Operation 引用不存在 Path 报错。
2. `run_operation` 可展开为 action + path + action。
3. KDL 只接收展开后的 motion segment。
### 3.7 KW-106IO、wait 和 pulse
目标:
1. `io.di/do/ai/ao/gi/go/ri/ro`
2. `io.alias.*`
3. IO 赋值。
4. `wait` 条件。
5. `timeout`
6. `on_timeout alarm/call`
7. `all/any/rising/falling/changed`
8. `pulse`
验收:
1. IO 地址可按 io_map 或允许范围校验。
2. wait 条件可编译为 WaitInstruction。
3. pulse trace 必须包含置位和复位事件。
4. IO/wait 不进入 KDL。
### 3.8 KW-107流程控制
目标:
1. `if/elseif/else`
2. `while`
3. `for`
4. `switch/case/default`
5. `break`
6. `continue`
7. `label`
8. `jump`
验收:
1. 条件表达式必须为 bool。
2. `break/continue` 位置合法。
3. `switch case` 为常量表达式且不重复。
4. `jump` 不能跳入非法块结构。
### 3.9 KW-108proc、func、参数方向和作用域
目标:
1. `proc`
2. `func`
3. `call`
4. `return`
5. `in/out/inout`
6. 作用域和名称解析。
7. 递归 warning 或 error。
验收:
1. `out` 参数所有正常返回路径赋值。
2. `inout/out` 实参必须为左值。
3. `func` 所有正常返回路径返回兼容类型。
4. `func` 默认不允许执行运动、wait、pulse、run_path、run_operation。
### 3.10 KW-109异常、报警、中断和多任务语法
目标:
1. `alarm`
2. `raise`
3. `try/catch/finally`
4. `trap`
5. `interrupt`
6. `enable/disable interrupt`
7. `task ... cycle ...`
范围:
1. P0 至少实现 `alarm``raise` 和简单 `catch`
2. `trap/interrupt/task` 按 P1 语法保留,可先不做完整调度。
验收:
1. AST 能表达全部语法。
2. P0 支持 alarm/raise/try/catch 基础语义。
3. P1 未实现语义在后处理或运行时报明确诊断。
### 3.11 KW-110语义检查、IR 和 source map
目标:
1. Symbol Table。
2. Semantic Analyzer。
3. Executable IR。
4. Source map。
5. GRL 到 KDL request 的编译桥接。
必须检查:
1. 语法规范第 21 章全部 22 项。
2. KDL 可达性、关节限位和圆弧退化。
3. 后处理目标品牌是否支持所用语义。
验收:
1. 完整示例可编译为 IR。
2. IR 运动指令可映射到 KDL request。
3. source map 能定位 GRL 行列、path point、operation。
### 3.12 KW-111ABB、FANUC、KUKA 后处理原型
目标:
1. ABB RAPID 映射。
2. FANUC LS/TP 风格映射。
3. KUKA KRL 映射。
4. 后处理报告。
5. `post_hint``@brand.*`
验收:
1. `movej/movel/movec` 三品牌 golden file 通过。
2. target/tool/frame/speed/zone 映射正确。
3. IO/wait 基础映射正确。
4. 不支持语义进入转换报告。
### 3.13 KW-112自动生成规则和往返
目标:
1. 自动生成程序优先生成 target/path/operation。
2. 点名稳定。
3. path defaults 和单点 override 稳定。
4. source metadata 稳定。
5. compact/expanded 输出风格。
6. 生成 GRL 可再解析回等价对象。
验收:
1. 同一输入重复生成结果一致。
2. 生成文本可 diff。
3. 生成文本可解析、语义检查并后处理。
## 4. 虚拟控制器、工作区和交付实施线
以下任务对标 `通用机器人离线编程虚拟控制器技术方案.md``通用机器人项目主要实施步骤.md``通用机器人项目功能与数据流程图.md`,在 KDL/GRL P0 闭合后继续推进。
### 4.1 KW-200OLP 对象模型和 Station/Resource 基础
目标:
1. 定义 `OlpProjectModel`
2. 定义 Robot、Tool、Frame、Target、Path、PathPoint、Operation、Program、PostProfile。
3. 定义 Station、Cell、Fixture、Part、Device、Geometry、Calibration、Report 基础模型。
4. 建立对象树和文件资源之间的映射。
5. 支持从 Path/Operation 对象生成 GRL并从 GRL/品牌导入结果回填对象模型。
验收:
1. 对象模型 schema 有单元测试。
2. PathModel 可生成稳定 GRL。
3. OperationModel 可展开为 IR 或 GRL。
4. 品牌导入恢复出的 target/path/program 可作为对象模型 patch 应用。
### 4.2 KW-201OPFS Workspace 和项目导入导出
目标:
1. 实现 `/projects/{projectId}` 布局。
2. 实现 `project.json` manifest。
3. 实现 `listProjects/openProject/createProject`
4. 实现 `readText/writeText/readJson/writeJson/delete`
5. 实现 snapshot。
6. 实现 zip 导入导出。
7. 实现存储占用、迁移、备份和损坏检测。
验收:
1. 新建项目后生成约定目录和 manifest。
2. GRL、URDF、targets、paths、operations、io map、post profile 可保存和读取。
3. 导出 zip 后再导入能恢复等价项目。
4. OPFS 不可见性通过显式导出和快照缓解。
### 4.3 KW-202虚拟控制器状态机和执行内核
目标:
1. 实现 `PowerOff/Booting/MotorsOff/Ready/Manual/Auto/Running/Hold/Fault/EmergencyStop`
2. 实现 `powerOn/powerOff/motorsOn/motorsOff/loadProgram/start/hold/resume/stop/resetFault/stepInto/stepOver/stepMotion`
3. 实现 Program Counter、Call Stack、Scope Stack、Timer Table、Alarm Queue、Trace Buffer、Source Map。
4. 执行 `Executable IR`,不直接解释品牌文本。
5. 支持单主任务 `Task MAIN`
验收:
1. 状态转换非法路径有诊断。
2. 可执行无运动逻辑程序。
3. 当前行、变量、调用栈和报警可查询。
4. hold 暂停虚拟时间stop/reset 清理 ActiveWait 和 Motion Queue。
### 4.4 KW-203Motion Queue 和 KDL 运行桥接
目标:
1. 将 MotionInstruction、Path point、Operation 展开为 `MotionQueueItem`
2. 运行时调用 `planMoveJ/planMoveL/planMoveC/planPath`
3. 按虚拟时间推进轨迹采样。
4. 保留 `instructionId/pathId/pathPointId/operationId/sourceMap`
5. 支持运动失败报警和 trace。
验收:
1. `run_path` 能驱动虚拟机器人状态变化。
2. `run_operation` 能执行 start action、path、end action。
3. UI 或测试可从当前运动定位回 GRL 行、Path point 和 Operation。
4. IK、限位、奇异、圆弧退化诊断进入 Alarm Queue 和报告数据。
### 4.5 KW-204虚拟 IO、Wait、Pulse 和 IO 脚本
目标:
1. 实现 IO Image、Alias Table、Event Queue、Wait Registry、Edge Detector、IO Script Engine、Trace Logger。
2. 实现 IO 读写权限规则。
3. 实现 `wait` 立即求值、ActiveWait、timeout、on_timeout。
4. 实现 `rising/falling/changed` 边沿检测。
5. 实现 `pulse` 按虚拟时间自动复位。
6. 实现 IO script delay 和触发器。
验收:
1. 用户可手动切换虚拟输入满足 wait。
2. IO 脚本可延迟写入输入满足 wait。
3. wait timeout 可产生报警或执行 on_timeout。
4. hold 时 timeout 暂停stop/reset 时 ActiveWait 取消。
5. IO trace 顺序稳定,包含 read/write/wait/pulse 事件。
### 4.6 KW-205Web 工作台和调试界面
目标:
1. 建立第一屏工作台,而不是营销页。
2. 实现项目对象树。
3. 实现程序编辑器、路径编辑器、Operation 编辑器。
4. 实现虚拟示教器、控制器面板、运动监控、IO 面板。
5. 实现日志、报警、Wait 调试面板、后处理报告视图。
6. 支持项目导入导出、后处理导出和客户交付包入口。
验收:
1. 用户能新建项目、导入 URDF、编辑 GRL、运行程序。
2. 当前行、变量、IO、报警、TCP、关节、Path point、Operation 可见。
3. Wait 卡住时显示表达式、子表达式值、已等待时间、剩余 timeout、相关 IO 最近变化和 IO 脚本状态。
4. 诊断可从 UI 定位回源程序、Path、Operation 或品牌源。
### 4.7 KW-206验证、报告和客户交付包
目标:
1. 可达性报告。
2. 基础碰撞报告接口和数据模型。
3. 节拍报告,分解 motion/wait/IO script delay。
4. IO/Wait 报告。
5. 后处理报告。
6. 品牌导入报告。
7. JSON/HTML 报告导出。
8. 客户交付包 zip。
验收:
1. 报告 JSON schema 稳定。
2. HTML 报告可打开并包含关键摘要。
3. 客户交付包包含 GRL、品牌程序、目标点、路径、IO map、报告和可选 trace。
4. 不可达点、IK 失败、wait timeout、后处理近似和品牌导入丢失语义能定位到 source map。
### 4.8 KW-207品牌程序导入 MVP
目标:
1. 实现 ABB RAPID 文本导入原型。
2. 实现 KUKA KRL `.src/.dat` 导入原型。
3. 实现 FANUC LS 风格文本导入原型。
4. 生成 Brand AST。
5. 转换为统一 IR。
6. 尽量恢复 GRL、target、path、program。
7. 输出品牌导入转换报告。
验收:
1. 至少一种品牌程序可导入、转换为 IR 并在虚拟控制器中运行。
2. 三品牌导入 golden case 可解析主要运动、目标点、工具、坐标系、速度、过渡和 IO。
3. 不支持或近似语义必须进入导入报告,不能静默丢失。
4. FANUC 首版只承诺 LS 风格或可读文本,不承诺 TP 二进制。
### 4.9 KW-208几何、碰撞、校准和商业级 OLP 扩展
目标:
1. 资源库管理。
2. Mesh/CAD 转换文件导入。
3. 从点、边、曲线、面法向生成 Path。
4. 工艺模板库。
5. TCP、Frame、Base 校准数据。
6. 基础碰撞检测。
7. 商业级客户交付流程。
验收:
1. 可从几何曲线生成 Path。
2. 可使用工艺模板生成 Operation。
3. 可执行基础碰撞检测并定位对象和时间点。
4. 可保存和应用校准数据。
5. 可生成商业级客户交付包。
### 4.10 KW-209虚拟调试增强和跨源定位
目标:
1. 实现断点。
2. 实现单步进入、单步越过。
3. 实现运动断点。
4. 实现轨迹回放。
5. 实现变量 watch。
6. 实现 IO 脚本调试。
7. 实现 GRL、Path、Operation、品牌源程序与 IR 的跨源定位。
验收:
1. 可像调试程序一样调试机器人逻辑。
2. 可复现运行 trace。
3. 可定位 IK、IO、逻辑错误。
4. 可在 GRL、Path、Operation、品牌源程序之间定位同一条运动。
### 4.11 KW-210多机器人、外部轴和真实控制器校验扩展
目标:
1. 扩展任务模型,支持多机器人任务、后台任务、独立 IO 任务和监控任务。
2. 扩展运动组和外部轴数据结构。
3. 保留外部轴协调和复杂工作站接口。
4. 建立真实控制器校验流程边界。
5. 支持离线/现场差异比对和校验报告。
验收:
1. 多机器人和外部轴进入对象模型、IR、任务模型和报告 schema。
2. 真实控制器通信不作为 MVP 实时联调目标,但现场低速验证、差异记录和校验报告流程明确。
3. 外部轴相关 KDL P1 能力有接口占位和诊断边界。
### 4.12 KW-211流程图资产覆盖和同步维护
目标:
1.`flow-01.mmd/png` 纳入总体功能流程覆盖。
2.`flow-02.mmd/png` 纳入 GRL 编译与执行流程覆盖。
3.`flow-03.mmd/png` 纳入 KDL WASM 计算流程覆盖。
4.`flow-04.mmd/png` 纳入数据传递流程覆盖。
5.`flow-05.mmd/png` 纳入诊断传递流程覆盖。
6. 建立流程图源、渲染图、文档章节、任务矩阵和验收证据的同步检查。
验收:
1. `.mmd` 文件和 `.png` 文件均被证据记录。
2. 每张流程图能映射到至少一个功能章节和任务编号。
3. Mermaid 源和 PNG 渲染图缺失或新增时,文档一致性检查会提示。
4. 流程图变更能追溯到对应任务和验收证据。
## 5. 集成顺序
1. KW-001 + KW-100 + KW-101基础工程、Worker RPC、Lexer/Parser 骨架。
2. KW-002 + KW-102URDF/标准模型和 GRL target/tool/frame/speed/zone。
3. KW-003 到 KW-006 + KW-103运动指令编译到 KDL FK/IK/变换。
4. KW-007 到 KW-010梯形速度、MOVEJ、MOVEL、MOVEC。
5. KW-104 + KW-011Path 编译为 `PathPlanRequest`KDL 生成整条路径。
6. KW-105 + KW-011Operation 展开后复用 Path 规划。
7. KW-106 到 KW-110完成 P0 语义检查和 IR。
8. KW-111三品牌后处理原型。
9. KW-112 + KW-013自动生成、性能和批量优化。
10. KW-200 + KW-201OLP 对象模型和 OPFS 工作区。
11. KW-202 + KW-203虚拟控制器状态机、执行内核和 Motion Queue。
12. KW-204虚拟 IO、wait、pulse 和 IO 脚本。
13. KW-205Web 工作台和调试界面。
14. KW-206验证、报告和客户交付包。
15. KW-207品牌程序导入 MVP。
16. KW-208几何、碰撞、校准和商业级 OLP 扩展。
17. KW-209虚拟调试增强和跨源定位。
18. KW-210多机器人、外部轴和真实控制器校验扩展。
19. KW-211流程图资产覆盖和同步维护。
## 6. 通用命令约定
实际命令以工程 `package.json` 和 CMake 配置为准。文档验收要求每个阶段至少提供等效命令:
```bash
npm run typecheck
npm run test -- grl
npm run test -- kdl
npm run test -- integration
npm run test -- post
npm run test -- controller
npm run test -- workspace
npm run test -- reports
npm run test -- importers
npm run build
```
KDL WASM 构建:
```bash
cd /home/meswork/kdl_work
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
```