强化学习仿真器Isaac Gym的安装与配置

写在前面 – 最近强化学习强化学习在机器人领域真是大放异彩,鉴于IsaacGym+LeggedGym的仿真器和训练框架组合已经成为了机器人领域强化学习算法的主流工具,于是我打算写一篇博客来记录一下这个仿真环境的安装和使用。

本文主要参考了这篇博客的内容。

Isaac Gym简介

本文主要介绍Isaac Gym强化学习仿真器和Legged Gym强化学习训练框架的安装和使用。Isaac Gym是一个基于GPU加速的并行计算仿真环境,主要可进行强化学习研究。它支持导入URDF和MJCF文件、基于张量(tensor)的API、域随机化(domain randomlization)以及各种传感器和环境。该仿真器使用GPU并行加速,比传统使用cpu计算的仿真如mujoco/raisim等可提速上百倍,非常适合需要大量采样的深度学习类算法使用,但仿真精度相较于mujoco等有略微下降,Isaac Gym框架对显存大小有较高要求,最低显存配置为4GB,(个人推荐8GB以上),对显卡算力最低要求不高GTX10系列及以上可运行。Legged Gym是一个由ETH推出的腿足机器人强化学习训练框架,实现了如ppo等算法和ANYmal/Cassie等机器人的训练权重等,该框架需要配合Isaacgym仿真器使用。经过我的测试Isaac Gym可以运行在Ubuntu20.04,Ubuntu22.04系统上,且python版本为python3.8。python3.9及以上版本实测无法运行,Windows10/11,Windows Subsystem on Linux, Docker for Windows等环境实测无法运行,Linux虚拟机实测无法运行,Ubuntu24.04可以运行但坑比较多因此也不太建议,其余未提及的系统未测试,Docker for Linux理论上可以支持。但强烈建议安装Ubuntu20.04/22.04配合anaconda的python3.8环境使用

该环境安装主要包括以下几个部分,鉴于Ubuntu操作系统的安装网上资料已经很多,因此本文不会介绍这部分内容,建议读者自行获取资料。

  • Nvidia 显卡驱动安装
  • Nvidia CUDA环境安装
  • anaconda python虚拟环境安装
  • Isaac Gym 仿真器安装
  • Legged Gym(我修改的版本) 训练框架安装

Isaac Gym安装

Nvidia 显卡驱动安装

显卡驱动安装,在终端中输入sudo ubuntu-drivers autoinstall即可完成安装系统推荐的显卡驱动。

安装完成后在终端窗口中输入nvidia-smi命令,如果出现以下内容,则证明显卡驱动已经安装完成。如下所示,我安装的驱动版本是546.12, CUDA版本是12.3。注意后续安装CUDA和pytorch时大版本号需要与之对齐,即对于这里的情况来说需要对应安装CUDA12.x版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 546.12 Driver Version: 546.12 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 4090 WDDM | 00000000:01:00.0 Off | Off |
| 0% 32C P8 3W / 450W | 0MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+

若安装失败,可以参阅这篇文章提供的方法手动安装和卸载。注意如果安装时出现需要设置密码等情况可以从计算机bios中关闭security boot选项来避免一些麻烦,但这会破坏计算机启动过程中的可信计算链条从而导致安全性略微降低。

安装CUDA环境

CUDA 是 NVIDIA 发明的一种并行计算平台和编程模型。它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能。是使用Nvidia显卡进行通用计算的基础。安装CUDA的方式较为简单,按照nvidia官网教程走基本上不会有太大问题。访问cuda下载官网。选择适合自己系统的版本, 这里我选择的是离线安装的版本。请注意不建议使用apt源安装,apt源包含的cuda版本较为老旧,可能产生冲突!

cuda_dl

选择完成后将官网给出的下列代码依次输入即可完成安装,可以忽略下方可选的驱动更新选项。注意保持网络畅通,wget那一步报错是网络问题。
cuda_ins
安装完成后在命令行里输入/usr/local/cuda/bin/nvcc --version, 若出现类似如下内容即证明安装成功。(可以将该路径加入环境变量。)注意:千万不能使用sudo apt install nvidia-cuda-toolkit命令,否则会重新安装apt源的过时版本的CUDA

1
2
3
4
5
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Nov__3_17:51:05_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.3, V12.3.103
Build cuda_12.3.r12.3/compiler.33492891_0

安装Anaconda虚拟环境

Anaconda是一个开源的Python发行版,用于科学计算和数据分析。它包含了许多常用的科学计算和数据分析库,如NumPy、Pandas、Matplotlib等,并且提供了一个方便的环境管理工具。Anaconda的目标是简化Python环境的配置和管理,使得科学计算和数据分析的工作更加高效和便捷。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。Miniconda是Conda的轻量级版本,只包含最基本的内容——Python与conda以及相关的必须依赖项123。它适用于空间要求严格的用户或只需要Python和Conda核心功能的用户。本教程将安装miniconda。

访问miniconda的官方网站下载linux版本的miniconda。并逐行在终端中执行官网最底部显示的快速安装教程(注意选择linux版本的教程),miniconda默认安装在用户主目录下的miniconda3文件夹中。
conda_ins

