一句话定位

单张工作站 GPU 上用 NVIDIA Isaac Gym 同时仿真数千个机器人做端到端 on-policy RL:平地策略 <4 分钟、崎岖地形 <20 分钟就能训出可直接部署到实体 ANYmal C 的四足运动策略,比之前工作快数个数量级;随附的 legged_gymrsl_rl 成为整个具身运动学习领域被反复 fork 的基线。

背景与定位

论文出自 ETH Zurich Robotic Systems Lab(Marco Hutter 组)与 NVIDIA,发表于 CoRL 2021(作者 Nikita Rudin、David Hoeller、Philipp Reist、Marco Hutter)。它是 isaac-gym(PhysX GPU 物理引擎、端到端 GPU 数据采集)在腿式运动上的旗舰应用,把”仿真吞吐量”这个瓶颈从 CPU 多进程(受核数限制)搬到 GPU 上万并行。

范式定位:massively parallel on-policy RL。此前腿式运动学习走两条老路——(1)分布式 CPU 集群,用上千 CPU 各跑一份仿真、靠梯度平均堆出百万级 batch(OpenAI Rubik’s cube 训了几个月、block reorientation 训 14 天);(2)model-based 或 learning+optimal-control 混合方案。作者引用的直接前作是 Lee et al. 2020 learning-quadrupedal-locomotion-challenging-terrain(12 小时训练、粒子滤波课程)、Miki et al. wild-anymal(120 小时、teacher-student),以及 GPU 仿真加速线 Stooke&Abbeel、Liang et al.(GPU 机器人仿真分布式 RL)、brax(TPU 可微仿真)。本文的贡献是把并行度进一步推到数千机器人、优化训练算法、并首次在这种极端并行 regime 下完成”分钟级训练 + 真机 sim-to-real”闭环。

作者反复强调本文目的不是追求最强/最鲁棒策略(那需要叠更多技巧),而是证明”复杂真机任务可以在分钟级训完且仍能上真机”,从而改变研究者对训练时长的预期、支持”用现场扫描定制训练""自动调参”等新玩法。

模型架构

策略骨干(policy backbone):标准 feed-forward MLP actor-critic(PPO),无视觉/大模型。论文本身未给出 MLP 尺寸;开源 legged_gym 基线默认配置为 actor_hidden_dims=[512,256,128]critic_hidden_dims=[512,256,128]、ELU 激活,num_actions=12rsl_rlActorCritic 类)。

观测(论文口径):本体感受 + 局部地形。组成 = 基座线速度、基座角速度、重力向量测量、关节位置、关节速度、上一步动作、指令(heading+线速度),外加 108 个围绕基座网格采样的地形高度测量(每个是地面到基座高度的距离)。观测按 Table 4 加均匀噪声(关节位置 ±0.01 rad、关节速度 ±1.5 rad/s、基座线速度 ±0.01 m/s、角速度 ±0.2 rad/s、重力 ±0.05 rad/s²、地形高度 ±0.1 m)。(legged_gym 基线 config 默认 num_observations=235,对应更大的 17×11=187 点高度网格;本文 ANYmal 配置用 108 点。)

动作头(action head):连续控制,12 维=期望关节位置,直接送给电机侧 PD 控制器产生力矩。奖励和动作空间不含任何步态相关项(不指定 trot/gait primitive),策略自由收敛——实测总是收敛到 trot。

Actuator 网络(sim-to-real 关键):ANYmal 用串联弹性驱动器(SEA),动力学难建模。沿用 Hwangbo 2019 的思路用神经网络把”关节位置指令→力矩”,但简化输入:不再把固定时间步的历史测量拼进 feed-forward 网络,而是只把当前测量喂给一个 LSTM。作者试过给策略本身加各种 memory 机制补偿丢失的时序信息,发现不提升最终性能。

控制/仿真频率:策略 50 Hz;仿真时间步 0.005 s(每策略步 4 个仿真子步)——0.005 s 是 actuator 网络(近似离散 PD)保持稳定的下限,不是物理引擎的限制。

数据

