[问题] IsaacLab: BeyondMimic/ProtoMotions G1 跟踪器转移到 MuJoCo,但加上经过 PhysX 训练的 AMP "run" 角色却不行 – 是否有人解决了层次化的 Isaac→MuJoCo 模拟到模拟问题?
作者: karvachiik-lgtm创建于 2026年9月10日更新于 2026年9月18日
--- STACK ---
- PhysX 2000 Hz (dt=0.005), decimation 4 → 50 Hz control。
- 执行:隐式位置 PD(Isaac“内置 PD”),刚度/阻尼 = BeyondMimic G1 值,每关节的力限制,每关节的关节架。
- 低级(可解释)跟踪器: proprio(64) = dof_pos(29) + dof_vel(29) + root_local_ang_vel(3) + proj_gravity(3) target(64) = rel_anchor_rot6d(6) + dof_vel(29) + proj_gravity(3) prev(29) = 之前处理的动作(绝对关节目标) obs = 连接 proprio、target、prev → 157;action → q_target = default_dof_pos + (力/刚度)*raw
- 中级:AMP 运行动作,obs 134 = proprio(64) + base_lin_vel(3) + vel_cmd(3) + prev_target_frame(64);直接输出 64-D 目标帧。
- 高级:6-D 切换器 → 获得运行/跳跃。
- 模型:g1_holo_output.xml + 用于跟踪的相同 MJCF;每关节的关节架,摩擦损失 = 0.1,球形脚。 --- MuJoCo REPRO(我们匹配的内容)---
- 加载了相同的 MJCF;设置 opt.timestep=0.005;50 Hz 的 4 次子步。
- 相同的默认姿态(臀部 -0.312、膝盖 0.669、踝部 -0.363、肘部 0.6、肩部 +/-0.2),相同的刚度/阻尼/力,相同的关节架。
- 相同的观测约定:本地角速度 = 骨盆帧 qvel[3:6];在躯干帧中的投影重力;正则化已烘培到导出的 .pt 中。
- 相同的动作缩放(偏移 + 力/刚度 * raw)和相同的 prev_action 处理 = 绝对目标。
- 与跟踪器嵌入的正则化常数进行交叉检查。 --- 证据 ---
- 单独的跟踪器:提供来自真实参考运动片段构建的目标帧,在 MuJoCo 中机器人保持直立状态整个时间(z ≈ 0.78,没有摔倒)。因此,跟踪器检查点、模型、增益和管道在 MuJoCo 中都是正确的。
- 复合(运行动作 + 跟踪器):从每个初始关节姿态(零、默认)和 prev-action 为零或热启动,每个速度命令(包括 cmd=0)都在 ~0.9–2 s 内摔倒。
- 诊断:导出的运行动作的 obs_mean_action 块看起来不像一个有效的目标帧(非单位 rot6d,即使在参考运动的动态回放中,动作也会饱和到一个常数,出现分布外的帧。目标帧块顺序的重排序和 rot6d 正交化没有帮助。 --- 我们尝试过的(没有解决) ---
- sim dt 0.001 vs 0.005;显式扭矩 PD vs 隐式位置 PD。
- 摩擦损失开/关;接触 solref/solimp;摩擦;脚
内容来源: isaac-sim/IsaacLab