Skip to content

jason-wjs/HumanoidMimic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HumanoidMimic

基于 mjlabUnitree G1 humanoid motion imitation 研究代码库。

这个仓库的目标不是只复现某一篇论文,而是把 DeepMimic → AMP → ASE → BeyondMimic 这条技术路线,整理到一套统一、可比较、可继续扩展的代码结构里。对于首次 commit,它已经具备了一个清晰的研究底座该有的三个核心能力:

  • 统一的 motion 数据表示与转换链路
  • 统一的 env / agent / model 构建方式
  • 四条算法链路的最小训练与评估闭环

这个仓库是什么

可以把它理解成一个 humanoid motion imitation 的研究底座

  • 研究问题统一:都在回答“如何让 humanoid 学会参考动作,并进一步产生自然、可控、可迁移的行为”
  • 代码抽象统一:共享 motions/envs/learning/utils/ 四层结构
  • 实验入口统一:通过 scripts/train_agent.pyscripts/eval_agent.pylearning/builders.py 管理不同算法
  • 算法差异显式化:不同方法的差异尽量只保留在任务设计、观测构成、loss 结构这几层

所以它更接近“研究代码骨架 + 演进路线整理”,而不是“某单一 benchmark 的最终成品”。


算法路线图

DeepMimic

DeepMimic 代表了最经典的动作模仿思路:把参考运动作为逐帧目标,用 PPO 直接优化对参考姿态的跟踪。

它的优点是直接、清晰、容易落地;缺点也同样明显:

  • 强依赖手工设计的 tracking reward
  • 往往要求参考帧和当前状态比较强的对齐关系
  • 更像“精确跟随参考”,而不是“学会自然运动先验”

AMP

AMP 往前走了一步:不再让策略去死盯每一帧参考轨迹,而是通过对抗判别器学习“像不像自然参考运动”的风格先验。

这样做的核心变化是:

  • 从显式 tracking reward 转向 style reward
  • 从“跟参考帧一一对齐”转向“整体运动分布自然”

这让策略更容易生成自然动作,也降低了对逐帧对齐的依赖。

ASE

ASE 在 AMP 的基础上进一步引入 latent skill 表示。它关心的不只是“动作像不像”,还关心“动作风格能不能被编码、组合、切换”。

这里的关键变化是:

  • policy 输入扩展为 [obs; z]
  • z 由 encoder / prior 支持训练和推理
  • skill space 变成后续任务控制与组合的接口

这使得 motion imitation 不再只是一种 tracking 技术,而开始具备 skill library 的味道。

BeyondMimic

BeyondMimic 可以看作对 DeepMimic 系路线的现代化重构:仍然保留“参考动作驱动”的思想,但不再停留在传统的多项 tracking reward 拼接上。

在这个仓库里,BeyondMimic 的角色是:

  • 作为 DeepMimic 之后的任务设计升级版
  • 强调 reference-conditioned policy 的表达方式
  • 让 imitation 更接近“受参考约束的物理可行行为生成”

当前 codebase 的设计原则

四个算法共享同一套底层基础设施:

  • motion 数据层:统一 .npz 格式,用户自行将原始数据与转换后的 motion 文件放到 data/
  • env 层:基于 mjlab 的 manager-based RL env,MDP 组件解耦
  • learning 层PPOAgent → AMPAgent → ASEAgentActorCritic → AMPModel → ASEModel 的继承演进
  • 脚本层:统一走 debug / train / eval 三个入口
  • 实验产物层:统一写入 logs/

这意味着你可以把这个仓库视作一个“可横向比较算法、可纵向继续演化系统”的基础框架。

算法间最核心的差异可以概括为:

维度 DeepMimic BeyondMimic AMP ASE
主要驱动 tracking reward reference-conditioned imitation adversarial motion prior adversarial prior + skill latent
policy 输入 obs obs + ref_frame obs obs + z
learning target PPO PPO PPO + discriminator PPO + discriminator + encoder/prior

仓库结构

HumanoidMimic/
  configs/                实验配置
  data/                   用户自行放置原始数据与转换后的 motion 文件
  envs/                   环境、MDP 配置和 runtime 桥接
  learning/               agents / models / infra / builders
  motions/                motion 数据定义、采样与特征构建
  robots/                 G1 常量与机器人相关配置
  scripts/                debug / train / eval / csv_to_npz 入口
  tests/                  当前 smoke tests
  utils/                  configs / checkpoints / run_logs / env_api
  pyproject.toml          项目元信息与依赖
  uv.lock                 依赖锁文件
  README.md