纯仿真自生成,无外部数据集。规模由并行机器人数×每机器人步数决定:

  • 地形:5 类程序化生成——平地、斜坡、随机粗糙、离散障碍、楼梯;每块是 8 m 边长的方形瓦片,斜坡/楼梯排成金字塔以支持全向可通行。为在单一公共 mesh 上支持课程,把所有地形类型和难度等级平铺拼成一整张 mesh,靠”物理移动机器人”来切换其地形等级。粗糙地形高度变化 ±0.1 m。
  • 课程(game-inspired):每个机器人分配一个地形类型 + 难度等级。走出地形边界→升级;一个 episode 末位移不足目标速度所需距离的一半→降级;解决最高级→随机回到某一级(避免灾难性遗忘、增加多样性)。楼梯/障碍台阶高度 5 cm→20 cm,斜坡倾角 0°→25°。近零处理开销,无需外部调参,直接用机器人在课程上的分布当作策略性能分布,省掉了粒子滤波/生成网络的重采样开销。4000 机器人:500 次更新已能过斜坡/下楼梯,1000 次全部地形达最高级、铺满全图;训练总计 1500 次策略更新收敛。
  • Sim-to-real 域随机化:每个机器人地面摩擦系数在 [0.5, 1.25] 均匀采样;每 10 s 施加一次随机推力(基座在 x/y 方向被加速至 ±1 m/s);观测按实测真机数据加噪。最大 episode 长度(time-out reset)= 20 s
  • 跨本体(cross-embodiment):同一 setup 训练 ANYmal C(主)、ANYmal C+固定机械臂(+约 20% 重量)、ANYmal B(尺寸相近、动力学不同)——后两者零改动(不改奖励/超参)即可获得相近性能;Unitree A1(尺寸更小、四分之一重量、腿构型不同)需去掉 ANYdrive actuator 模型、降 PD 增益和力矩惩罚、改默认关节配置;Agility Cassie(双足)需额外加”单脚站立”奖励才能走。

训练方法

目标/算法:自研 PPO(Schulman 2017),所有运算和数据全程留在 GPU。核心是在”数千机器人并行”这个新 regime 下重调标准 RL 公式和超参:

  • Batch/步长权衡:batch B = nrobots × nsteps。因为 nrobots 提高了几个数量级,必须选很小的 nsteps 才能把 B 控制在合理范围、优化训练时间——这是 on-policy RL 少有人探索的设定。但 nsteps 不能任意小:GAE 需要多步连续 reward,实测低于约 25 步连续步(=0.5 s 仿真时间)算法就无法收敛。注意区分 nsteps 与 episode 最大长度(20 s,time-out reset):一个 episode 可横跨多次策略更新。
  • 超大 mini-batch:用数万级样本的 mini-batch(远大于常规最佳实践),能稳住学习过程且不增加总训练时间。
  • Time-out bootstrapping(Reset Handling):PPO 的 critic 预测无限时域折扣回报,但基于 time-out 的 reset 无法被 critic 预测(观测里不给 episode 时间)。做法:区分两类终止,对 time-out 情形用 critic 自身预测 bootstrap 目标。这一点被 Gym 接口/Stable-Baselines 等主流实现忽略(因为它们假设环境永不 time-out 或只在 batch 最后一步 time-out,本文因每 batch 步数很少无法这样假设)。消融显示它把总奖励提升约 10%–20%(平地和粗糙地形都如此),并显著降低 critic loss。
  • 自适应学习率:仿 Heess 2017,按 KL 散度自适应调 LR(kl>2kl*α←max(1e-5, α/1.5)kl<0.5kl*α←min(1e-2, 1.5α))。

测试策略的 PPO 超参(Table 3):batch 98304(4096×24)、mini-batch 24576(4096×6)、epochs 5、clip 0.2、entropy coef 0.01、γ=0.99、GAE λ=0.95、目标 KL 0.01、adaptive LR。(legged_gym 基线 config 亦为 num_steps_per_env=24num_learning_epochs=5num_mini_batches=4max_iterations=1500,PPO 实现在姊妹库 leggedrobotics/rsl_rl,README 钉 v1.0.2。)

并行度扫描实验(保持 batch 恒定、增机器人数即减每机器人步数):从 128 机器人(旧 CPU 并行水平)扫到 16384(单 GPU 粗糙地形接近上限),对比 batch 49152/98304/196608 三档 + 20000 机器人/batch 1M 的理想基线。结论:机器人太多→每机器人时间horizon太短→性能骤降;太少→样本 iid 假设被破坏(同一机器人内样本太相似)→性能缓降;训练时间在 ~4000 机器人前近线性下降、之后吞吐增益放缓。最佳权衡 = 2048–4096 机器人 + batch ~100k/~200k

