系列文章目录
前言
一、 NVIDIA Omniverse™ Isaac Sim 是什么?
NVIDIA Omniverse™ Isaac Sim 是一款适用于 NVIDIA Omniverse™ 平台的机器人仿真工具包。Isaac Sim 具有构建虚拟机器人世界和实验的基本功能。它为研究人员和从业人员提供了创建稳健、物理精确的仿真和合成数据集所需的工具和工作流程。Isaac Sim 通过 ROS/ROS2 支持导航和操纵应用。它可以模拟来自 RGB-D、激光雷达和 IMU 等传感器的传感器数据,用于域随机化、地面实况标记、分割和边界框等各种计算机视觉技术。
1.1 系统架构
1.2 开发流程
1.3 Omniverse 套装
Omniverse Isaac Sim 使用英伟达™ Omniverse™ Kit SDK,这是一个用于构建原生 Omniverse 应用程序和微服务的工具包。Omniverse Kit通过一系列轻量级插件提供了多种功能。插件采用C语言接口编写,以实现持久的API兼容性;不过,还提供了一个Python解释器,以方便用户编写脚本和进行定制。
Python API 可用于编写 Omniverse Kit 的新扩展或 Omniverse 的新体验。
提示
如需更深入地了解如何使用工具包进行开发,请参阅《工具包编程手册》。
1.4 Omniverse Nucleus
Omniverse Isaac Sim 使用英伟达™ Omniverse™ Nucleus 访问环境和机器人的USD文件等内容。Omniverse Nucleus服务允许各种客户端应用程序、渲染器和微服务共享和修改Omniverse Isaac Sim中的虚拟世界。
Nucleus以发布/订阅模式运行。根据访问控制,Omniverse 客户端可以向 Nucleus 数据库(DB)发布对数字资产和虚拟世界的修改,也可以订阅他们的修改。更改会在连接的应用程序之间实时传输。数字资产可以包括几何图形、灯光、材料、纹理和其他描述虚拟世界及其随时间演变的数据。
这样,各种支持 Omniverse 的客户端应用程序(应用程序、连接程序和其他程序)就可以共享和修改虚拟世界的权威表述。
注释
如需更深入地了解 Nucleus 数据模型、架构和分发平台,请参阅 "Nucleus 概述"。
1.5 USD
Omniverse Isaac Sim 使用 USD 交换文件格式来表示场景。通用场景描述(USD)是一种易于扩展的开源三维场景描述和文件格式,由皮克斯公司开发,用于内容创建和不同工具之间的交换。由于其强大的功能和通用性,USD 被广泛采用,不仅在视觉特效界,而且在建筑、设计、机器人、制造和其他学科也得到了广泛应用。
- 如需更深入地了解 Omniverse 中的 USD,请参阅 NVIDIA USD 入门 什么是 USD?
- 更多详情,请参阅 USD API 文档。
- 更多详情,请参阅《USD术语与概念词汇表》。
- 请参见英伟达™(NVIDIA®)USD 教程,逐步了解 USD。
二、文档概述
文档分为以下几个部分: 简介、安装指南、API 文档、教程、手册和参考资料。
2.1 简介
简介部分是对 Omniverse Isaac Sim 的基本概述,以及它如何融入 NVIDIA Omniverse™ 生态系统。它还概述了 Omniverse Isaac Sim 的架构、工作流程和文档布局。
2.2 安装指南
工作站安装是向所有用户推荐的安装流程。
Omniverse Isaac Sim还支持更高级的无头和远程安装选项。本页指南涵盖 Docker、云和流相关设置。
2.3 API 文档
有关 Omniverse 和 Isaac Sim 扩展的 Python API 文档,请点击此处。
2.4 教程
教程部分包含以下类别中使用Isaac Sim功能的分步指南。我们强烈建议您先完成入门教程、图形用户界面教程和核心API教程,以便了解使用Omniverse Isaac Sim的所有方法,然后再继续学习重点更突出的教程。
入门: 在 Omniverse Kit 中工作的基础知识以及 Omniverse Isaac Sim 中的不同工作流程。
图形用户界面: 通过图形用户界面了解 Omniverse Isaac Sim 中机器人技术的基本概念。
开发工具: 用于调试和开发的工具和环境。
核心应用程序接口: 使用 Omniverse Isaac Sim 核心 Python API 构建环境、机器人和任务。
场景设置: 从外部导入并修改机器人和机械手。
动作生成 Lula 运动生成库。
ROS/ROS2:各种 ROS 和 ROS2 桥接和接口示例。
映射 占用图生成
Isaac Gym 教程: 强化学习框架和 Cloner API。
Replicator 教程: 合成数据生成
Isaac Cortex 教程: 高级行为编程。
2.5 功能
功能部分重点介绍用于设置环境、机器人和传感器的 Omniverse Isaac Sim 扩展和工具,以及物理工具包、桥接器、导出器和调试器。
2.6 概念
概念部分包含词汇表和 Omniverse Isaac Sim 机制(如世界表示法和环境)的解释。
2.7 操作指南
How-To-Guides 包含简短的代码片段和特定 Omniverse Isaac Sim 操作提示。
2.8 参考资料
参考资料部件提供参考资料、部件链接和资源,为开发人员提供帮助。
该部分还提供了一系列有用的示例,供用户快速尝试 Omniverse Isaac Sim 的中高级应用。每个示例都包含注释清晰的源代码,用户可根据自己的使用情况抓取并修改。
请参阅 Isaac 示例菜单中的完整示例列表。
2.9 Isaac Sim USD 资产
Isaac Sim USD 资产部分提供了支持的环境、机器人、道具、传感器和特色资产的完整列表,以帮助开发人员。
三、Isaac Sim 系统要求
3.1 系统要求
Element | Minimum Spec | Good | Ideal |
---|---|---|---|
OS | 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 Generation) AMD Ryzen 5 | Intel Core i7 (9th Generation) AMD Ryzen 7 | Intel Core i9, X-series or higher AMD Ryzen 9, Threadripper or higher |
Cores | 4 | 8 | 16 |
RAM | 32GB* | 64GB* | 64GB* |
Storage | 50GB SSD | 500GB SSD | 1TB NVMe SSD |
GPU | GeForce RTX 2070 | GeForce RTX 3080 | RTX A6000 |
VRAM | 8GB* | 10GB* | 48GB* |
注意事项
- Isaac Sim 容器仅支持 Linux。
- * 建议使用更多内存和 VRAM 来高级使用 Isaac Sim。
- Ubuntu 18.04 仅支持 Isaac Sim 2022.2.0。
- 在线访问 Isaac Sim 资产和运行某些扩展程序需要互联网连接。
3.2 Isaac Sim 驱动程序要求
当前推荐的 Isaac Sim 驱动程序版本为 Windows 528.24 和 Linux 525.85。
Driver Version Support | Windows | Linux |
---|---|---|
Recommended | 528.24, 528.33 (Grid/vGPU) | 525.85.05, 525.85.12 (Grid/vGPU) |
Minimum | 473.47 | 510.73.05 |
Unsupported | 495.0 up to 512.59, 525 up to 526.91 | 515.0 up to 515.17 |
备注
有关更新,请参阅技术要求。
请参阅 "Linux 故障排除 "以解决 Linux 上的驱动程序安装问题。
如果您使用的是新的 GPU 或遇到当前驱动程序的问题,我们建议在 Linux 上使用 .run 安装程序从英伟达™(NVIDIA®)GPU 驱动程序存档中安装最新的 525.x.x 驱动程序。
四、工作站安装
4.1 工作站设置
- 确保您的本地工作站符合运行 Omniverse Isaac Sim 的系统要求和 Isaac Sim 驱动程序要求。
- 下载Omniverse启动器。
- 安装 Omniverse 启动器
- 从 "Omniverse 启动器 " 安装 "Cache"。
- 从 Omniverse 启动程序安装 Nucleus。
- 安装 Visual Studio Code 以查看和调试源代码。
在 Linux 系统上:
- 将 omniverse-launcher-linux.AppImage 文件移至文件夹或桌面,以防 -allow-root 意外删除。
- 运行 sudo chmod +x omniverse-launcher-linux.AppImage,允许用户执行应用程序。
- 双击 omniverse-launcher-linux.AppImage 文件,安装 Omniverse Launcher。
在工作站上运行 Isaac Sim 时,需要安装 Nucleus 和 Cache。
另请参阅 "系统监视器 "和 "清理工具"。
4.2 Omniverse Launcher
您可以在 "Omniverse Launcher "的 "Exchange "选项卡中找到并安装Omniverse Isaac Sim。为简化操作,请在搜索栏中输入 "isaac sim"。
安装完成后,进入 "库 "选项卡,在侧边栏中选择 Isaac Sim。
要运行 Isaac Sim 应用程序选择器,请单击 "启动 "按钮。
4.3 Isaac Sim 应用程序选择器
Isaac Sim 应用程序选择器是一款迷你窗口应用程序,可帮助您在不同模式下运行 Isaac Sim。
从 Omniverse Launcher 启动 Isaac Sim 时,Isaac Sim App Selector 将默认运行。
点击 "开始 "运行 Isaac Sim 主程序。
4.4 Isaac Sim 首次运行
恭喜您!您已完成本地工作站 Isaac Sim 的基本安装。
进入 Isaac Sim 界面,开始第一个基础教程。
注意事项
- 首次运行 Isaac Sim 应用程序需要一些时间来预热着色器缓存。
- 资产下载器对话框不再可用。Isaac Sim 资产现在位于 /NVIDIA/Assets/Isaac/2023.1.1 的每个 Nucleus 中。
- 要验证 Isaac Sim 资产的位置,请转到 Isaac Utils > Nucleus Check 菜单。该检查默认为禁用。
- 要以全新配置运行 Isaac Sim,请使用 --reset-user 标志。该标志可在 Isaac Sim 应用程序选择器的 "额外参数 "部分输入,或在命令行下运行 Isaac Sim 时输入。
- 来自 /NVIDIA/Assets/Isaac/2023.1.1 文件夹的当前资产仅适用于最新的 Isaac Sim 2023.1.1 版本。
五、Python 环境安装
可以通过 Python 本机运行 Isaac Sim,而不是将其作为独立的可执行文件。这为如何初始化、设置和管理 Omniverse 应用程序提供了更多底层控制。
5.1 默认 Python 环境
Isaac Sim 提供了一个内置的 Python 3.10 环境,软件包可以使用该环境,类似于系统级的 Python 安装。我们建议在运行 Python 脚本时使用该 Python 环境。
从 Isaac Sim 根文件夹运行以下命令,即可在此环境中运行 Python 脚本:
./python.sh path/to/script.py
注意
- 你可以直接在 Isaac Sim 应用程序选择器的 Isaac Sim 根文件夹下打开终端。
- 如果需要通过 pip 安装其他软件包,请运行以下命令:
./python.sh -m pip install name_of_package_here
注意
- 在 Windows 上使用 python.bat 而不是 python.sh
另请参见
- 有关 python.sh 的更多详情,请参阅 Python 环境手册。
5.2 Jupyter 笔记本设置
使用 Isaac Sim 的 Jupyter 笔记本可按如下方式执行:
./jupyter_notebook.sh path/to/notebook.ipynb
注意
- 首次运行 jupyter_notebook.sh 时,会将 Jupyter Notebook 软件包安装到 Isaac Sim Python 环境中,这可能需要几分钟时间。
注意事项
- 目前,Jupyter 笔记本仅支持 Linux。
另请参见
- 更多详情,请参阅 Jupyter Notebooks 文档。
5.3 支持 Visual Studio Code
Isaac Sim 软件包提供了一个 .vscode 工作区,该工作区具有预配置环境,可提供以下功能:
- 以独立 Python 模式或交互式图形用户界面运行的启动配置
- Python 自动完成环境
在 Visual Studio Code (VSCode) 中打开 Isaac Sim 软件包主文件夹,即可打开该工作区。
注意
- 建议在学习教程和示例时使用 Visual Studio Code。
另请参见
- 有关 VSCode 工作区的详细信息,请参阅 Visual Studio Code (VSCode) 支持文档。
5.4 高级: 在 Docker 中运行
按照 "容器部署 "中第 8 步的说明启动 Docker 容器。
Isaac Sim 容器运行后,就可以运行上述章节中的 Python 脚本或 Jupiter Notebook。
注意
- 您可以通过 pip 安装其他软件包:
./python.sh -m pip install name_of_package_here
- 请参阅 "保存 Docker 镜像",以提交镜像并持久安装 Python 设置。
5.5 高级: 使用 Anaconda 运行
使用以下命令创建一个新环境:
conda env create -f environment.yml
conda activate isaac-sim
如果您已有一个 conda 环境,请确保 environment.yml 中的软件包已安装。或者,也可以按照以下方法删除并重新创建 conda 环境:
conda remove --name isaac-sim --all
conda env create -f environment.yml
conda activate isaac-sim
最后,需要设置环境变量,以便正确定位 Isaac Sim python 软件包。在 Linux 上,可以按以下步骤进行设置:
source setup_conda_env.sh
然后就可以在 isaac-sim conda 环境下运行样本了:
python path/to/script.py
注意事项
- 如果使用 isaac-sim Anaconda 环境,请使用 python 而不是 python.sh 运行示例。
六、ROS 和 ROS 2 安装
Omniverse Isaac Sim为ROS系统集成提供了ROS和ROS 2桥接器。同一套通用组件用于定义模拟器发布/接收的数据类型。
Platform | ROS | ROS 2 |
---|---|---|
Ubuntu 20.04 | Noetic | Foxy |
Ubuntu 22.04 | NA | Humble (recommended) |
Windows 10 | NA | Humble |
在 ROS 桥接方面,Isaac Sim 在内部运行 ROS Noetic 的定制 roscpp 版本,以便与 Omniverse 框架和 Python 3 兼容。
在 ROS 2 桥接方面,Isaac Sim 目前与 ROS 2 Foxy 和 ROS 2 Humble 兼容。
6.1 运行本地 ROS
ROS noetic(Ubuntu 20.04)
按照官方网站上的说明下载 ROS:
- ROS Noetic Ubuntu 20.04
在终端中创建 ROS 环境。每次使用任何 ROS 命令前都必须执行此步骤。
source /opt/ros/noetic/setup.bash
确保在 ROS 源终端中启动 roscore。Isaac Sim 默认不运行 roscore,以便更灵活地将 Isaac Sim 与现有 ROS 工作流程集成。
6.2 启用 ROS 桥扩展
ROS
要启用 ROS 桥扩展,请进入扩展管理器菜单 Window->Extensions 并搜索 ROS bridge。任何时候都只能启用一个 ROS 桥扩展,因此如果在两个桥之间切换,请先禁用一个,然后再启用另一个。
6.3 在 isaac-sim.sh 中选择 ROS Bridge 版本
目前,ROS2 桥接器默认已启用。如果您正在运行 isaac-sim.sh,并希望禁用两个 ROS 桥接器,或切换到自动加载 ROS 桥接器,请按照以下步骤操作:
- 打开位于 <YOUR_PACKAGE_PATH>/apps/omni.isaac.sim.base.kit 的文件。将 <YOUR_PACKAGE_PATH> 替换为应用程序选择器("在文件浏览器中打开 "和 "在终端中打开 "按钮上方)中显示的软件包路径。
- 找到 isaac.startup.ros_bridge_extension = "omni.isaac.ros2_bridge" 一行,将其更改为 isaac.startup.ros_bridge_extension = "" 以禁用两个桥接器,或 isaac.startup.ros_bridge_extension = "omni.isaac.ros_bridge" 以自动加载 ROS 桥接器。
- 保存并关闭文件。
6.4 设置工作区
从 https://github.com/NVIDIA-Omniverse/IsaacSim-ros_workspaces 克隆 Isaac Sim ROS 工作空间库。
通过 Isaac Sim ROS / ROS 2 系列教程需要一些 ROS 软件包。为了方便学习,我们提供了包含必要软件包的整个 ROS 和 ROS2 工作区。
ROS Noetic (Ubuntu)
如果你想直接使用所提供的工作区,请按照以下步骤构建它,并为该软件包的覆盖层提供源代码。您也可以将各个软件包复制并粘贴到自己的工作区,然后在那里构建,并确保该工作区位于 ROS_PACKAGE_PATH 内。
- 如果你的本地 ROS 还没有源代码,请确保已经源代码化:source /opt/ros/noetic/setup.bash你可以通过检查 ROS_PACKAGE_PATH 环境变量来检查源代码是否成功。
echo $ROS_PACKAGE_PATH/opt/ros/noetic/share
- Isaac Sim ROS 工作区中的一个软件包 isaac_moveit 在弗兰卡-埃米卡 "熊猫 "臂上使用 MoveIt。为确保该软件包能编译成功,请先从预编译的二进制文件(Debian)中安装 MoveIt:
sudo apt install ros-$ROS_DISTRO-moveit
- 然后按照这里概述的步骤,在你的 ROS 工作区安装 panda_moveit_config 软件包。
- 在 ROS 工作区的根目录下运行以下命令,解决任何软件包依赖关系:
cd noetic_ws rosdep install -i --from-path src --rosdistro noetic -y
- 在 ROS 源终端中,构建 Isaac noetic_ws 文件夹,然后创建覆盖层。
这将把 Isaac Sim ROS 工作区放入你的 ROS_PACKAGE_PATH。你可以再次使用catkin_make source devel/setup.bash
来查看 Isaac Sim ROS 工作区的路径是否已经添加到原来的路径前面。echo $ROS_PACKAGE_PATH
- 或者,你也可以将 noetic_ws/src 文件夹中的各个 ROS 软件包移到自己的 ROS 工作区中,然后构建它。请访问 ROS 网站,查看构建自己的 ROS 软件包的教程。如果你想让 Isaac Sim 访问你现有的软件包,请确保在启动 Omniverse Isaac Sim 之前,在同一终端设置 ROS_PACKAGE_PATH 环境变量,使其包含所需的 ROS 工作区。
6.5 包含 ROS 软件包
ROS
以下是为 Omniverse Isaac Sim 创建的 ROS 软件包示例列表:
- carter_2dnav: 包含英伟达卡特机器人所需的启动文件和 ROS 导航参数。
- carter_description: 英伟达卡特机器人模型的描述。
- cortex_control: 用于在 Cortex 与控制器之间建立通信的工具。
- cortex_control_franka: 包含启动文件和 python 节点,用于使用 Cortex 控制物理弗兰卡机器人。
- isaac_moveit: 包含运行 ROS MoveIt 所需的启动和配置文件。
- isaac_ros_messages: 一组自定义的 2D/3D 边框和姿势服务信息。
- isaac_ros_navigation_goal: 用于在 ROS Navigation 中自动设置随机或用户自定义的目标姿势。
- isaac_tutorials: 包含启动文件、RViz 配置文件以及教程系列的脚本。
- isaac_vins: 包含与 Unitree A1 四足机器人一起运行 VINS Fusion 所需的启动、参数和配置文件。