1. Isaac Sim仿真平台介绍及容器化安装¶

1.1 Isaac Sim是什么?¶
Isaac Sim 是一个专为支持日益机器人化和自动化的世界而从零开始构建的软件平台。其目标是尽可能简化设计、调试、训练以及部署用于真实物理机器人自主控制的智能体的整个过程。
1.1.1 设计¶
Isaac Sim 提供了一整套工作流程,支持导入和调试使用主流格式设计的机械系统,包括 Onshape、统一机器人描述格式(URDF)以及 MuJoCo XML 格式(MJCF)。这一切得以实现,主要依托于通用场景描述(USD),这是一种易于扩展的开源 3D 场景描述 API,也是 Isaac Sim 的核心数据交换格式,起到了统一各种格式的关键作用。
1.1.2 调试与训练¶
Isaac Sim 的核心功能是其仿真能力:一个基于 GPU 的高保真 PhysX 引擎,能够以工业规模支持多传感器的 RTX 渲染。通过直接访问 GPU,Isaac Sim 能够支持多种传感器的仿真,包括摄像头、LiDAR(激光雷达)和接触传感器。这一能力进一步促进了数字孪生的仿真,使得在无需启用真实机器人之前,就可以运行端到端的管道。Isaac Sim 提供了一整套工具,包括使用 Replicator 进行合成数据采集,通过 Omnigraph 管理和编排仿真环境,调节 PhysX 仿真参数以匹配现实,以及通过多种方法(例如使用 Isaac Lab 进行的强化学习,Reinforcement Learning, RL)训练控制智能体。这些功能共同构成了 Isaac Sim 强大的机器人开发生态系统。
1.1.3 开发¶
Isaac Sim 预先集成了所有必要组件,既可以将智能体部署到真实机器人上,也可以构建能够与这些系统完全集成的应用程序。Omniverse 提供了用于应用程序基础设施的 API,包括 GUI(图形用户界面)创建和文件管理功能。Omniverse Nucleus 允许用户构建自己的云平台,从而实现协作应用的开发,并通过实时同步和数据托管功能支持团队合作。Isaac Sim 平台还提供了与 ROS 和 ROS2 的桥接 API,使仿真和真实机器人之间能够直接通信。此外,它还包括 NVIDIA Isaac ROS,这是一个高性能、硬件加速的ROS 2包集合,用于开发自主机器人。这些功能共同构建了一个强大的工具生态,为机器人开发和实际部署提供了全面支持。
1.1.4 相关的API链接¶
IsaacSim API(包括传感器扩展,机器人扩展等扩展API)
USD API(Universal Scene Description,用于协作构建动画 3D 场景)
GUI API(图形用户界面API)
1.1.5 相关的手册¶
Omniverse Kit Programming Manual(Omniverse Kit 是一个 SDK(软件开发工具包),用于构建自定义的 Omniverse 应用程序)
Scripting Guides(脚本开发指南)
1.1.6 指导指南¶
Workstation Installation:本地安装指南
Container Installation:容器安装指南
Introductory:在Omniverse Kit 中工作的基础知识以及 Omniverse Isaac Sim中的不同工作流程
GUI:通过图形用户界面(GUI)了解 Omniverse Isaac Sim 中的机器人基础概念
Development Tools:调试和开发的工具与环境
Core API:使用 Omniverse Isaac Sim Core Python API 构建环境、机器人和任务
Scene setup:从外部源导入和修改机器人与操纵器
Motion Generation:Lula 动作生成库
ROS/ROS2:各种 ROS 和 ROS2 桥接和接口的示例
Mapping:占用地图生成
Isaac Lab Tutorials:强化学习框架和 Cloner API
Replicator Tutorials:合成数据生成
Isaac Cortex Tutorials:高级行为编程
1.1.7 系统架构¶

Isaac Sim的目的是支持新机器人工具的创建,并增强已有工具的功能。该平台提供了灵活的C++和Python API,可以根据需求将其集成到项目中。平台的目标不是与当前或现有的软件竞争,而是与之协作并增强其功能。为此,Isaac Sim的许多组件是开源的,可以自由使用。您可能希望在OnShape中设计机器人,用Isaac Sim模拟其传感器,并通过ROS或其他消息系统控制舞台。同样,也可以完全在Isaac Sim提供的平台上构建一个完整的独立应用程序!
1.1.8 Omniverse Kit¶
Isaac Sim 使用 Omniverse™ Kit,这是一个用于构建本地 Omniverse 应用程序和微服务的工具包。Omniverse Kit 通过一组轻量级插件提供各种功能。插件采用 C 接口编写,以保持持久的 API 兼容性;然而,它也提供了 Python 解释器,方便脚本编写和定制。
Python API 可用于编写新的 Omniverse Kit 扩展或为 Omniverse 创建新的实验。
1.1.9 开发工作流程¶

