0. 简介
Isaac Gym 是由 NVIDIA 提供的一个高性能仿真平台,专门用于大规模的机器人学习和强化学习(RL)任务。它结合了物理仿真、GPU加速、深度学习框架互操作性等特点,使得研究人员和开发者可以快速进行复杂的机器人仿真和训练。 Isaac Gym 的深度强化学习物理模拟环境,其可以可以导入URDF和MJCF文件,因此可以在不转换的情况下使用MuJoCo等中使用的模型。在使用MuJoCo和PyBullet等物理模拟环境的深度强化学习中,在GPU上模拟的信息被传递到CPU端,并根据CPU上接收到的信息计算观察和奖励。 重复该过程以在模拟环境中进行学习。 因此,为了加快学习速度,就存在CPU和GPU之间的瓶颈以及需要大型CPU集群等问题。而且Isaac Gym通过仅使用 GPU 执行这些过程,成功解决了上述问题并提高了速度。相关的API的使用可以参考Isaacgym使用操作指南里面的内容。
最近具身智能也是一个大热的方向。这里最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡1.88元,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了,同时支持访问加速,独立IP等功能,能够更快的完成项目搭建。此外对于低性能的还有3080TI使用只需要0.88元,已经吊打市面上主流的云服务器了
1. Isaac Gym环境安装
首先我们先来安装Isaac Gym环境,对应的下载链接为:Isaac Gym - Preview Release | NVIDIA Developer。对应的环境配置需求为:
- Ubuntu 18.04 或是 20.04
- Python版本3.6, 3.7 or 3.8.
- 最低显卡驱动版本:Linux: 470
- cuda版本:11.6
相关的CUDA和CUDNN的配置这里我们就不展开了,想要详细了解的请参考《从BEVDET来学习如何生成trt以及如何去写这些C++内容》。然后我们就简略写一下安装步骤
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-510
sudo vim /etc/apt/sources.list
# 然后在最后一行添加:deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe
sudo apt-get install gcc-7 g++-7sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1sudo update-alternatives --display gcc //查看默认版本sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1sudo update-alternatives --display g++wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
sudo sh cuda_11.6.0_510.39.01_linux.run
sudo vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:/usr/local/cuda-11.6/extras/CPUTI/lib64
export CUDA_HOME=/usr/local/cuda-11.6/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME
source ~/.bashrc
# 然后重启,并安装cudnn# 进入https://developer.nvidia.com/rdp/cudnn-archive下载指定版本,然后安装,这选用的是8.6的cudnn,参考:https://blog.csdn.net/shanglianlm/article/details/130219640
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-samples=8.6.0.163-1+cuda11.8
然后下面就对下载好的IsaacGym_Preview_4_Package.tar.gz
进行解压,格式为:
然后开始编译
tar -zxvf IsaacGym_Preview_4_Package.tar.gz
cd isaacgym
./create_conda_env_rlgpu.sh
要检查 Isaac Gym 是否正常工作,请运行 isaacgym/python/examples 目录中的 joint_monkey.py。 如果设置正确,人形模型将移动其四肢
可以通过下面的指令激活,并测试
# 激活环境
conda activate rlgpu
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt install libpython3.7
export LD_LIBRARY_PATH=$HOME/miniconda3/envs/rlgpu/lib
# 正常情况下这时候可以运行实例程序/isaacgym/python/examples/joint_monkey.py
python joint_monkey.py
# 可以通过--asset_id命令控制显示的模型
python joint_monkey.py --asset_id=6
“Isaac Gym”没有反应
运行示例代码(例如 joint_monkey.py)时,Isaac Gym 屏幕可能不会显示。 这是因为一些集成英特尔显卡(例如英特尔 UHD 显卡)的 PC 系统中并未使用 NVIDIA 的 GPU。 请输入以下命令以使用 NVIDIA GPU。
sudo prime-select nvidia
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
通过在~/.bashrc
中写入上述命令export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
,可以省去每次输入命令的麻烦。
可视化界面可以参考:《通过VNC搭建Ubuntu 18.04和20.04图形界面》
sudo vim /etc/apt/sources.list
# 添加 deb http://archive.ubuntu.com/ubuntu/ bionic universe
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
# sudo apt-get install -y vnc4server # ubuntu18
sudo apt-get install tightvncserver # ubuntu20
sudo apt update
sudo apt-get upgrade
sudo apt-get install snapd
sudo apt-get install -y x-window-system-core gdm3
sudo apt install ubuntu-desktop#如果不执行,则关机重新从sudo apt-get upgrade这一行开始执行
#sudo apt install xubuntu-desktop
sudo apt install xrdp
sudo systemctl status xrdp
sudo apt-get install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
vncserver
然后修改sudo vim ~/.vnc/xstartup
文件,这里还需要虚拟屏幕设置ubuntu18.04服务器配置VNC解决去掉显示器之后黑屏大鼠标问题:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 1920x1080 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &#gnome-terminal &sesion-manager & xfdesktop & xfce4-panel &
xfce4-menu-plugin &
xfsettingsd &
xfconfd &
xfwm4 &
metacity &
nautilus &
然后设置重启
sudo chmod +x ~/.vnc/xstartup
vncserver -kill :1
vncserver -geometry 1920x1080 :1
由于优刻得开通了端口,所以也可以通过vnc-viewer连接了
2. 对应文档
2.1 官方文档资源
-
NVIDIA Omniverse 全站文档
- 网址: https://docs.omniverse.nvidia.com/
- 内容: 包含 NVIDIA Omniverse 的全面文档资源。
-
Isaac Sim 开发者文档
- 网址: https://developer.nvidia.com/isaac/sim
- 内容: 提供了针对 Isaac Sim 的开发者文档,帮助开发者了解和使用 Isaac Sim。
-
Omniverse 开发者文档
- 网址: https://docs.omniverse.nvidia.com/dev-guide/latest/index.html
- 内容: Omniverse 的开发者文档,涵盖了最新的内容和指南。
-
Isaac Lab 文档
- 网址: https://isaac-sim.github.io/IsaacLab/
- 内容: Isaac Lab 的文档资源,可能包含与 Isaac Sim 相关的实验室信息。
-
Isaac Sim API 参考文档
- 网址: https://docs.omniverse.nvidia.com/py/isaacsim/index.html
- 内容: 提供了 Isaac Sim API 的参考文档,帮助开发者了解如何使用 Isaac Sim 的编程接口。
-
ROS/ROS2 教程
- 网址: https://docs.omniverse.nvidia.com/isaacsim/latest/ros_ros2_tutorials.html
- 内容: 包含了与 ROS/ROS2 相关的教程,帮助开发者在 Isaac Sim 中进行 ROS/ROS2 的开发和集成。
2.2 AI 仓库与视觉导航
-
Isaac ROS SLAM
- GitHub链接: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam
- 内容: 提供了功能强大的视觉导航工具,特别适用于工业自动化和复杂环境中的导航任务。
-
Isaac ROS 3D Scene Reconstruction
- GitHub链接: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_realsense
- 内容: 包含了基于 GPU 加速的视觉 SLAM 算法,用于定位、地图构建和路径规划。
2.3 视频教程与资料下载
-
教程视频
- 提取链接: 百度网盘链接(提取码:kvq7)
- 内容: 提供了详细的操作步骤和功能讲解,适合初学者学习 Isaac Sim。
-
GitHub 教程与代码仓库
- Isaac Sim ROS Workspaces: https://github.com/isaac-sim/IsaacSim-ros_workspaces
- Isaac ROS GEMs: https://github.com/NVIDIA-AI-IOT/Nav2-with-Isaac-ROS-GEMs
- 内容: 包含了与 Isaac Sim 相关的代码仓库和教程资源。
2.4 深入学习与实用技巧
-
开发环境搭建
- 内容: 根据文档和 GitHub 教程,开发者可以快速搭建 Isaac Sim 与 ROS 的集成工作空间。
-
视觉导航和 SLAM 技术应用
- 内容: 开发者可以利用 NVIDIA 提供的 SLAM 和 3D 重建代码库,实现复杂环境下的导航任务。
-
Replicator 环境生成
- 内容: Replicator 是 Isaac Sim 的一部分,可用于生成各种工业环境的模拟场景,帮助开发者验证机器人系统在虚拟环境中的表现。
3. 强化学习和Isaac Gym
下面我们来试一下Isaac Gym基础训练环境安装,对应提供的提供深度强化学习示例为:
git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git
conda activate rlgpu
cd IsaacGymEnvs
pip install -e .
#cuda11.6 安装pytorch1.12,更换国内源
pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116# 尝试训练
python train.py task=Ant
# 不显示动画只训练
python train.py task=Ant headless=True
# 测试训练模型的效果,num_envs是同时进行训练的模型数量
python train.py task=Ant checkpoint=runs/Ant/nn/Ant.pth test=True num_envs=64
Isaac Gym Benchmark文件交互逻辑
项目的文件目录构成
对应含义为:
assets:放置模型文件,官方文件显示目前支持加载URDF和MJCF文件格式。
docs:说明文档
isaacgymenvs:代码主目录
cfg:参数文件
learing:训练的算法文件
pbt:Population-Based Training 说明文档
run:训练的统计文件和模型文件
tasks:不同任务对用的训练方法文件
utils:通用工具文件
4. 第三方拓展宇树机器狗
无论是人型机器人:
还是机器狗:
其基本都是基于Isaac Gym平台,并加入自己的算法和模型,来完成强化学习训练。这里我们来看一下机器狗的工程
git clone https://github.com/Improbable-AI/walk-these-ways.git
conda activate rlgpu
cd walk-these-ways
pip install -e .
# 测试
python scripts/test.py
# 训练
python scripts/train.py
本文使用的代码结构是改编自legged_gym工程,如果想要在训练结束后继续上次的训练,可以参考这篇文章,这里就不展开写了
5. 参考链接
https://blog.csdn.net/weixin_44061195/article/details/131830133
https://blog.csdn.net/weixin_44061195/article/details/132830367
https://blog.csdn.net/qq_38023194/article/details/140874763