# Unitree Go2 Rough地形PPO训练崩溃报错normal expects std >=。

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-04-21-unitree-rl-mjlab-9
> 频道：pitfalls | 更新日期：2026-04-21 | 标签：auto, github-issue, unitree_rl_mjlab
> 核心摘要：Go2粗糙地形多卡训练因动作噪声std无约束及PPO比率溢出致NaN崩溃，需升级代码修复MuJoCo配置与数值稳定性问题。

# Unitree Go2 Rough地形PPO训练崩溃报错normal expects std &gt;=。

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Multi-GPU training crashes on Rough terrain task (NaN in PPO)](https://github.com/unitreerobotics/unitree_rl_mjlab/issues/9)（GitHub unitreerobotics/unitree_rl_mjlab #9）

**状态**：已解决

## 问题

使用10张RTX A4000训练Mjlab-Velocity-Rough-Unitree-Go2任务时，前几次迭代即触发RuntimeError: normal expects all elements of std &gt;= 0.0。

## 环境

Unitree Go2, Ubuntu, Python 3.11, PyTorch CUDA, 10× NVIDIA RTX A4000, 56 CPU cores, num-envs=8192, torchrunx多卡训练

## 解决办法

1. 将代码仓库更新至最新版本，该版本已修复MuJoCo配置及上述数值稳定性问题
2. 若无法立即更新，手动修改mjlab/terrains/config.py第64行，将num_waves=4改为num_waves=4.0以解决tyro类型错误
3. 在actor_critic.py和actor_critic_recurrent.py中对self.std添加clamp(min=1e-6)约束，防止优化器将其推至负值或NaN
4. 在ppo.py第297行对ratio计算增加torch.clamp(torch.exp(...), max=10.0)限制，避免log_prob差值过大导致exp溢出传播NaN

讨论原作者：@diaskabdualiev 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub unitreerobotics/unitree_rl_mjlab #9：Multi-GPU training crashes on Rough terrain task (NaN in PPO)](https://github.com/unitreerobotics/unitree_rl_mjlab/issues/9)