Isaac Sim 基于 C++ 和 Python 构建,通常通过使用编译的插件和绑定来运行。这意味着该平台能够支持多种工作流程,用于构建和与使用 Isaac Sim 的项目进行交互。Isaac Sim 提供了一个完整的独立 Omniverse 应用程序,用于与机器人进行交互和仿真,尽管这是用户与平台交互的最常见方式,但并非唯一方式。Isaac Sim 还通过 VS Code 和 Jupyter Notebooks 的扩展提供直接的 Python 开发支持。Isaac Sim 也不限于同步操作,可以通过 ROS 和 ROS2 与硬件进行联动,从而促进仿真到实际操作的转移和数字孪生的实现。
1.1.10 USD¶
Omniverse Isaac Sim 使用 USD 交换文件格式来表示场景。Universal Scene Description (USD) 是由 Pixar 开发的一个易于扩展的开源 3D 场景描述和文件格式,旨在用于内容创作以及不同工具之间的交换。由于其强大性和多功能性,USD 正在被广泛采用,不仅在视觉特效领域,而且在建筑、设计、机器人技术、制造业和其他学科中也得到了应用。
欲深入了解 Omniverse 中的 USD,请参阅 NVIDIA 的 USD 入门指南What is USD? 请参阅USD API文档以获取更多详细信息。 请查看NVIDIA USD API以了解针对 USD 的 Python 包装器。 请参阅USD Glossary of Terms & Concepts以获取更多详细信息。 请参阅NVIDIA USD 教程获取关于 USD 的逐步介绍。
1.2 Isaac Sim容器化安装¶
Isaac Sim可以通过安装包和Docker容器两种安装方式,由于安装包方式是直接在系统上安装,如果后续环境出现问题或者版本升级时较为麻烦,因此本课程推荐使用Isaac Sim容器化安装方式,以下将详细介绍Isaac Sim容器化安装方法。
1.2.1 Isaac Sim配置及显卡驱动要求¶
Isaac Sim是NVIDIA官方开发的仿真平台,其基于NVIDIA PhysX物理引擎进行构建。Isaac Sim需要运行在含有NVIDIA GPU的设备上,以下是Isaac Sim的配置要求。
注:Isaac Sim对Linux系统适配度较高,本节使用Ubuntu22.04系统版本安装。Isaac Sim版本为4.5.0。
| 最低配置 | 适中配置 | 最佳配置 | |
|---|---|---|---|
| 系统版本 | Ubuntu 20.04/22.04 Windows 10/11 |
Ubuntu 20.04/22.04 Windows 10/11 |
Ubuntu 20.04/22.04 Windows 10/11 |
| CPU | Intel Core i7 (7th Gen) AMD Ryzen 5 |
Intel Core i7 (9th Gen) AMD Ryzen 7 |
Intel Core i9/X-series AMD Ryzen 9/Threadripper |
| CPU核心数 | 4 | 8 | 16 |
| 内存 | 32GB | 64GB | 64GB |
| 磁盘空间 | 50GB SSD | 500GB SSD | 1TB NVMe SSD |
| GPU | GeForce RTX 3070 | GeForce RTX 4080 | RTX Ada 6000 |
| 显存 | 8GB [1][2] | 16GB | 48GB |
以下是Isaac Sim要求的NVIDIA显卡驱动版本要求。
| Driver Version Support | Windows | Linux |
|---|---|---|
| Recommended | 537.58 537.70 |
535.129.03 |
| Minimum | 537.58 537.70 |
535.129.03 |
1.2.2 前置准备¶
Isaac Sim容器运行需要以下前提环境:
- Docker及Docker Compose
- NVIDIA显卡驱动
- NVIDIA Container Toolkit
以下为这三部分前提环境安装方法。
1.2.2.1 Docker及Docker Compose安装¶
Docker 安装指令如下。
#注意:此脚本需要在shell命令行窗口执行,不可在当前窗口执行,如果在当前窗口执行,将会报错
#下载docker安装脚本且执行
curl -fsSL https://get.docker.com -o get-docker.sh
sudo chmod a+x get-docker.sh
sudo sh get-docker.sh
#把当前用户加入Docker用户组
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
#运行docker容器
docker run hello-world
1.2.2.2 NVIDIA显卡驱动安装¶
NVIDIA显卡驱动安装指令如下。
#注意:此脚本需要在shell命令行窗口执行,不可在当前窗口执行,如果在当前窗口执行,将会报错
sudo apt-get update
sudo apt install build-essential -y
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.129.03/NVIDIA-Linux-x86_64-535.129.03.run
chmod +x NVIDIA-Linux-x86_64-535.129.03.run
sudo ./NVIDIA-Linux-x86_64-535.129.03.run
#注意:此脚本需要在shell命令行窗口执行,不可在当前窗口执行,如果在当前窗口执行,将会报错
#配置apt仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg* \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
#安装NVIDIA Container Toolkit
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
#配置容器
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
#验证NVIDIA Container Toolkit
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
1.2.3 Isaac Sim容器部署¶
输出类似于以下结果,检查NVIDIA显卡驱动版本是否大于等于535.129.03。

