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

12 KiB
Raw Permalink Blame History

02-项目程序开发详细步骤

版本0.1 日期2026-06-28

1. 开发原则

  1. 通用机器人编程语法规范.md 为覆盖源,不以现有测试数量作为完成标准。
  2. ABB120 URDF 使用仓库内稳定 fixture不引入未验证机器人模型。
  3. happy path 必须可执行error path 必须可诊断post path 必须可报告。
  4. 虚拟控制器只执行 Semantic IR不直接解释品牌文本。
  5. 所有新增程序都要保留 source map报告必须能定位到 GRL 文件行列。

2. 阶段 0规范覆盖矩阵

W2-SPEC-001解析语法规范章节

步骤:

  1. work/doc/通用机器人编程语法规范.md 抽取章节、关键语法、示例和语义规则。
  2. 建立 coverage item字段包含 spec_sectionsyntaxruntime_levelprogram_idtest_idevidence
  3. 把覆盖矩阵写入 working2/programs/manifest.md

验收:章节 4 到 23 均有覆盖项;章节 25 的 P0 项全部映射到 runtime 或 static 测试。

W2-SPEC-002定义执行边界

步骤:

  1. 标记虚拟控制器必须执行的 Runtime 语义。
  2. 标记只做 semantic diagnostic 的 Static 语义。
  3. 标记只做后处理/导入报告的 Post 语义。
  4. 对 trap、interrupt、task、brand metadata 等非 P0 执行项写清楚边界。

验收:覆盖矩阵中每项都有 Runtime/Static/Post 分类,不允许空白。

3. 阶段 1ABB120 程序集

W2-PROG-001建立 spec-programs 目录

建议目录:

kdl-wasm/web/tests/fixtures/abb120/spec-programs/
  runtime/
  static/
  error/
  post/
  expected/

验收:测试 helper 可以枚举所有 .grl 并读取 manifest。

W2-PROG-010Runtime 程序

步骤:

  1. 创建 W2_00W2_90 十个 runtime 程序,并以 W2_99_FullSpecExample 覆盖第 24 章完整示例。
  2. 所有运动目标使用 ABB120 标准关节位或 FK 固化 pose。
  3. 每个程序顶部注释写明覆盖的 spec section。
  4. 每个程序必须可 parse、compile、load 到虚拟控制器。

验收runtime 程序全部生成 AST/IR/source map snapshot。

W2-PROG-020Static/error 程序

步骤:

  1. 创建表达式、语义、运动、控制流、runtime timeout 五类 error 程序。
  2. 每个 error 程序只聚焦一类错误,避免多个错误互相遮蔽。
  3. expected diagnostic 固化 code/severity/message/sourceRange

验收diagnostic snapshot 稳定,新增或消失的错误会导致测试失败。

W2-PROG-030Post/import 程序

步骤:

  1. 创建品牌 hint 和跨品牌 motion 程序。
  2. 覆盖 ABB/FANUC/KUKA speed、zone、IO、wait、operation 输出。
  3. 固化 roundtrip 输入和差异报告。

验收:三品牌输出非空,近似和不支持项进入 report。

4. 阶段 2编译和 KDL 验证

W2-RUN-001统一 suite runner

步骤:

  1. 扩展或新增 runAbb120SpecSuite
  2. 输入program root、suite id、ABB120 fixture、output root。
  3. 输出:job_id、程序 manifest、每个程序的 compile/run/post 结果。
  4. job id 格式:W2-JOB-YYYYMMDD-HHMMSS-<short-hash>

验收:单条命令可生成完整 suite 证据目录。

W2-RUN-010编译链路

步骤:

  1. parseGrl 生成 AST。
  2. compileSemanticProgram 生成 IR。
  3. 对 data/target/path/operation 建 source map 索引。
  4. 保存 AST/IR 摘要,不保存过大的重复文本。

验收:每个 runtime/post 程序 compile 无 error每个 error 程序 compile 输出预期 diagnostic。

W2-RUN-020ABB120 KDL 检查

步骤:

  1. 加载 ABB120 URDF。
  2. 对所有 joint target 做 limit check。
  3. 对所有 pose target 做 IK 或记录当前实现边界 diagnostic。
  4. 对每条 motion/path 生成 planner request。

验收happy path 没有关节限位错误;不可达或不支持 IK 只能出现在 error suite。

