全文2216字,预计阅读时间4分钟

原创 | 汪治堃

编辑 | 吕嘉玲

背景介绍

Isaac Gym是一款由NVIDIA在2021年开发的,用于强化学习研究的物理环境,当前仍然处于Preview Release的阶段 [1]。Isaac Gym最有特点的一点就是,允许开发者使用GPU来运行环境模拟,并将观测量与奖励都存储为GPU的张量,直接放入网络中进行运算。因此,带来的好处有两点。第一,Isaac Gym避免了传统的交互环境中存在的CPU仿真环境模拟到GPU网络训练的转换,从而最终加速整个训练过程。第二,由于使用GPU对物理环境进行仿真,Isaac Gym环境还可以同时并行运算数以千计的仿真环境,快速为当前的policy提供大量训练样本,从而从另一个方面,改善online-policy的算法在学习过程中出现的,样本收集慢,采样效率低下的问题。

https://developer.nvidia.com/isaac-gym

【强化学习】强化学习环境ISAAC GYM初步入门_python

常见的强化学习仿真环境

除了本文提到的Isaac Gym以外,现在常用的强化学习开发环境通常有如下几个:

1.OpenAI Gym

这是一套用于强化学习的标准API,以及一个多样化的参考环境集合。它包括了Atari游戏、常见控制任务环境、文本游戏等训练环境。其中的连续动作环境是采用Mujoco物理引擎作为底层开发的环境的。作为上手的环境来说,由于官方教材较多,代码书写也比较规范,文件调用相对直接,是非常容易使用和改造的。

【强化学习】强化学习环境ISAAC GYM初步入门_python_02

https://www.gymlibrary.ml/#

2.Pybullet Gym

Bullet在机器人强化学习领域也是一个比较常见的物理引擎,Pybullet就是基于该引擎开发的Python环境的模拟环境API,具有较好的物理碰撞计算能力。

【强化学习】强化学习环境ISAAC GYM初步入门_python_03

https://pybullet.org/wordpress/

3.Gazebo

相对于前面提到的环境来说,Gazebo更像是控制领域通常会使用的面向工业机器人应用的仿真环境,它具有更好的仿真拟真度,但是由于没有提供直接可以用于强化学习领域控制的API,需要使用ROS (Robot Operation System)通讯实现交互,因此开发难度较大,相对更适合需要实际部署的场景下使用。

【强化学习】强化学习环境ISAAC GYM初步入门_python_04

https://gazebosim.org/home

4.虚幻/Unity

虚幻和Unity作为原本是为了游戏领域开发的引擎软件,由于它们可以提供更佳的画面效果与物理学计算,同时还能提供更好上手的界面与文档教程,近些年常常被用于深度学习的训练中。此外,由于这些软件原本用于游戏设计,它们从根本上也很符合强化学习原本的设计目的,即控制智能体在虚拟环境中实现拟人的操作。常见的基于这两款软件开发的机器学习的环境有:

a.AirSim[2]

这是一款由微软开发基于虚幻引擎的无人机、汽车等的模拟器(基于Unity开发的版本仍然处于Preview Release阶段)。它能够与常用的飞行控制器如PX4和ArduPilot进行软件在环模拟,以及与PX4进行硬件在环模拟,以实现物理上和视觉上的逼真。同时,由于虚幻引擎的开放性,它可以被放入任何虚幻环境中进行使用。

【强化学习】强化学习环境ISAAC GYM初步入门_强化学习_05

https://microsoft.github.io/AirSim/

b.Unity Machine Learning Agents

这是由Unity公司从2005年开始开发的一个交互环境。它能使用Unity和ML代理工具包,创建物理、视觉和认知丰富的人工智能环境,并使用它们进行测试以及研究新的算法和方法。相比于AirSim等第三方开发的库来说,Unity Machine Learning Agents的开发环境更加系统,官方教材也相对较为友好。

【强化学习】强化学习环境ISAAC GYM初步入门_python_06

https://unity.com/products/machine-learning-agents

当然,也有很多论文对上述以及更多物理仿真环境进行了进一步比较如A Review of Physics Simulators for Robotic Applications、A Survey on Simulation Environments for Reinforcement Learning,读者感兴趣的话可以前往相关文献进行阅读。

ISAAC GYM环境介绍

ISAAC GYM环境的框架主要由三部分组成,第一部分是环境构建(默认是使用PhysX作为仿真的物理引擎),第二部分是训练算法(默认训练文件train.py中使用的是基于Pytorch编写的PPO算法),第三部分是环境与算法交互的API设置文件(被放在文件夹python/tasks/base中 )。

在安装完成后,我们可以在目录python/rlgpu下执行训练案例,代码如下所示:

python train.py --task Cartpole

如果一切顺利的话,我们就会看到平衡杆如下图所示,已经开始训练起来啦。

【强化学习】强化学习环境ISAAC GYM初步入门_开发语言_07

当然,我们如果想尝试其他案例,我们可以采用如下形式的训练代码:

python train.py --task TaskName --Other Command Line

1)TaskName是案例的调用名称,包含如下几个案例:


【强化学习】强化学习环境ISAAC GYM初步入门_API_08

2)Command Line是一些配置性指令文件:

【强化学习】强化学习环境ISAAC GYM初步入门_python_09

受限于篇幅,其他部分的介绍就下一次再说吧。

结论与展望

作为一款新的物理仿真环境,ISAAC GYM环境更适合需要大量数据采集情况下的算法训练,可以极大的提升训练效率。但是相对来说,由于API源文件之间的嵌套问题比较严重,对原有的工程进行改造的难度也相对较大。希望Nvidia的工程师在未来能够进一步对该项目进行优化,最终如果能整合进Omniverse全家桶与ISAAC SIM统一起来就更好了。

参考资料

[1] Viktor Makoviychuk, Lukasz Wawrzyniak, Yunrong Guo, Michelle Lu, Kier Storey, Miles Macklin, David Hoeller, Nikita Rudin, Arthur Allshire, Ankur Handa and Gavriel State. "Isaac Gym: High Performance GPU-Based Physics Simulation For Robot Learning.", arXiv preprint arXiv:2108.10470, 2021

[2] Shah, Shital, et al. "Airsim: High-fidelity visual and physical simulation for autonomous vehicles." Field and service robotics. Springer, Cham, 2018.

-END-

本文由西湖大学智能无人系统实验室博士后汪治堃原创