1.2.3.2 拉取Isaac Sim Docker镜像¶
Isaac Sim官方Docker镜像地址为"nvcr.io/nvidia/isaac-sim:4.5.0",以下是相关拉取指令。
docker pull nvcr.io/nvidia/isaac-sim:4.5.0
由于Isaac Sim官方Docker镜像服务器位于海外,在国内拉取时会因为网络问题速度较慢,而且Isaac Sim官方Docker镜像运行时官方资产是从海外服务器上获取,本课程针对这些问题,把官方资产加载至镜像内且上传至国内服务器(turinginno-registry.cn-shanghai.cr.aliyuncs.com/turinginno/isaac-sim),以下是相关拉取指令。
docker pull turinginno-registry.cn-shanghai.cr.aliyuncs.com/turinginno/isaac-sim:4.5.0
1.2.3.3 运行Isaac Sim Docker容器¶
如果使用Isaac Sim官方Docker镜像运行,以下是相关指令:
docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
nvcr.io/nvidia/isaac-sim:4.5.0
如果使用本课程构建的镜像,以下是相关指令:
docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
turinginno-registry.cn-shanghai.cr.aliyuncs.com/turinginno/isaac-sim:4.5.0
1.2.4 Isaac Sim容器连接且启动应用程序——命令行¶
Isaac Sim启动成功后,可通过命令行的方式连接至Isaac Sim容器。以下是相关操作步骤:
- 打开你本机电脑终端(Windows可使用CMD、Linux / MacOS可使用Terminal),通过ssh指令连接至Isaac Sim容器所在主机,以下是示例指令,需替代主机IP为Isaac Sim容器所在主机IP。
注:ssh指令格式为"ssh 主机用户名称@主机IP"
ssh user@192.168.1.99
- 连接Isaac Sim所在主机成功后,通过"docker ps"指令查看Isaac Sim容器名称。以下是相关示例,容器名称为isaac-sim-4.5.0
注:Isaac Sim容器名称在1.3.3运行Isaac Sim容器相关步骤时通过"--name"参数设置。
- 通过"docker exec"指令进入Isaac Sim容器。以下是相关示例。
注:"docker exec"指令格式为"docker exec -it 容器名称 /bin/bash",只需把容器名称替换为Isaac Sim容器名称即可。
- 进入容器后,默认进入"/isaac-sim"路径,通过"./runheadless.sh"启动Isaac Sim应用程序,以下是相关示例。
注意:Isaac Sim应用程序启动完成后会在终端输出"Isaac Sim Full Streaming App is loaded.",如未输出该内容则代表Isaac Sim正在启动。
1.2.5 Isaac Sim 容器连接且启动应用程序——Cursor / VSCode¶
Isaac Sim 启动成功后,推荐使用Cursor / VSCode 等IDE连接至容器内部进行开发。
以下为使用Cursor连接至容器内部进行开发的操作步骤:
打开Cursor,安装'Remote - SSH'、'Docker'、'Dev Containers'、'Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code'这四个Cursor / VSCode 扩展。
在左侧导航栏中,选择“远程资源管理器”,点击加号进行以触发新增连接,最后输入机器连接信息进行连接。
连接主机后,Cursor / VsCode 会为连接新打开一个窗口,在新窗口左侧导航栏中,选择"Docker",在容器列表找到"Isaac Lab"容器,右键,再点击"附加Visual Studio Code",在弹出的容器列表再选择"Isaac Sim"容器,即可连接至Isaac Sim容器。
连接Isaac Sim容器后,打开VSCode / Cursor终端,输入"./runheadless.sh"启动Isaac Sim应用程序。
注意:Isaac Sim应用程序启动完成后会在终端输出"Isaac Sim Full Streaming App is loaded.",如未输出该内容则代表Isaac Sim正在启动。
1.3 连接至Isaac Sim仿真界面¶
因为Isaac Lab是基于Isaac Sim的,Isaac Lab容器也包含Isaac Sim环境(具体路径为/workspace/isaaclab/_isaac_sim)。开发者可以在Isaac Lab容器启动Isaac Sim,或者在训练中启动Isaac Sim仿真渲染(可看到机器人实时训练任务效果)。基于此,以下是连接至Isaac Sim仿真界面的步骤。
官方提供了连接至Isaac Sim仿真界面的应用程序,支持Windows、Linux、macOS系统。以下是应用程序下载链接:
下载完成后,进行安装,安装完成后,双击打开"Isaac Sim WebRTC Streaming Client"应用程序,输入容器宿主机IP地址(如192.168.1.96),选择合适的分辨率,点击"Connect",即可连接至Isaac Sim仿真界面。
连接成功后,Isaac Sim将如下展示,至此,你已经完成Isaac Sim的容器化安装且连接至Isaac Sim。