E1 验证与交付范围#
任务:MuJoCo #2。源码基线:官方 3.15.0,9ea3cdfcae93bf2cc4dc0e1a1627c5a39a1e06e5。实现基于 E0 已合入的 8610d3debcd1ae17c9477f97f017e8ad9e8322c3;本记录随 E1 提交保存,具体发布/合入 SHA 由关联 PR 与 Git 历史确认。
验收对应关系#
#2 要求 |
已交付的直接证据 |
边界 |
|---|---|---|
坐标/单位/姿态/惯量 |
建模与坐标第 2–4 节,frame 组合、平行轴公式、原生字段和带答案练习 |
原创解释;不是测量或模型物理资格验收 |
模型与资产 |
同篇第 1、5 节,spec/compile 生命周期、mesh 三种用途、URDF 选项及许可记录 |
无外部模型资产被导入或运行 |
状态维度/内存/所有权 |
状态与时间第 1–3 节,joint 地址、空间向量、视图副本和共享 model |
原生 C/官方 Python 范围,不推定 GPU 后端等价 |
reset、快照、采样阶段 |
同篇第 4–6 节,mask、history、sleep/IPC 例外、时间标签 |
不声称完整覆盖插件外部资源或已验证重放 |
步进/数值基础 |
同篇第 5–7 节,五种 integrator、step2 的 RK4 降级、D 符号与适用假设 |
B0/B4 后续接触 metric、稀疏求解/收敛完整推导仍属 E3 |
原生片段 |
示例说明、frames.xml、inspect_state.py |
AST/XML 结构核对;未交给 MuJoCo 编译或运行 |
中英文入口/完成状态 |
A1/A2 已展开,其他课程不提前标完成 |
静态验证#
在 E1 工作树执行:
git diff --check
python scripts/check_docs.py
python scripts/check_examples.py
结果:空白检查通过;仓库相对 Markdown 链接通过;1 个 Python 示例文件、2 个文档 Python 片段的 AST 通过,1 个 XML 文件结构解析通过。CI 增加同一 check_examples.py,只解析源文本,不导入 MuJoCo、不执行片段、不校验 MJCF schema。
源码身份检查逐个计算 Git blob SHA-1(blob <byte-count>\0<contents>),与固定官方 Git 树、sources.json 的 20 个文件对应;章节及源码地图中所有本引擎 blob 链接使用同一固定 SHA。行锚检查确认目标行存在,随后人工核对关联函数/字段/文档段落;行号存在本身不证明结论正确。
未做:Python import、MuJoCo XML 编译、forward/step、渲染、物理/性能实验、训练、跨引擎比较。没有生成运行输出,因此示例尺寸和行为预测明确标为推导。后续研究实验只复用 DexLab 的相应版本/工况证据。
本版本中必须保留的差异#
易被旧教程带入的假设 |
已核对的事实与来源 |
|---|---|
Physics state 只有 qpos/qvel/act |
3.15.0 加入 |
ctrl 长度等于 actuator 个数 |
|
reset 后用户输入一律清零 |
quaternion ctrl 由 |
integration mask 是所有模式的完整快照 |
sleeping 完整恢复需要 |
objectVelocity 返回平移在前 |
simulation.rst 末尾有此陈旧文字;公开 API 与实现为 rot:lin,BODY 质心/惯性轴、XBODY body 原点/轴 |
所有 integrator 的 qacc 都是瞬时连续加速度 |
|
step1+step2 总等于 step |
RK4 配置在 step2 路径调用 Euler;实际分支 |
这些差异已通过阅读固定源码确认;上游文档冲突没有在本任务中提交上游 Issue,也没有用运行实验仲裁。后续升级版本应重新检查,不能机械迁移这里的行号或枚举值。
完成后重新审视#
E1 建立了后续必须共享的配置/状态/时间契约,没有发现阻止 E2 的外部依赖。建议下一项 E2:先从原生 actuator 结构区分 ctrl、activation、传动输出和广义力,再进入机器人 FK/Jacobian/IK 接口、控制更新与任务状态机。E3/E4 也依赖 E1,但分别交付接触数值机制和传感渲染,不在本项顺手写成完成。
等待项仅为本变更的集成发布流程;运行验证属于明确延后的工作,不是静态验收已完成的替代证据。E1 的自身审查由实现者完成,未冒称独立外部 reviewer 已批准。