Ubuntu 22.04 使用 Issac Gym 进行人形强化学习训练
文章目录
- 一、硬件环境
- 二、创建虚拟环境
- 1. 安装 Anaconda
- 2. 创建强化学习虚拟环境
- 三、安装 Isaac Gym
- 1. 下载
- 2. 解压安装
- 3.验证安装
- 四、安装 rsl_rl
- 五、安装Unitree 强化学习相关库
- 1. unitree_rl_gym
- 2. unitree_sdk2py(可选)
- 六、强化学习训练
- 6.1 训练命令
- 6.2 效果演示 Play
一、硬件环境
由于 Isaac_gym 仿真平台需要 CUDA ,本文建议硬件需要配置 NVIDIA 显卡(显存>8GB、 RTX系列显卡),并安装相应的显卡驱动。建议系统使用 Ubuntu20 ,显卡驱动 525 版本及以上。
如下是自己的硬件配置:
- Ubuntu 系统22.04
- N卡版本:570.153.02
- CUDA版本:cuda_12.8
查看N卡驱动版本:
nvidia-smi
;
查看CUDA版本:nvcc --version
;
关于如何安装 N卡驱动及CUDA版本,此链接 版本较旧,仅供参考。
二、创建虚拟环境
1. 安装 Anaconda
关于如何安装 Anaconda ,可参看 此链接。
2. 创建强化学习虚拟环境
以基于宇树g1的强化学习为例:
# 创建 conda虚拟环境
conda create -n unitree-rl python=3.8
# 激活虚拟环境
conda activate unitree-rl# 安装 PyTorch
conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda -c pytorch -c nvidia
三、安装 Isaac Gym
1. 下载
Isaac Gym 是 Nvidia 提供的刚体仿真和训练框架。首先,先在 Nvidia 官网 下载Archive压缩包。
2. 解压安装
tar -zxvf IsaacGym_Preview_4_Package.tar.gz
cd isaacgym/python
pip install -e .
3.验证安装
cd examples
python 1080_balls_of_solitude.py
正确安装后,正确运行会出现如下界面:
3.1 异常情况1
未识别到CUDA,使用CPU进行仿真渲染。可能得原因是:
- 未正确安装N卡驱动 或 CUDA驱动;
- 创建虚拟环境时指定了cuda版本,且指定的版本不对;
3.2 异常情况2
python 库未识别:ImportError: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
首先到虚拟环境
# 确认是否安装此库
cd ******/anaconda/envs/unitree-rl/lib
ls |grep 3.8# 若存在此库, 查看LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
vi ~/.bashrc
#export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/gene/Documents/software/anaconda/envs/unitree-rl/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:*****/anaconda/envs/unitree-rl/lib
source ~/.bashrc
四、安装 rsl_rl
rsl_rl 是一个强化学习算法库
# 1. 克隆仓库
git clone https://github.com/leggedrobotics/rsl_rl.git -b v1.0.2# 2. 安装
cd rsl_rl
pip install -e .
五、安装Unitree 强化学习相关库
1. unitree_rl_gym
git clone https://github.com/unitreerobotics/unitree_rl_gym.git
cd unitree_rl_gym
pip install -e .
2. unitree_sdk2py(可选)
unitree_sdk2py
是用于与真实机器人通信的库。如果需要将训练的模型部署到物理机器人上运行,可以安装此库。
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip install -e .
六、强化学习训练
强化学习实现运动控制的 基本流程 如下: Train
→ Play
→ Sim2Sim
→ Sim2Real
- Train: 在 Gym 仿真环境让机器人与环境互动找到最满足奖励设计的策略。通常不推荐实时查看效果,以免降低训练效率。
- Play: 通过 Play 命令查看训练后的策略效果,确保策略符合预期。
- Sim2Sim: 将 Gym 训练完成的策略部署到其他仿真器,避免策略小众于 Gym 特性。
- Sim2Real: 将策略部署到实物机器人,实现运动控制。
6.1 训练命令
训练命令如下:
python legged_gym/scripts/train.py --task=xxx --headless
参数说明:
- –task : 必选参数,值可选( go2, g1, h1, h1_2)
- –headless : 默认启动图形界面,设为 true 时不渲染图形界面(效率更高)
- –resume : 从日志中选择 checkpoint 继续训练
- –experiment_name : 运行/加载的 experiment 名称
- –run_name : 运行/加载的 run 名称
- –load_run : 加载运行的名称,默认加载最后一次运行
- –checkpoint : checkpoint 编号,默认加载最新一次文件
- –num_envs : 并行训练的环境个数
- –seed : 随机种子
- –max_iterations : 训练的最大迭代次数
- –sim_device : 仿真计算设备,指定 CPU 为 --sim_device=cpu
- –rl_device : 强化学习计算设备,指定 CPU 为 --rl_device=cpu
如运行训练指令后,出现如下界面,表示开始强化学习训练的第一次迭代(共10000次)。
训练时自己的显卡消耗如下:
6.2 效果演示 Play
在 Gym 中查看训练效果,可以运行以下命令:
python legged_gym/scripts/play.py --task=xxx
参数说明:
- Play 启动参数与 Train 相同。
- 默认加载实验文件夹上次运行的最后一个模型。
- 可通过 load_run 和 checkpoint 指定其他模型。