具身智能之Isaac Gym使用

server/2024/11/20 11:10:13/

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 官方文档资源

  1. NVIDIA Omniverse 全站文档

    • 网址: https://docs.omniverse.nvidia.com/
    • 内容: 包含 NVIDIA Omniverse 的全面文档资源。
  2. Isaac Sim 开发者文档

    • 网址: https://developer.nvidia.com/isaac/sim
    • 内容: 提供了针对 Isaac Sim 的开发者文档,帮助开发者了解和使用 Isaac Sim。
  3. Omniverse 开发者文档

    • 网址: https://docs.omniverse.nvidia.com/dev-guide/latest/index.html
    • 内容: Omniverse 的开发者文档,涵盖了最新的内容和指南。
  4. Isaac Lab 文档

    • 网址: https://isaac-sim.github.io/IsaacLab/
    • 内容: Isaac Lab 的文档资源,可能包含与 Isaac Sim 相关的实验室信息。
  5. Isaac Sim API 参考文档

    • 网址: https://docs.omniverse.nvidia.com/py/isaacsim/index.html
    • 内容: 提供了 Isaac Sim API 的参考文档,帮助开发者了解如何使用 Isaac Sim 的编程接口。
  6. ROS/ROS2 教程

    • 网址: https://docs.omniverse.nvidia.com/isaacsim/latest/ros_ros2_tutorials.html
    • 内容: 包含了与 ROS/ROS2 相关的教程,帮助开发者在 Isaac Sim 中进行 ROS/ROS2 的开发和集成。

2.2 AI 仓库与视觉导航

  1. Isaac ROS SLAM

    • GitHub链接: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam
    • 内容: 提供了功能强大的视觉导航工具,特别适用于工业自动化和复杂环境中的导航任务
  2. Isaac ROS 3D Scene Reconstruction

    • GitHub链接: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_realsense
    • 内容: 包含了基于 GPU 加速的视觉 SLAM 算法,用于定位、地图构建和路径规划。

2.3 视频教程与资料下载

  1. 教程视频

    • 提取链接: 百度网盘链接(提取码:kvq7)
    • 内容: 提供了详细的操作步骤和功能讲解,适合初学者学习 Isaac Sim。
  2. 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 深入学习与实用技巧

  1. 开发环境搭建

    • 内容: 根据文档和 GitHub 教程,开发者可以快速搭建 Isaac Sim 与 ROS 的集成工作空间。
  2. 视觉导航和 SLAM 技术应用

    • 内容: 开发者可以利用 NVIDIA 提供的 SLAM 和 3D 重建代码库,实现复杂环境下的导航任务。
  3. 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


http://www.ppmy.cn/server/143455.html

相关文章

EMNLP 2024 | 大语言模型的内部知识机理

这是今年早期发表在EMNLP 2024 Findings上的一篇综述性论文:Knowledge Mechanisms in Large Language Models: A Survey and Perspective。 虽然论文尝试落脚点在以“Knowledge”为内涵去尝试阐释LLMs内部机制的这种“古典主义”思想上稍显过时且机械,但…

论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)

笔记整理:和东顺,天津大学硕士,研究方向为软件缺陷分析 论文链接:https://aclanthology.org/2024.acl-long.558/ 发表会议:ACL 2024 1. 动机 虽然大语言模型(LLMs)已经在自然语言理解和生成任务…

基于YOLOv8深度学习的智慧社区高空抛物检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着智慧社区的不断发展,智能化技术在社区管理中的应用日益广泛,而高空抛物现象逐渐成为社区安全管理中的突出问题。高空抛物不仅对社区居民的财产和生命安全造成极大威胁,还容易引发法律纠纷,增加社区管理的难度。尽管已有部分传…

chatGPT是如何使用tensrFlow训练模型的?

在训练像ChatGPT这样的大型语言模型时,TensorFlow的一些关键特性起到了至关重要的作用。以下是TensorFlow在训练ChatGPT过程中最关键的几个特性: ### 1. **动态计算图(Eager Execution)** - **灵活性**: TensorFlow 2.x 默认启用…

AWS账户被盗的风险与应对措施

在数字化时代,云计算已成为企业日常运作的重要组成部分,而亚马逊云服务(AWS)作为全球领先的云服务提供商,其账户安全显得尤为重要。然而,账户被盗的事件时有发生,这不仅会影响个人用户&#xff…

django从入门到实战(二)——FBV视图介绍

在 Django 中,视图是处理 HTTP 请求并返回 HTTP 响应的核心部分。Django 提供了两种主要的视图实现方式:FBV(Function-Based View)和 CBV(Class-Based View)。下面将详细介绍这两种视图的语法、要义和使用方…

LLM学习笔记(2)会话补全Chat Completions、什么是JSON?

什么是会话补全Chat Completions? 功能目标:处理多轮对话。 它模拟对话的逻辑,比如聊天机器人对用户消息的回应。使用的模型主要是针对对话型应用优化的模型,例如gpt-3.5-turbo或gpt-4。 什么是JSON? JSON 本质上是…

环形缓冲区 之 STM32 串口接收的实现

STM32串口数据接收环形缓冲区接收实例说明 ...... 矜辰所致前言 关于环形缓冲区,网上有大量的理论说明文章,在有些操作系统中,会有实现环形缓冲区的代码,比如 RT-Thread 的 ringbuffer.c 和 ringbuffer.h 文件,Li…