关闭终端并重新打开后发现终端命令行开头出现(base)字样即说明安装成功。这是安装后conda自动启动了base环境引起的现象,可正常使用(ros环境下能不能用不清楚),也可以通过conda config --set auto_activate_base false命令来设置不自动启动base环境。

之后新建一个python3.8的虚拟环境供我们后续使用。使用如下命令新建一个python3.8环境。

1
conda create -n "legged-gym" python=3.8

其中-n参数指定新环境的名字,可根据需要自行修改。python=3.8参数指定使用python3.8环境。

之后使用conda activate legged-gym命令激活新建的环境。在命令行中输入python,若出现Anaconda, python3.8等字样则说明安装成功。之后输入exit()即可退出python命令行解释器。

1
2
3
4
Python 3.8.19 (default, Mar 20 2024, 19:58:24)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

可参阅此链接,或此链接来快速入门anaconda。

安装Isaac Gym环境

安装Isaac Gym可以从官网下载,但由于Nvidia官方已经不再维护该仿真器(Nvidia已经转向Omniverse Sim了,但其API过于复杂,暂时用不到),从官网下载的版本存在一些细小的依赖问题需要我们手动修复。

修复官方版本的Isaac Gym

下载软件包后将其解压缩(推荐解压缩到用户根目录,解压到的目录就是Isaac Gym的安装位置,配置好后无法变更)。使用vscode等文本编辑器打开./python/isaacgym/torch_utils.py文件,将第135行的np.float修改为float如下所示。

1
2
3
4
def get_axis_params(value, axis_idx, x_value=0., dtype=np.float, n_dims=3):

# 将np.float修改为float
def get_axis_params(value, axis_idx, x_value=0., dtype=float, n_dims=3):

由于官方版本的Isaac Gym会默认安装cpu版本的pytorch,因此我们还需要提前手动安装gpu版本的pytorch防止被覆盖安装。首先激活刚才新建的anaconda环境:conda activate legged-gym,之后前往pytorch官网下载pytorch,向下滑动一些后在如下图所示的界面中选择对应的版本,并在激活的conda环境中输入指令来完成安装。请注意,推荐选择使用conda的方式安装,使用pip安装也可以,注意一定要安装对应的cuda大版本,如这里是cuda12。

torch_ins

在激活的环境中启动python, 并输入import torch,和print(torch.cuda.is_available()),若输出为True则证明gpu版本的pytorch已经安装到位。

1
2
3
4
5
6
Python 3.10.13 | packaged by Anaconda, Inc. | (main, Sep 11 2023, 13:24:38) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>>

正式安装Isaac Gym与测试

激活刚才新建的anaconda环境:conda activate legged-gym。使用cd命令跳转到./python目录下。执行pip install -e .命令即可完成安装。

下面将测试Isaac Gym是否安装成功。使用cd命令跳转到./python/examples目录下。在激活的环境下执行python ./joint_monkey.py 或该文件夹下的其他任意一个文件,若能正常弹出窗口并运行,则说明安装成功。

Isaacgym_run

安装Legged Gym环境

本篇文章将介绍ETH原版Legged Gym+ rsl_rl的安装和配置方法,而在该系列后续文章 强化学习仿真环境Legged Gym的初步使用—-训练一个二阶倒立摆 中将使用我修改过的Legged Gym环境介绍一个二阶倒立摆的训练过程。ETH的Legged Gym项目已经停止维护,而我的版本将持续更新,若希望尝试使用我修改的版本,可以直接移步至下一篇文章

使用conda activate legged-gym命令激活刚才建立的环境。

在激活的环境中使用git clone https://github.com/leggedrobotics/rsl_rl命令克隆rsl_rl仓库到本地,注意请妥善选择克隆位置,安装后无法修改位置
执行cd rsl_rl && git checkout v1.0.2 && pip install -e .命令完成rsl_rl的安装。

在激活的环境中使用git clone https://github.com/leggedrobotics/legged_gym.git命令克隆Legged Gym仓库到本地,注意请妥善选择克隆位置,安装后无法修改位置
执行cd legged_gym && pip install -e .命令完成安装。

使用python legged_gym/scripts/train.py --task=anymal_c_flat命令来测试环境是否能正常训练。

使用python legged_gym/scripts/play.py --task=anymal_c_flat命令来测试您刚才训练出的策略。

leg_train

恭喜您,到目前为止您已经成功安装了Isaac Gym+Legged Gym环境。在下一篇文章中我将通过一个二阶倒立摆的例子来初步展示一个完整的训练过程。

延申阅读:更多的训练框架

  • Legged Gym(ver. ZZS): 由我本人修改,目前我正在使用的Legged Gym版本,添加了一些更友好的可视化功能,和一个注释完整,对新手友好的二阶倒立摆训练环境(comming soon)。

  • Humanoid Gym: 由星动纪元推出的对ETH Legged Gym框架的改进版本。实现了IsaacGym仿真器到mujoco仿真器的sim2sim迁移。

  • IsaacGymEnv: 由Nvidia官方推出的强化学习训练框架,实现了如AMP模仿学习,基于SDF函数的碰撞检测等更多功能。但框架较复杂。

API参考文档和入门教程

常见问题

更多问题和解决方案建议访问Nvidia官方论坛查询。