5. 阶段 3虚拟控制器执行

W2-RUN-030状态机命令覆盖

步骤:

  1. 对每个 runtime 程序执行 load/start/step/hold/resume/stepMotion/stop/resetFault
  2. 记录每次命令前后状态。
  3. 非法命令转移必须产生明确 diagnostic。

验收状态机转换符合控制器规则trace 可回放。

W2-RUN-040Motion Queue 和轨迹

步骤:

  1. movej/movel/movec/run_path/run_operation 展开到 motion queue。
  2. 记录 queue item、activeIndex、duration、planner result。
  3. 对轨迹采样点做 limit 和 singularity 检查。

验收motion queue 与程序 source map 对齐;轨迹结果可进入报告。

W2-RUN-050IO、wait、pulse 和报警

步骤:

  1. W2_60_IOWaitPulse 注入 DI 脚本。
  2. 覆盖 wait satisfied、waiting、timeout、on_timeout alarm/call。
  3. 覆盖 pulse 自动复位。
  4. 覆盖 all/any/rising/falling/changed。

验收trace 中可看到 IO 写入、DI 变化、wait 状态、pulse reset 和 alarm。

W2-RUN-060流程控制和调用栈

步骤:

  1. 执行 if/elseif/else、while、for、switch。
  2. 记录局部变量、循环变量、call stack、return。
  3. out/inout 参数回写进入变量快照。

验收最终变量状态符合预期source map 可定位当前执行语句。

6. 阶段 4后处理和导入回读

W2-POST-010三品牌 post

步骤:

  1. 对 runtime/post 程序调用 postProcessAllBrands
  2. 保存 ABB .mod、FANUC .ls、KUKA .src/.dat
  3. 保存 post report记录近似和 unsupported。

验收:所有品牌输出包含对应 motion、IO、wait 和 proc 结构。

W2-POST-020roundtrip

步骤:

  1. 将三品牌输出重新导入。
  2. 对比 motion 顺序、target 数量、path/operation 结构。
  3. 对差异生成 roundtrip.json

验收happy path 结构等价;不可逆项全部进入 diff。

7. 阶段 5HTML 虚拟控制器验收

W2-UI-010加载最新 job

步骤:

  1. HTML 页面支持选择或加载 W2-JOB-* 证据。
  2. 显示程序列表、当前程序、controller snapshot、queue、trace、diagnostics。
  3. 点击 trace/source map 能定位 GRL 行。

验收:页面能展示 working2 suite 证据,不只展示静态 mock 数据。

W2-UI-020截图验证

步骤:

  1. 使用现有 verify-virtual-controller.mjs 或新增参数打开 working2 job。
  2. 截桌面和移动视口。
  3. 检查 command bar、object tree、viewport、pendant、editor、bottom panel 可见。
  4. 检查无横向溢出和文字重叠。

验收:生成 desktop/mobile 截图和 evidence.json

8. 阶段 6全量 CI

建议命令:

cd E:\Work\kdl_work
npm run typecheck
npm test -- grl abb120 virtual controller runtime post import
npm run verify:virtual-controller

如果需要 WASM native 验证:

cmake --build kdl-wasm/build-wasm -j16

验收:所有命令通过,working2/05-验收证据.md 记录实际命令、时间、job_id、report_id 和产物路径。

9. 阶段 7服务器演示包和 HTTPS 发布

W2-DEPLOY-001生成演示包 manifest

步骤:

  1. 读取 kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json
  2. 读取最新 kdl-wasm/web/test-results/abb120-spec/W2-JOB-*
  3. 读取 kdl-wasm/web/test-results/virtual-controller/evidence.json
  4. 生成 demo-manifest.json,字段至少包含:
    • release_id
    • generated_at
    • suite_id
    • job_id
    • program_count
    • programs
    • report_json
    • virtual_controller_entry
    • screenshots
    • docs
  5. manifest 中路径必须是相对发布根目录的 URL 路径,不能写本机绝对路径。

验收:demo-manifest.json 可被浏览器直接打开,能定位 19 个程序、最新报告和截图。

W2-DEPLOY-010收集演示包文件

建议目录:

kdl-wasm/web/test-results/deploy/kdl-olp-demo-<release_id>/
  app/
  spec-programs/
  test-results/
  docs/
  index.html
  demo-manifest.json
  README.md

