E1 验证与交付范围#

Learning home · MuJoCo contents

Course text is primarily Chinese, with English terminology and summaries. The original content is preserved.

任务: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 编译或运行

中英文入口/完成状态

中文 README、英文 README、课程、路线

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 加入 history;见 mjtState

ctrl 长度等于 actuator 个数

nu 与 nactuator 分开;见 model 尺寸

reset 后用户输入一律清零

quaternion ctrl 由 mj_resetCtrl 写单位四元数;eq_active 使用模型初值,history 也有元数据;见 resetCtrl。simulation.rst 的概述未完整涵盖这些例外

integration mask 是所有模式的完整快照

sleeping 完整恢复需要 mj_copyData;IPC multiplier/age 明确不在 mask。见 sleep notes、IPC 字段

objectVelocity 返回平移在前

simulation.rst 末尾有此陈旧文字;公开 API 与实现为 rot:lin,BODY 质心/惯性轴、XBODY body 原点/轴

所有 integrator 的 qacc 都是瞬时连续加速度

discrete 的 qacc 是一步速度差除以 h;计算说明明确改变契约

step1+step2 总等于 step

RK4 配置在 step2 路径调用 Euler;实际分支

这些差异已通过阅读固定源码确认;上游文档冲突没有在本任务中提交上游 Issue,也没有用运行实验仲裁。后续升级版本应重新检查,不能机械迁移这里的行号或枚举值。

完成后重新审视#

E1 建立了后续必须共享的配置/状态/时间契约,没有发现阻止 E2 的外部依赖。建议下一项 E2:先从原生 actuator 结构区分 ctrl、activation、传动输出和广义力,再进入机器人 FK/Jacobian/IK 接口、控制更新与任务状态机。E3/E4 也依赖 E1,但分别交付接触数值机制和传感渲染,不在本项顺手写成完成。

等待项仅为本变更的集成发布流程;运行验证属于明确延后的工作,不是静态验收已完成的替代证据。E1 的自身审查由实现者完成,未冒称独立外部 reviewer 已批准。

Course source · GitHub · License