E2 验证与交付范围#

Learning home · MuJoCo contents

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

任务: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

中英文入口与进度

中文 README、English、curriculum、roadmap

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 输入压紧与逐输入限幅

编译逻辑、范围解析;不按 actuator ID 直接索引 ctrl

ctrl clamp 不回写请求

局部副本;delay 还会从 history 覆盖有效输入

actuator_force 不等于最终关节力

输出限制与 DC motor 后加机械项、moment 映射与 joint clamp

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 的外部依赖,也没有以实验延期掩盖教程缺口。

Course source · GitHub · License