E6 验证与交付范围#

Learning home · MuJoCo contents

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

任务:MuJoCo #7,B6扩展机制与B7源码综合追踪。MuJoCo3.15.0固定源码9ea3cdfcae93bf2cc4dc0e1a1627c5a39a1e06e5;JAX0.7.2固定源码94233144f5469af28c065aa4263a6849338eeaa1仅用于语言/自动微分规则阅读,不是已验证的运行依赖锁。

基于干净main f09c994f69325f0ef40dc8005572aa3ff85f91c4建立docs/e6-extensions-boundaries;E3前置实际已交付,Issue开放且无未关闭PR。仅读取远端状态;本地课程/静态验收与主审发布是不同阶段,本记录不把本地提交当远端交付。

Issue 验收映射#

范围

交付

边界

回调/插件

扩展生命周期:全局注册、Python GIL、定义/实例/Data、init/reset/compute/advance/copy/destroy、PID/cable/SDF、decoder/resource

不把plugin注册成功当能力/线程安全/设备支持;没有加载动态库

可变形机制

flex与弹性:顶点归属、Jacobian/虚功、边/约束/连续体、StVK/SNH、壳厚度、插值、有效metric

当前mjSpec/XML与积分/solver组合分别核对;无形变或材料辨识实验

IPC

IPC模式:barrier-free AL、临时rows/内层CG、merit/CCD、活动集合、尺度/限额/partial advance、日志/力/状态

frictionless、2D/附着/几何覆盖限制;不宣称防穿透实测或论文复现

后端与可微

后端/导数:CPU FD、原生/JAX/Warp执行结构、mask/top_k、CG/Newton循环、公开AD调用链、history

有字段/可JIT不等于整条反向链;没有JIT、设备执行、梯度或性能测量

多物理/B7

多物理与综合追踪:被动力账本、fluid假设/单位/frame、真实added-mass分支、自建物理记忆、flex从字段到观测/恢复

自建热方程标为接口设计示例,不冒充原生求解模块;DexLab证据索引留E7

原创片段与练习

flex片段,五篇共40道带答案练习;1段完整Python回调示意

原创XML/布局读取代码仅AST/XML结构/源码核对,未编译或forward

课程与来源

中英文入口、curriculum/roadmap、source map与两份manifest更新

A0完整安装、全路线审校和DexLab复用入口明确仍为E7

实际静态检查#

git diff --check
git diff --cached --check
python scripts/check_docs.py
python scripts/check_examples.py

文档/语法检查在Python3.10.12与CI对应的Python3.12.12通过:全仓相对Markdown链接、7个Python文件、7个文档Python片段、6个XML文件。XML只使用ElementTree解析,未进行MJCF schema或物理语义验收。全仓Markdown无TAB及其他非换行控制字符;E6的显示公式独立双美元分隔行、代码围栏、章节编号和40道练习逐项检查通过。

source manifest从62扩至86个MuJoCo官方文件,新增24个实际引用文件;全仓611个MuJoCo blob链接固定同一SHA、路径均入manifest,行锚有序且在实际文件范围内。另有external manifest的6个JAX文件、16个固定blob链接,本轮新增control_flow/loops.py。所有文件按Git blob算法计算身份,与固定官方tree/manifest核对一致;不把vendored Warp换成未读的外部最新版,也不把JAX归入MuJoCo的提交身份。身份/行号验证不替代逐段语义阅读。

第一轮来源检查发现plugin/elasticity/register.cc与cable.cc的结束行各超出文件一行,已将23/319分别修正为实际22/318并重跑全部检查。早期第五篇生成时漏了docs目录前缀,已移动到与导航一致的目录;标题跳号及XML属性表初始锚点过于宽泛也在主审预读后修正。固定源码下载曾出现SSL连接中断,限定重试后重新核对Git blob身份,没有采用不明缓存或跳过验证。

未做:原生MuJoCo/JAX/Warp import、动态库加载、模型编译、forward/step、回调执行、形变/接触/IPC求解、JIT、图捕获、渲染、CPU/GPU传输、导数计算、训练、benchmark或任何实验。片段若以后执行将有其README声明的原生行为,本轮只解析文本。

审查中特别保留的结论#

发现

课程处理

全局callback与每Data插件状态不同

shared model/Data隔离不自动隔离闭包;Python getter也不承诺保存外部裸C指针

注册与生命周期

header契约与实际空指针保护分别说明;旧文档resource.getdir及Solid/Membrane不能当当前可调用接口

材料与XML

elastic3d是mjSpec-only;插值壳bending有真实编译/计算分支,旧否定句不沿用

IPC的名称与算法

实际是无log barrier的AL+CCD;一般附着、摩擦与初始非正gap边界逐项解释

partial advance

运动部分接受仍time+=h;mju_warning为日志,不由rollout的Data warning检测完整覆盖

回调重复评估

有2D flex时sensorAcc可先free-flight再IPC重算;回调次数不能当物理步数

FD矩阵

nx=2nv+na;nu是原始ctrl标量宽度、nactuator是数量;不自动给出SO3三维控制切空间Jacobian或plugin_state列

JAX反向边界

公开step→forward→solver无自定义导数包装;进入约束solver且iterations≠1时外层while限制普通reverse-mode,结论不外推全部模型/后端

Warp历史缓冲

vendored后端有delay/interval;MJX make_data_warp跳过history复制,与直接vendored初始化不同,标为源码差异而非已复现故障

fluid模型

ρ和η可单独起效,frame/全长半长分别核对;常规added-mass调用传NULL加速度,不宣称完整附加惯量已进入M

自审、未决项与下一阶段#

实现者按字段→编译→执行→观测→恢复→后端的链条自审了五篇课程,核对公式假设/量纲、数组地址、状态所有权、重复求值、实际终止与日志、源码文档差异。主agent已参与预读,最终独立验收与远端发布仍由主agent执行。

知识主线已按本阶段范围交付,运行证据仍未生成:动态库ABI、模型编译、柔性响应、IPC可行推进/日志、后端时序差异、实际AD支持组合和物理精度均须在后续明示工况下检验。源码发现不据此改写DexLab历史配置或给引擎排名。

下一项建议E7:在E2–E6经主审发布后,补齐A0完整安装/构建课程、全路线交叉审校与DexLab版本/工况证据入口。保留当前静态验收边界;不因安装专题而启动用户已推迟的实验。执行者本阶段完成本地提交后停止,等待主审另行派发。

Course source · GitHub · License