Infra(训练 / 推理工程)

  • 硬件:单工作站——CPU i9-11900k、GPU NVIDIA RTX A6000(单卡)。这是全文核心卖点:不用集群。
  • 训练时长:平地 <4 分钟;崎岖/粗糙地形 <20 分钟(测试策略 4096 机器人、batch 98304、1500 次更新,<20 min)。相对前作(12h/82h/88h/120h)快数个数量级。
  • 仿真吞吐 / 工程优化:端到端 GPU(消除 PCIe 数据搬运瓶颈——PCIe 可比 GPU 计算慢 50 倍)。附录拆解:一个 env step 里仿真最耗时且随机器人数缓增,观测/奖励计算次之,策略推理+actuator 网络推理近常数时间。优化手段:(1) 时间步取 0.005 s(4 子步/策略步,受 actuator 网络稳定性限制);(2) 接触优化——只保留必要碰撞体(脚、小腿、膝、基座),把低分辨率高度场转三角 mesh 修正竖直面,把机器人在地形上铺开以减少 PhysX 仍会检测的机器人间接触(训练早期挤在一起 vs 后期分散,仿真时间差达 2 倍)。
  • 显存(VRAM):4096 机器人粗糙地形带渲染 9 GB、headless 6 GB;平地降到 7 GB / 5 GB
  • 推理/真机部署:策略固定,直接从传感器算观测→喂策略→输出当作目标关节位置发给电机,不加任何滤波或约束满足检查。地形高度从机器人自建的 Lidar 高程图查询。因高程图不完美,真机在高速时鲁棒性下降,故把最大线速度指令从仿真的 0.75 m/s 降到部署时的 0.6 m/s

评测 benchmark

主要是仿真成功率 + 真机验证(无标准 benchmark leaderboard,作者明确说不追求 SOTA 鲁棒性):

  • 成功率(前向 0.75 m/s,侧向 [-0.1,0.1] m/s,“成功”=过地形且基座无接触):楼梯——台阶高度到 0.2 m(训练最难档、接近机器人运动学极限)近 100%;离散障碍——成功率随高度稳步下降(注意相邻障碍可正负叠加,实际最大台阶是标称高度的两倍);斜坡——25° 后无法上爬,但学会以中等成功率滑下。
  • 并行度 vs 性能(5 次运行均值±标准差,1500 次更新后总奖励):见”训练方法”扫描结论——2048–4096 机器人 + batch ~100k/200k 为最优权衡点。
  • Time-out bootstrapping 消融:总奖励 +10%–20%,critic loss 显著降低。
  • 跨本体泛化:ANYmal B / ANYmal C+arm 零改动达相近性能;A1、Cassie 需少量适配(见”数据”)。
  • 真机:ANYmal C 上下楼梯、动态越障成功,随附视频验证。

创新点与影响

  • 核心贡献:证明”数千机器人单 GPU 端到端并行 on-policy RL”能把复杂真机运动任务训练从天/小时级压到分钟级(平地 <4 min、粗糙 <20 min),并完成真机 sim-to-real 闭环。
  • 方法贡献:(1) massively parallel regime 下的超参再校准(小 nsteps≈25 步下限、超大 mini-batch、batch=nrobots×nsteps 的权衡);(2) time-out bootstrapping 在少步 batch 下的必要性(+10–20% 奖励);(3) game-inspired 自动课程——零调参、近零开销、天然适配大规模并行,用机器人在课程上的分布替代生成网络。
  • 生态影响:开源的 legged_gym(环境)+ rsl_rl(PPO)成为腿式运动学习事实标准基线,被后续无数工作 fork;2024-01 官方公告已随 Isaac Gym→Isaac Sim 的迁移把环境搬到 Isaac Lab,原库转为有限维护。
  • 作者自陈局限:本文不追求最强鲁棒性;真机高程图不完美导致 sim-to-real 鲁棒性下降(故降速到 0.6 m/s);未采用 Miki et al. 的 teacher-student 方案来抗地图/状态估计漂移——作者把”融合两种方法”列为未来工作。策略常有拖腿、基座过高/过低等 artifact,需调奖励权重才能满足约束上真机。

原始链接

一手源存档(sources/)