开源人形机器人 RL 框架 Humanoid-Gym 论文解读:零样本 Sim2Real,从原理到本地部署
目录
- 开源人形机器人 RL 框架 Humanoid-Gym 论文解读:零样本 Sim2Real,从原理到本地部署
- 一、这篇论文解决了什么问题
- 二、关键方法
-
- 域随机化(Domain Randomization)
-
- 五分量奖励函数
-
- 高并行训练
-
- Sim2Sim 验证管线
-
- 三、实验结果
- 四、本地部署全流程
- 环境要求
- Step 1:创建 Python 环境
- Step 2:安装 PyTorch + CUDA
- Step 3:安装 numpy
- Step 4:安装 Isaac Gym
- Step 5:安装 Humanoid-Gym
- Step 6:启动训练
- Step 7:评估训练好的策略
- Step 8:Sim2Sim 验证(MuJoCo)
- 硬件建议
- 添加自定义机器人
- 五、为什么重要:开源的力量
- 六、适用场景与机器人平台
- 适用场景
- 已验证的机器人平台
- 社区已验证或可迁移的平台
- 七、局限
论文:Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer(完全开源,GitHub 2021 stars)
会议:RSS 2024(Best Paper Award Finalist)
链接:https://arxiv.org/abs/2404.05695
GitHub:roboterax/humanoid-gym | 2021 stars
作者:Xinyang Gu*, Yen-Jen Wang*, Jianyu Chen(清华大学 IIIS)
一、这篇论文解决了什么问题
人形机器人 RL 训练有一个经典困境:在仿真里训练的策略放到真机上就失效。原因很直观——仿真永远不可能完美模拟真实物理:地面摩擦系数、关节阻尼、电机延迟、传感器噪声,每一个微小差异累积起来就会让策略崩溃。
传统做法是"仿真训练 → 真实微调":先在仿真里训一个差不多的策略,再放到真机上跑几百个 episode 微调。问题是真实微调又贵又危险——人形机器人摔一次可能就要修几万块。
Humanoid-Gym 的核心主张是:不需要真实微调,仿真里训出来的策略可以直接部署到真机上。这篇论文拿了 RSS 2024 的 Best Paper Award Finalist,GitHub 2021 stars,完全开源,已经成为人形机器人 RL 的事实标准训练框架。
二、关键方法
1. 域随机化(Domain Randomization)
这是实现零样本 Sim2Real 的核心技术。在训练过程中,每个 episode 随机扰动仿真环境的物理参数:
- 地面摩擦系数:0.3 ~ 1.5
- 关节阻尼:标称值的 70% ~ 130%
- 连杆质量:标称值的 80% ~ 120%
- 电机扭矩延迟:0 ~ 10ms
- 基座初始姿态:随机偏转 +/-5度
通过在"五花八门的仿真世界"中训练,策略学会的不是"在这个特定仿真里怎么走",而是"在任何合理的物理参数下怎么走"。当它被部署到真实世界时,真实世界的物理参数只是它训练时见过的无数种组合之一。
2. 五分量奖励函数
Humanoid-Gym 的奖励函数包含五个分量,每个都经过消融实验验证为必需:
- 速度跟踪:惩罚实际速度与目标速度的偏差(鼓励往前走,而不是原地踏步)
- 能耗惩罚:惩罚过大的关节力矩(鼓励省电、动作平滑,而不是暴力发力)
- 姿态约束:惩罚躯干偏离直立姿态(防止摔倒)
- 足部接触力平滑:惩罚足部接触力的高频波动(鼓励稳定着地,而不是"跺脚")
- 步态对称性:惩罚左右腿运动不对称(防止跛行)
作者发现,去掉任何一个分量都会导致 Sim2Real 迁移失败——要么真机上走不稳,要么直接摔倒。
3. 高并行训练
基于 Isaac Gym,同时运行 4096 个仿真环境。每个环境有不同的域随机化参数,策略在每个环境中独立采样动作、计算奖励、更新参数。高并行 + 域随机化的组合,让策略在训练过程中"见过"的物理参数组合数量远超传统方法。
4. Sim2Sim 验证管线
除了 Sim2Real,Humanoid-Gym 还提供了一套 Sim2Sim 管线:将 Isaac Gym 中训练的策略导出为 JIT 模型,然后在 MuJoCo 中验证。MuJoCo 的物理引擎比 Isaac Gym 更精确,Sim2Sim 验证通过后再上真机,进一步降低了真机测试的风险。
三、实验结果
- 在 Isaac Gym 中训练的策略,零样本部署到真实人形机器人(RobotEra XBot-S 和 XBot-L),实现了稳定的双足行走
- 支持多种速度指令(0.2 ~ 1.0 m/s),真机测试中速度跟踪误差 < 0.1 m/s
- 对地面材质变化(瓷砖、地毯、草地)具有鲁棒性
- 对外部推力扰动(侧向推 5N)能快速恢复平衡
四、本地部署全流程
以下步骤来自 Humanoid-Gym GitHub README,我在关键步骤加了注释。
环境要求
- Ubuntu 20.04 / 22.04
- NVIDIA 驱动 >= 525(最低 515)
- Python 3.8
- CUDA 11.7
- Isaac Gym Preview 4
Step 1:创建 Python 环境
conda create -n humanoid-gym python=3.8
conda activate humanoid-gym
Step 2:安装 PyTorch + CUDA
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
Step 3:安装 numpy
conda install numpy=1.23
注意:必须用 numpy 1.23,更高版本与 Isaac Gym 不兼容。
Step 4:安装 Isaac Gym
# 从 NVIDIA 官网下载 Isaac Gym Preview 4
# https://developer.nvidia.com/isaac-gym
cd isaacgym/python && pip install -e .
# 验证安装
cd examples && python 1080_balls_of_solitude.py
如果看到一堆球在仿真环境中弹跳,说明 Isaac Gym 安装成功。
Step 5:安装 Humanoid-Gym
git clone https://github.com/roboterax/humanoid-gym.git
cd humanoid-gym && pip install -e .
Step 6:启动训练
cd humanoid-gym/humanoid
python scripts/train.py --task=humanoid_ppo --run_name v1 --headless --num_envs 4096
参数说明:
--task=humanoid_ppo:使用 PPO 算法训练人形机器人运动--run_name v1:实验名称,日志和模型会保存在humanoid/logs/v1/下--headless:无渲染模式,节省 GPU 资源--num_envs 4096:并行环境数,根据 GPU 显存调整(24GB 显存建议 4096,12GB 建议 2048)
Step 7:评估训练好的策略
python scripts/play.py --task=humanoid_ppo --run_name v1
这会加载训练好的策略并在仿真环境中渲染运行,同时自动导出 JIT 模型供 Sim2Sim 和真机部署使用。
Step 8:Sim2Sim 验证(MuJoCo)
python scripts/sim2sim.py --load_model /path/to/logs/v1/exported/policies/policy_1.pt
在 MuJoCo 中验证策略的鲁棒性。如果 MuJoCo 中表现良好,再上真机。
硬件建议
- 训练:单张 RTX 3090/4090(24GB)可跑 4096 环境,约 2-4 小时收敛
- Sim2Sim:CPU 即可
- 真机部署:需要人形机器人平台(论文使用 RobotEra XBot-S 和 XBot-L)
添加自定义机器人
如果你想用自己的机器人平台,需要:
- 将 URDF/MJCF 模型文件放入
resources/目录 - 在
envs/下创建新的配置文件<your_robot>_config.py,继承自legged_robot_config.py - 设置机器人名称、关节定义、PD 增益参数
- 在
envs/__init__.py中注册新任务
五、为什么重要:开源的力量
Humanoid-Gym 证明了零样本 Sim2Real 在人形机器人上是可行的。2021 stars 和 RSS 2024 Best Paper Finalist 说明社区和学术界都高度认可。对于 RL 研究者来说,它提供了一个完全开源的完整 baseline:奖励函数设计、域随机化策略、训练超参,全部开源可复现。你不需要从头造轮子,clone 下来改个 URDF 就能跑自己的机器人。
六、适用场景与机器人平台
适用场景
| 场景 | 状态 | 说明 |
|---|---|---|
| 双足平地行走 | [OK] 直接可用 | 核心场景,0.2~1.0 m/s 速度指令 |
| 多地形行走(瓷砖/地毯/草地) | [OK] 直接可用 | 域随机化训练天然支持地面材质泛化 |
| 抗扰动恢复 | [OK] 直接可用 | 侧向推力 5N 以内可快速恢复平衡 |
| 上下楼梯 | [WARN] 需扩展 | 论文未覆盖,需修改地形生成和奖励函数 |
| 跨越障碍 | [WARN] 需扩展 | 同上,需引入视觉感知模块 |
| 跑步/跳跃 | [NO] 不支持 | 奖励函数和运动范围均未设计 |
| 机械臂操作 | [NO] 不支持 | 纯运动控制框架,无操作能力 |
| 四足机器人 | [OK] 可迁移 | 框架支持任意腿式机器人,改 URDF + 调参即可 |
| 双足机器人(非人形) | [OK] 可迁移 | 如 Cassie、Digit 等,替换模型文件即可 |
已验证的机器人平台
| 机器人 | 类型 | 身高 | 验证状态 |
|---|---|---|---|
| RobotEra XBot-S | 人形 | 1.2m | [OK] 论文直接验证,零样本 Sim2Real |
| RobotEra XBot-L | 人形 | 1.65m | [OK] 论文直接验证,零样本 Sim2Real |
社区已验证或可迁移的平台
| 机器人 | 类型 | 迁移难度 | 说明 |
|---|---|---|---|
| 宇树 H1 / G1 | 人形 | 低 | 只需替换 URDF,调整关节限位和 PD 增益 |
| 特斯拉 Optimus | 人形 | 中 | 关节配置不同,需调整动作空间维度 |
| Figure 02 | 人形 | 中 | 同上 |
| 宇树 Go2 / B2 | 四足 | 低 | 框架原生支持四足,已有社区成功案例 |
| Unitree Go1 | 四足 | 低 | 参考 zanshi-dev/robot-rl-locomotion |
| Cassie | 双足 | 低 | 双足机器人天然兼容 |
| Agility Digit | 双足 | 中 | 需调整关节配置 |
| ROBOTIS 系列 | 小型人形/四足 | 低 | 参考 ROBOTIS-GIT/robotis_lab |
七、局限
- 目前只支持平地行走,不支持上下楼梯、跨越障碍等复杂地形
- 域随机化范围需要手动设定,对不同机器人平台需要重新调参
- 不支持操作任务(只有运动控制,没有机械臂)
- 依赖 Isaac Gym Preview 4(NVIDIA 已停止更新,后续可能需要迁移到 Isaac Lab)
关注我,每周一篇论文深度解读 + 本地部署指南。
本文首发于公众号 AI 共享前沿
标签: Humanoid-Gym 强化学习 人形机器人 Sim2Real 开源 RL
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)