Issac Gym 安装
探索Isaac Gym的世界
介绍
如果你正在寻找一个高品质的强化学习模拟环境,Isaac Gym是一个极佳的选择。它是一个强大的工具,提供广泛的模拟功能,是机器人领域的研究人员和开发人员的首选。在本博客文章中,我们将更详细地了解Isaac Gym的特点以及它如何帮助你实现你的目标。
Isaac Gym的特点
Isaac Gym是一个高度可定制的模拟环境,可以为你的研究或开发项目创建复杂的模拟。Isaac Gym最重要的功能之一是它支持基于物理的模拟。它提供准确和真实的物理模拟,可以帮助你训练机器人执行现实世界的任务。此外,它支持各种类型的传感器,包括RGB相机,深度相机和激光雷达,使你能够为你的代理创建多样化且具有挑战性的场景。
Isaac Gym的另一个值得注意的特点是它支持TensorFlow,PyTorch和MXNet等深度学习框架。你可以使用这些框架使用强化学习算法来训练你的代理,包括Proximal Policy Optimization(PPO)和Deep Q-Networks(DQN)。使用深度学习框架,你可以创建从原始感官输入中学习并执行复杂任务的复杂模型。
Isaac Gym的优点
Isaac Gym相比其他模拟环境提供了几个优势。首先,它易于使用并提供直观的用户界面,使你可以轻松地创建和修改模拟。此外,它高度可定制,使你可以创建符合项目要求的模拟。此外,它快速且可扩展,使你能够高效地模拟大规模的环境和代理。
Isaac Gym的另一个优势是它与NVIDIA硬件的集成。它经过优化,可用于NVIDIA GPU,使你能够利用GPU的强大功能进行模拟。这种集成提供了快速和高效的模拟,使你能够更快,更有效地训练你的代理。
Isaac Gym的应用
Isaac Gym有几个应用,包括机器人,自动驾驶和游戏开发。在机器人领域,它可以帮助你训练机器人执行各种任务,例如抓取物体,导航环境和与人互动。在自动驾驶中,它可以帮助你训练自驾车在复杂的环境中安全地行驶。在游戏开发中,它可以帮助你创建智能且具有挑战性的游戏角色,可以适应玩家的行为。
结论
Isaac Gym是一个出色的强化学习模拟环境,提供广泛的模拟功能和深度学习框架的支持。它的支持物理模拟,各种类型的传感器和NVIDIA硬件集成,使它成为机器人领域的研究人员和开发人员的理想选择。它的易用性,可扩展性和快速的模拟使它成为各种应用的流行选择,包括自动驾驶和游戏开发。如果你正在寻找一个强大的模拟环境来进行你的研究或开发项目,Isaac Gym是一个出色的选择。
安装Isaac Gym
如果你想要尝试使用Isaac Gym,你需要先安装它。你可以从NVIDIA的GitHub存储库中下载和安装Isaac Gym。在安装之前,你需要确保你的计算机满足Isaac Gym的要求,包括安装了CUDA和cuDNN等软件。安装后,你可以尝试运行示例代码,以确保一切正常运行。
通过Docker安装Isaac Gym
-
从Nvidia网站下载Isaac Gym
https://developer.nvidia.com/isaac-gym
下载的文件夹结构如下:
├── assets │ ├── glb │ ├── mjcf │ ├── textures │ └── urdf ├── docker │ ├── 10_nvidia.json │ ├── Dockerfile │ ├── build.sh │ ├── nvidia_icd.json │ └── run.sh ├── docs │ ├── _images │ ├── _modules │ ├── _sources │ ├── _static │ ├── api │ ├── examples │ ├── programming │ ├── rl │ ├── about_gym.html │ ├── faqs.html │ ├── genindex.html │ ├── index.html │ ├── install.html │ ├── objects.inv │ ├── release-notes.html │ ├── search.html │ └── searchindex.js ├── licenses │ ├── assets │ ├── oss │ └── packages ├── python │ ├── build │ ├── examples │ ├── isaacgym │ ├── isaacgym.egg-info │ ├── rlgpu │ ├── LICENSE.txt │ ├── rlgpu_conda_env.yml │ └── setup.py ├── README.txt └── create_conda_env_rlgpu.sh
-
构建docker镜像
bash docker/build.sh
让我们来看看这个文件: ./docker/build.sh
#!/bin/bash set -e set -u SCRIPTROOT="$( cd "$(dirname "$0")" ; pwd -P )" cd "${SCRIPTROOT}/.." docker build --network host -t isaacgym -f docker/Dockerfile .
它实际上是基于Dockerfile构建docker镜像:
FROM nvcr.io/nvidia/pytorch:21.03-py3 ENV DEBIAN_FRONTEND=noninteractive # dependencies for gym # RUN apt-get update \\ && apt-get install -y --no-install-recommends \\ libxcursor-dev \\ libxrandr-dev \\ libxinerama-dev \\ libxi-dev \\ mesa-common-dev \\ zip \\ unzip \\ make \\ gcc-8 \\ g++-8 \\ wget \\ vulkan-utils \\ mesa-vulkan-drivers \\ doxygen \\ graphviz \\ fonts-roboto \\ python3-sphinx \\ pigz \\ git \\ libegl1 \\ git-lfs # Force gcc 8 to avoid CUDA 10 build issues on newer base OS RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8 RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8 # WAR for eglReleaseThread shutdown crash in libEGL_mesa.so.0 (ensure it's never detected/loaded) # Can't remove package libegl-mesa0 directly (because of libegl1 which we need) RUN rm /usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0 /usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0.0.0 /usr/share/glvnd/egl_vendor.d/50_mesa.json # python dependencies for gym RUN pip install -q -U \\ numpy-quaternion click tqdm sphinx sphinx-rtd-theme breathe pylama COPY docker/nvidia_icd.json /usr/share/vulkan/icd.d/nvidia_icd.json COPY docker/10_nvidia.json /usr/share/glvnd/egl_vendor.d/10_nvidia.json WORKDIR /opt/isaacgym # copy gym repo to docker COPY . . # install gym modules RUN cd python && pip install -q -e . RUN cd python/rlgpu/rl-pytorch && pip install -q -e . ENV NVIDIA_VISIBLE_DEVICES=all NVIDIA_DRIVER_CAPABILITIES=all
我们需要获取访问nvidia docker hub的权限 (https://docs.nvidia.com/ngc/ngc-overview/index.html#generating-api-key)
docker login nvcr.io Username: $oauthtoken Password:
-
启动容器
bash docker/run.sh bash docker/run.sh :0.0
让我们来看看 run.sh(修改版本,删除了“-rm”)文件
#!/bin/bash set -e set -u if [ $# -eq 0 ] then echo "running docker without display" docker run -it --network=host --gpus=all --name=isaacgym_container isaacgym /bin/bash else export DISPLAY=$DISPLAY echo "setting display to $DISPLAY" xhost + docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY --network=host --gpus=all --name=isaacgym_container_v1 mingzailao/isaac-gym:v0 /bin/bash xhost - fi
这意味着我们可以将参数传递到 run.sh 中,如果我们想要使用显示功能,则需要给脚本 DISPLAY 变量,例如 “:0.0”
如何确定你的DISPLAY Variable 呢
xdpyinfo
输出的不是:
xdpyinfo: unable to open display ":x.x".
即可
一般来说是类似下面的输出:
name of display: :1.0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 12004000 X.Org version: 1.20.4 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst number of supported pixmap formats: 7 supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 4, bits_per_pixel 8, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 255 focus: window 0x4cb, revert to None number of extensions: 31 BIG-REQUESTS Composite DAMAGE DOUBLE-BUFFER DPMS DRI2 DRI3 GLX Generic Event Extension MIT-SCREEN-SAVER MIT-SHM NV-CONTROL NV-GLX Present RANDR RECORD RENDER SECURITY SHAPE SYNC X-Resource XC-MISC XFIXES XFree86-DGA XFree86-VidModeExtension XINERAMA XINERAMA XInputExtension XKEYBOARD XTEST XVideo default screen number: 0 number of screens: 1 screen #0: ...
可以用:0.0,:1.0,:2.0,:3.0(多显卡编号id,一般来说决定X-org输出的顺序)
即可愉快使用%