目录

  • 开源人形机器人 RL 框架 Humanoid-Gym 论文解读:零样本 Sim2Real,从原理到本地部署
    • 一、这篇论文解决了什么问题
    • 二、关键方法
        1. 域随机化(Domain Randomization)
        1. 五分量奖励函数
        1. 高并行训练
        1. 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)
添加自定义机器人

如果你想用自己的机器人平台,需要:

  1. 将 URDF/MJCF 模型文件放入 resources/ 目录
  2. envs/ 下创建新的配置文件 <your_robot>_config.py,继承自 legged_robot_config.py
  3. 设置机器人名称、关节定义、PD 增益参数
  4. 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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