【免费下载链接】supermimic_vibed
vibe coded supermimic within 1h, LAFAN passed within 1.5 gpuh training
SuperMimic 是一个在 Isaac Lab 3(kit-less + MuJoCo-Warp)上复现的人形机器人全身运动跟踪项目:只用 1 张 GPU、约 1.5 小时训练,就得到一个能跟踪全部 40 条 LAFAN1 舞蹈/跑酷动作的 G1 运动策略,评估回报 0.829、0/40 失败。本文面向新手,逐层拆解它的运动参考库三大核心:LAFAN1 的 30→50 Hz 重采样、可微正向运动学(FK)计算的 14 个跟踪刚体,以及 K=10 帧的未来目标编码,并给出对应源码路径,方便你快速上手阅读。
一张图看懂结果:1.5 GPU 小时打平论文 18 小时
先看成绩。下图是主训练曲线:评估归一化回报在 1.24 h 达到 0.824(论文目标 0.82 @ 1.2 h, H100),1.47 h 时 40/40 动作全部跟踪成功。
完整训练日志:MILESTONES.md
这套"小成本"策略的底层,就是一个组织得非常干净的运动参考库(MotionLib)。它做的事只有三件:把原始动作数据变成 50 Hz 的帧序列、用同一套可微 FK 算出参考姿态与速度、把未来 K 帧打包成策略的目标向量。下面逐一拆解。
运动参考库是什么:MotionLib 与数据流
原始数据来自 40 条重定向到 G1(29 自由度)的 LAFAN1 动作 CSV(dance、jumps、fallAndGetUp、sprint 等,共 264,705 帧 @ 30 fps),每条包含:
| 字段 | 列 | 说明 |
|---|---|---|
| 根部位姿 | 前 3 列 | pelvis 位置 (x, y, z) |
| 根部四元数 | 4~7 列 | 姿态(xyzw 存储,内部转 wxyz) |
| 关节角 | 8~36 列 | 29 个关节,顺序与 Unitree SDK 一致 |
MotionLib在 supermimic/motion.py 中一次性加载所有 CSV,拼接成一个大张量并建立索引:
clip_len/clip_start/clip_end:每条动作的帧数与起止帧;clip_id:全局帧号 → 所属动作;bin_clip/bin_start:1 秒一个 bin,用于后面"按回报采样重置点"。
数据流可以概括为:
40 × CSV(30Hz) ──重采样──▶ 50Hz 帧序列 ──中心差分──▶ 速度/角速度 │ ▼ 可微 FK(14个跟踪刚体位姿+速度) │ goal(f, K=10) ◀┘ ▼ 策略 π 的目标向量 gLAFAN1 重采样详解:30 Hz 到 50 Hz 的关键一步
控制频率是 50 Hz(CONTROL_DT = 0.02,4 个 5 ms 子步),所以第一步就是把 30 fps 的原始数据重采样到 50 Hz。实现见 supermimic/motion.py#L28-L39:
- 位置 / 关节角:按时间线性插值(Lerp);
- 根部姿态:四元数用
quat_slerp(球面插值)而不是线性插值,保证旋转路径平滑且单位长度不漂移; - 帧数:
n = floor(dur / 0.02) + 1,每条动作末尾帧自然对齐到 50 Hz 网格。
插值之后再算速度,这一步直接决定了奖励信号的"干净程度":
- 线速度
v、关节速度qd用中心差分(_gradient,两端单侧差分),见 supermimic/motion.py#L116-L120; - 世界系角速度
w由旋转矩阵差R[t+1]ᵀR[t-1]取so3_log再除以2dt得到,见 supermimic/motion.py#L51-L55。
小细节:重采样后的根速、根角速度还会预转到根局部系(
root_v_local/root_w_local),根帧投影重力root_gz也一并缓存(supermimic/motion.py#L67-L71),这些正是 10 帧历史观测里的字段。
跟踪刚体 FK:用一套可微运动学对齐模拟器
跟踪哪些部位?TRACKED_BODIES定义了14 个刚体:pelvis、左右髋/膝/踝 roll 连杆、torso、左右肩/肘/腕(见 supermimic/robot.py#L52-L58)。
项目的巧劲在于:它没有直接信任仿真器输出的 link 状态,而是在 supermimic/kinematics.py 里用 PyTorch 从零写了一套可微正向运动学G1Kinematics:
- 从编译好的 MJCF(
data/g1_description/g1_29dof.xml)读取 kinematic tree:每个 body 的父节点、关节轴axes、局部偏移offs_p/offs_R; forward()沿树递推(supermimic/kinematics.py#L62-L89):- 位置
pᵢ = p父 + R父·offᵢ,姿态Rᵢ = R父·R_off·Rot(axis, q); - 速度用刚体运动学递推:
vᵢ = v父 + ω父 × (pᵢ − p父),ωᵢ = ω父 + q̇·axis_world。
- 位置
同一套 FK 三处共用:参考动作、仿真器记录状态、世界模型预测。因此解析奖励头与仿真标注的奖励严格一致,且与模拟器的 link 位姿/速度对到 ~1e-6(可用 tools/test_env.py 验证)。这也是"一个可微世界模型"能稳定收敛的地基之一。
K 帧目标编码:未来 10 帧如何变成 73 维向量
策略的目标不是"下一帧姿态",而是未来 K=10 帧的参考运动序列(--goal_frames 10,supermimic/train.py#L23),由MotionLib.goal()生成,见 supermimic/motion.py#L94-L110:
- 取未来帧
f+1 … f+K,并在动作末尾钳位到最后一帧(future_frames),避免越界; - yaw 不变性:用当前参考根帧的
yaw_mat(只保留朝向投影)把所有量变换到"去掉全局航向"的坐标系,策略无需知道机器人在世界里的绝对朝向; - 每帧特征(73 维):
| 特征 | 维度 | 含义 |
|---|---|---|
| Δp | 3 | 未来帧相对当前参考帧的位移(yaw 系下) |
| 6D 旋转 | 6 | 未来帧根姿态(mat_to_6d,连续且无万向锁) |
| root_v_local / root_w_local | 6 | 未来帧根局部速度 |
| q / 0.1·qd | 29 + 29 | 未来帧关节角与(缩小 10 倍权重的)关节速度 |
K帧 flatten 成730维向量g,与 10 帧历史观测o_hist一起送入运动编码器 MLP(2048→1024→512→256,输出 z∈R³²,tanh),见 supermimic/networks.py 与 README "Implementation" 一节。
为什么这样设计?目标只由参考数据构成,不依赖机器人当前状态——同一个编码的 z 可以被想象(imagined)rollout 反复使用,配合 32 步 BPTT 与世界模型即可在"脑内"更新策略,这正是 1.5 小时训完的关键。
彩蛋:1 秒 Bin 与"按回报采样"的重置
MotionLib还把每条动作按 1 秒切成 bin(BIN_FRAMES = 50,supermimic/motion.py#L72-L87),维护frame_bin反向索引。这是模拟器重置采样(supermimic/env.py)的基础:50% 均匀 + 40% softmax(−25·G_b/G_max) + 10% 偏向过去的采样,让训练时间优先花在"难但接近成功"的片段上,而不是平均用力。
小结:三个要点带走
- 重采样:Lerp + Slerp 到 50 Hz,中心差分算速度,四元数转 wxyz,全部在加载时一次算完(supermimic/motion.py);
- FK:一套 torch 可微正向运动学同时服务参考、仿真与世界模型,14 个跟踪刚体位姿+速度对齐到 1e-6(supermimic/kinematics.py);
- 目标:K=10 帧、yaw 不变、73 维/帧的未来参考序列,让策略"看得见未来"(supermimic/motion.py#L100-L110)。
想复现完整流程:tools/setup.sh准备环境 →tools/download_data.sh拉取 LAFAN1 数据与 G1 模型 →CPUS=0-23 ./run_train.sh lafan1_main开训,最后用 tools/plot.py 画出你自己的成功曲线。
【免费下载链接】supermimic_vibed
vibe coded supermimic within 1h, LAFAN passed within 1.5 gpuh training
相关推荐
SuperMimic入门指南:1小时AI编程复现人形机器人全身运动跟踪的完整原理
SuperMimic入门指南:1小时AI编程复现人形机器人全身运动跟踪的完整原理 SuperMimic 是一个面向 人形机器人全身运动跟踪 Whole Body
SuperMimic渲染与可视化:如何生成带幽灵参考的人形机器人运动跟踪对比视频
SuperMimic渲染与可视化:如何生成带幽灵参考的人形机器人运动跟踪对比视频 在SuperMimic开源项目中,训练好人形机器人(Unitree G1)的运
如何用 Molmo2-8B-mxfp4 做视频问答与目标跟踪:帧采样与时间戳注入机制详解
如何用 Molmo2 8B mxfp4 做视频问答与目标跟踪:帧采样与时间戳注入机制详解 Molmo2 8B mxfp4 是 Molmo2 8B 多模态大模型的
大模型多模态模型量化本地部署人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考