步骤:

  1. 复制 kdl-wasm/web/app/virtual-controller.html/css/jsapp/
  2. 复制 spec-programs/manifest.json 和所有 .grl 程序。
  3. 复制最新 W2 job 目录。
  4. 复制虚拟控制器截图和 evidence.json
  5. 复制 Word 手册和测试文档:
    • work/doc/GRL功能语法逻辑与程序创建使用手册.docx
    • work/doc/通用机器人离线编程系统测试文档.docx
  6. 生成 index.html,至少提供:
    • 虚拟控制器入口
    • 最新 job 报告入口
    • 程序清单入口
    • 截图入口
    • 文档下载入口

验收:本地打开发布包根目录时,所有链接不依赖开发机绝对路径。

W2-DEPLOY-020打包发布归档

步骤:

  1. 将演示包目录压缩为 kdl-olp-demo-<release_id>.zip
  2. 计算 zip 文件大小和 hash。
  3. 将 zip、release_id、job_id 写入 working2/05-验收证据.md

验收zip 可解压,解压后包含 index.htmldemo-manifest.json、19 个 .grl 和最新 job。

W2-DEPLOY-030上传到服务器

目标:

https://82.156.24.101:8095/
/opt/kdl-olp-demo/8095/releases/<release_id>
/opt/kdl-olp-demo/8095/current -> releases/<release_id>

步骤:

  1. 使用 scp 或等效方式上传 zip 到服务器临时目录。
  2. 在服务器创建 release 目录并解压。
  3. 更新 current 软链接指向新 release。
  4. 确认 Web 服务根目录指向 current
  5. 不在仓库文档中记录服务器密码;凭据只保留在部署人员本地。

验收:服务器上存在 release 目录,current 指向最新 release。

W2-DEPLOY-040HTTPS 服务验证

步骤:

  1. 打开 https://82.156.24.101:8095/
  2. 验证 index.html 能加载。
  3. 验证以下 URL 可访问:
    • /demo-manifest.json
    • /app/virtual-controller.html
    • /test-results/abb120-spec/<job_id>/report.json
    • /test-results/abb120-spec/<job_id>/report.html
    • /test-results/virtual-controller/virtual-controller-desktop.png
    • /spec-programs/manifest.json
  4. 在浏览器中进入虚拟控制器页面,检查页面显示 suite/job/program/trace/queue/IO/diagnostics。
  5. 如证书为自签名,记录浏览器安全提示为环境说明,不作为功能失败;如页面资源 404 或 JS 错误,则发布失败。

验收:远程页面可演示 19 个程序和最新 job 证据。

W2-DEPLOY-050远程 smoke test

建议命令:

$base = "https://82.156.24.101:8095"
curl.exe -k "$base/"
curl.exe -k "$base/demo-manifest.json"
curl.exe -k "$base/spec-programs/manifest.json"
curl.exe -k "$base/app/virtual-controller.html"
curl.exe -k "$base/test-results/abb120-spec/<job_id>/report.json"

检查:

  1. HTTP 状态为 200。
  2. demo-manifest.jsonprogram_count 为 19。
  3. report.jsonfail 为 0。
  4. 页面资源无 404。

验收:命令输出摘要写入 working2/05-验收证据.md

W2-DEPLOY-060回滚

步骤:

  1. 服务器保留至少最近 2 个 release。
  2. 新版本验证失败时,将 current 重新指向上一个 release。
  3. 再次访问 https://82.156.24.101:8095/ 验证旧版本恢复。
  4. working2/03-推进台账.md 记录回滚原因和 release_id。

验收:回滚后远程页面恢复到上一个可用版本。

10. 后续完善程序时的固定流程

每次新增或修改虚拟测试程序,都按以下顺序推进:

  1. 修改 .grl 程序和 spec-programs/manifest.json
  2. 更新 working2/programs/manifest.md 的覆盖矩阵。
  3. 执行 npm run typecheck
  4. 执行 npm test
  5. 执行 npm run suite:abb120-spec,生成新 W2-JOB-*
  6. 执行 npm run verify:virtual-controller,刷新截图。
  7. 重新生成 Word 测试文档和 GRL 使用手册,如内容发生变化。
  8. 重新生成服务器演示包并发布到 HTTPS。
  9. 更新 working2/03-推进台账.md04-任务矩阵.md05-验收证据.md
  10. 提交代码并上传云仓库。