E2 验证与交付范围#
任务:MuJoCo #3。官方源码为 3.15.0,固定 9ea3cdfcae93bf2cc4dc0e1a1627c5a39a1e06e5。本阶段基于 E1 已在 main 的 ea6ef570ee91ba2b2a6e22aa313a5fbf655bf2cb;实施前核实 main 身份、干净工作树及无进行中 PR。E2 的发布/合入提交由 Git 历史和关联交付记录确定,不把文档草稿视为远端已验收。
#3 验收映射#
要求 |
本次证据 |
适用边界 |
|---|---|---|
控制输入到驱动 |
驱动与控制:三套输入/对象/输出地址、gain/bias/activation、transmission、分层饱和、PD/PID/SO3/DC motor |
原生核心/官方 Python;参数辨识、生理肌肉和插件完整机制仍属 E6 |
关节/资产映射、FK/IK 与限位 |
机器人运动学:原生名称/地址、参考零位、Jacobian 前置阶段、有界局部 IK、球关节/闭环限制 |
资产来源/导入基础复用 E1;示例只适用于两个标量 hinge,无碰撞/闭环求解 |
回调和任务状态机 |
任务接口:APPROACH/CLOSE/HOLD/RELEASE、转移条件、超时、模拟/控制/墙钟、reset、观测有效性 |
是应用设计,不声称运行过抓取,不创建新实验评分协议 |
公式、量纲、易错点和练习 |
三篇均给出公式假设、原生来源、错误诊断;共 19 道带答案阅读练习 |
推导与源码审查,不用语法结果证明数值/控制性能 |
原创片段 |
示例说明、two_link.xml、inspect_control.py、position_ik.py |
未编译 MJCF,未 forward/step,未运行 IK |
中英文入口与进度 |
A3/A5/A7 的课程交付;其他专题保持待开发或已标注的部分覆盖 |
实际静态检查#
git diff --check
python scripts/check_docs.py
python scripts/check_examples.py
首次链接检查发现任务篇两处相对路径多退一级,已修正后重跑。最终结果:空白检查、本地 Markdown 链接通过;全仓 3 个 Python 示例文件、2 个文档 Python 片段 AST 通过;2 个 XML 文件结构解析通过。其中 E2 新增 2 个 Python 文件与 1 个 XML。检查脚本只解析文本,不导入/执行例程,也不做 MJCF schema 或物理验证。
sources.json现记录 25 个官方固定 Git blob。核对每个文件的 SHA1("blob <byte-count>\0" + bytes) 与固定官方树一致,检查所有本引擎 blob URL 使用同一固定 SHA、收录 manifest 且行锚存在,再人工对照重要声明与实现。文件身份/行号检查不等于逐行审计全仓。
新增 source 文件为 user_api.cc、user_objects.cc、xml_native_reader.cc、engine_callback.c、engine_inverse.c。已有的 engine_forward.c、engine_core_smooth.c、engine_core_util.c、mjmodel.h/mjdata.h/mujoco.h 与固定文档在本阶段进一步按下表阅读。
本阶段重点核对#
声明 |
直接来源与判断 |
|---|---|
控制/输出/执行器分开计数 |
mjmodel 字段:ctrlrange 按 nu,gear 按 nout,其他类型参数按 nactuator |
PID 输入压紧与逐输入限幅 |
|
ctrl clamp 不回写请求 |
局部副本;delay 还会从 history 覆盖有效输入 |
actuator_force 不等于最终关节力 |
|
SO3 quat 兼容性与范数限制 |
编译检查;quat 4 输入、3 输出,非普通四个 motor |
Jacobian 前置量与 frame |
mj_jac直接读取 cdof/subtree_com,在世界轴构造;片段先 kinematics+comPos |
逆动力学不是 IK |
inverse 合成返回所需外加广义力,还需执行器分配 |
控制回调不是每实例私有状态机 |
全局回调指针;调用次数不等于控制 tick,E1 已注明 RK4/split-step 差异 |
自审避免沿用旧概述中“一个有状态 actuator 对应一个 activation”的公式;3.15 PID/DC motor/SO3 状态块要按 actadr/actnum 解释。对 ball/refsite rotational setpoint 包裹也以实际 wrapPeriod 条件为准,不把未匹配的 filtered servo 包括进去。
未运行与下一步#
没有 native import、XML 编译、forward、step、IK 执行、渲染、控制性能试验、抓取、训练或 benchmark;没有生成任务成功率或新评分器。静态示例数值均是字段/方程推导,不标为实测。源审查由实现者自审,未声称独立 reviewer 通过;后续主 agent 负责集成审查。
完成后重新审视:E2 已建立控制命令、原生执行器和任务阶段的完整接口关系。下一项建议 E3:解释碰撞与约束力为何不能用 actuator 输出替代,继续完成 contact/solver/metric/force 的数值与源码路线。E4 同样已有前置条件;E5 仍依赖 E4 的可靠传感/渲染语义。没有阻止 E3/E4 的外部依赖,也没有以实验延期掩盖教程缺口。