日期:2025-11
系统环境:Ubuntu 22.04 LTS
显卡要求:NVIDIA 显卡(支持 CUDA >= 11.7)
核心组件:Isaac Gym (Preview 4) + RSL_RL (v1.0.2) + Legged Gym
基础环境准备
Ubuntu 22.04 默认系统库较新,而 Isaac Gym 较旧,因此必须严格锁定 Python 和 PyTorch 版本。
注:显卡驱动和CUDA安装相对较容易,可以自行寻找教程
创建 Conda 环境
使用 Python 3.8 以获得最佳兼容性。
conda create -n legged_gym python=3.8
conda activate legged_gym
安装 PyTorch 1.13
为了适配 Isaac Gym 且不引发 CUDA 兼容问题,使用以下特定版本:
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url [https://download.pytorch.org/whl/cu117](https://download.pytorch.org/whl/cu117)
验证安装: 进入 Python 输入 import torch; print(torch.cuda.is_available()) 应返回 True。
安装 Isaac Gym (模拟器)
解压与安装
建议建立专门的工作目录(如 ~/workspace),不要在 Downloads 或 /tmp 下安装。
# 假设压缩包已在当前目录
tar -xf IsaacGym_Preview_4_Package.tar.gz
cd isaacgym/python
pip install -e .
解决 Ubuntu 22.04 核心兼容问题 (Critical)
现象:运行示例时报错 ImportError: libpython3.8.so.1.0: cannot open shared object file。 原因:系统找不到 Conda 环境内的动态链接库。 错误尝试:不要将路径直接写入 ~/.bashrc,这会导致系统命令(如 nano, ls)因库冲突而发生“段错误”或崩溃。
正确解决方案: 在运行时动态指定环境变量。后续我们将通过启动脚本 (train.sh) 来一劳永逸地解决此问题。
安装 RSL_RL (算法库)
这是配置中最容易出错的环节。官方最新版 (master 分支) 适配了新版 PyTorch 2.x,会导致依赖冲突(如 ModuleNotFoundError: tensordict 或 pyproject.toml 格式错误)。
解决方案:强制降级到 v1.0.2 版本。
cd ~/workspace # 回到工作根目录
git clone [https://github.com/leggedrobotics/rsl_rl](https://github.com/leggedrobotics/rsl_rl)
cd rsl_rl
# 切换到稳定旧版本
git checkout v1.0.2
# 安装
pip install -e .
安装 Legged Gym (训练环境)
安装本体
cd ~/workspace
git clone [https://github.com/leggedrobotics/legged_gym](https://github.com/leggedrobotics/legged_gym)
cd legged_gym
pip install -e .
解决 NumPy 版本冲突
现象:运行时报错 AttributeError: module 'numpy' has no attribute 'float'。 原因:Isaac Gym 依赖旧版 NumPy,而新版(1.24+)废弃了部分属性。 解决:
pip install "numpy<1.24"
补充缺失工具
如果不安装 Tensorboard,训练时会报错。
pip install tensorboard
运行与显存优化
创建通用启动脚本 (推荐)
为了解决 libpython 路径问题,且避免使用不稳定的 alias,在 legged_gym/scripts 目录下创建 train.sh。
cd legged_gym/scripts
# 写入脚本内容
echo '#!/bin/bash' > train.sh
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib' >> train.sh
echo 'python train.py "$@"' >> train.sh
# 赋予权限
chmod +x train.sh
解决显存溢出 (CUDA OOM)
现象:报错 RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED。 原因:默认配置开启 4096 个环境并行,显存需求大(需 8G+)。 解决: 修改 legged_gym/envs/a1/a1_config.py (或对应机器人的 config)。
class A1RoughCfg( LeggedRobotCfg ):
class env( LeggedRobotCfg.env ):
num_envs = 1024 # <--- 将 4096 改为 1024 或 512
启动训练
./train.sh --task=a1
常见报错速查表
| 错误特征 | 原因 | 解决方法 |
|---|---|---|
ImportError: libpython3.8.so.1.0 |
找不到 Python 动态库 | 使用 LD_LIBRARY_PATH 脚本启动 (见第五步) |
nano 打开时报 段错误 |
.bashrc 中污染了全局库路径 |
清除 .bashrc 中的 LD_LIBRARY_PATH 设置 |
ModuleNotFoundError: tensordict |
rsl_rl 版本过新 |
切换 rsl_rl 到 v1.0.2 标签 |
toml 解析错误 / license 格式错误 |
rsl_rl 配置文件兼容性差 |
切换 rsl_rl 到 v1.0.2 标签 |
AttributeError: ... no attribute 'float' |
NumPy 版本过高 | pip install "numpy<1.24" |
CUDA error: CUBLAS_STATUS_ALLOC_FAILED |
显存不足 | 减小配置文件中的 num_envs |
ModuleNotFoundError: tensorboard |
缺少依赖包 | pip install tensorboard |