更细一点的职责划分:

  • motions/:统一的 motion 数据表示、采样与判别器特征
  • envs/:DeepMimic / BeyondMimic / AMP / ASE 对应的 env 配置与 runtime 适配
  • learning/agents/:训练逻辑
  • learning/models/:网络结构
  • learning/builders.py:统一实验构建入口
  • utils/checkpoints.py:run 目录与 checkpoint 路径管理
  • utils/run_logs.py:JSONL / YAML 轻量落盘
  • tests/:当前最小 smoke tests

环境准备

项目当前通过 uv 管理依赖,pyproject.toml 已配置好基础依赖与开发依赖。

uv sync

如果你打算跑测试或做开发:

uv sync --extra dev

快速开始

1. 准备 data/ 目录中的数据

仓库只跟踪 data/ 目录结构,不跟踪具体数据文件。你需要自行把原始 mocap 数据和转换后的 motion 文件放到 data/

例如,可以把原始 CSV 放到:

data/your_motion.csv

再运行转换脚本生成统一 .npz

.venv/bin/python scripts/csv_to_npz.py \
  --input data/your_motion.csv \
  --output data/your_motion.npz

2. build / reset smoke

用于确认 env / model / agent 的构建链是通的。请把下面的 data/your_motion.npz 替换成你自己放到 data/ 目录下的 motion 文件:

.venv/bin/python scripts/debug_agent.py --algo deepmimic --motion-file data/your_motion.npz
.venv/bin/python scripts/debug_agent.py --algo amp       --motion-file data/your_motion.npz
.venv/bin/python scripts/debug_agent.py --algo ase       --motion-file data/your_motion.npz

3. 最小训练

.venv/bin/python scripts/train_agent.py --config configs/experiments/deepmimic_g1.yaml   --output-dir logs
.venv/bin/python scripts/train_agent.py --config configs/experiments/beyondmimic_g1.yaml  --output-dir logs
.venv/bin/python scripts/train_agent.py --config configs/experiments/amp_g1.yaml          --output-dir logs
.venv/bin/python scripts/train_agent.py --config configs/experiments/ase_g1.yaml          --output-dir logs

保存 checkpoint:

.venv/bin/python scripts/train_agent.py \
    --config configs/experiments/amp_g1.yaml \
    --output-dir logs \
    --save-final \
    --save-every 100

训练产物默认写入:

logs/<algo>_<timestamp>/
  builder_config.yaml
  run_summary.yaml
  metrics.jsonl
  train_result.yaml
  checkpoint_final.pt
  checkpoint_<N>.pt

4. 最小评估

.venv/bin/python scripts/eval_agent.py \
    --config configs/experiments/amp_g1.yaml \
    --steps 200

.venv/bin/python scripts/eval_agent.py \
    --config configs/experiments/amp_g1.yaml \
    --checkpoint logs/amp_20260309_003021/checkpoint_final.pt \
    --steps 200

评估产物默认写入:

logs/eval/<algo>_<timestamp>/
  eval_metrics.jsonl
  eval_summary.yaml

测试

当前仓库里已经有最小 smoke tests:

  • tests/test_csv_to_npz_smoke.py
  • tests/test_g1_env_cfgs_smoke.py
  • tests/test_runtime_smoke.py

运行方式:

.venv/bin/python -m pytest tests -q

当前状态

目前已经具备:

  • DeepMimic / BeyondMimic / AMP / ASE 四条链路的最小训练闭环
  • checkpoint 保存 / 加载
  • run 目录与 YAML / JSONL 日志落盘
  • 从 motion 数据到 env / learning / scripts 的统一组织结构

仍然明确留在后续工作的内容包括:

  • 长时训练稳定性验证
  • 视频录制 / 可视化导出
  • TensorBoard / WandB 集成
  • 更系统的 benchmark 与实验报告

首次提交前建议

如果你准备做第一次 commit / push,建议工作树保持“代码 + 配置 + 文档”干净,不带历史运行产物。当前默认日志目录已经是 logs/,因此历史遗留的 outputs/ 可以删除,不会影响当前脚本行为。

  • TensorBoard / WandB 集成

About

a collection of mimic algorithms for G1 robot motion imitation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages