Nvidia Isaac Sim 入门教程 2024
版权信息
Copyright 2023-2024 Herman Ye@Auromix. All rights reserved.
This course and all of its associated content, including but not limited to text,
images, videos, and any other materials, are protected by copyright law.
The author holds all rights to this course and its contents.
Any unauthorized use, reproduction, distribution, or modification of this course
or its contents is strictly prohibited and may result in legal action.
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and Inquiries
If you wish to use or reproduce any part of this course for purposes other than personal learning,
please contact the author to request permission.
The course content is provided for educational purposes, and the author makes no warranties or representations
regarding the accuracy, completeness, or suitability of the course content for any specific purpose.
The author shall not be held liable for any damages, losses,
or other consequences resulting from the use or misuse of this course.
Please be aware that this course may contain materials or images obtained from third-party sources.
The author and course creator diligently endeavor to ensure that these materials
are used in full compliance with copyright and fair use regulations.
If you have concerns about any specific content in this regard,
please contact the author for clarification or resolution.
By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.
学习目标
- 理解Isaac Sim及其相关组件的背景和特点
- 了解Isaac Sim的应用场景
- 了解Isaac Sim的架构
- 了解Isaac SIm的工作流程
- 了解Isaac SIm的近期更新
难度级别
初级 | 中级 | 高级 |
---|---|---|
√ |
预计耗时
30 mins
学习前提
对象 | 类型 | 状态 |
---|---|---|
Ubuntu22.04操作系统 | 软件 | 已确认 |
Isaac Sim概述
Isaac Sim是专为 NVIDIA Omniverse平台开发的机器人仿真工具包,经过多次发展,如今成为整体的软件平台,旨在支持日益增多的机器人化和自动化世界。其目标是尽可能简化设计、调试、训练和部署实际物理机器人自主控制代理的过程。
图片来源:Isaac Sim介绍
如何迁移我此前的机器人工作?
Isaac Sim 提供了一系列工作流,用于导入和调试机器人系统,这些系统可以采用最常见的格式设计,包括Onshape、统一机器人描述格式(URDF)和MuJoCo XML格式(MJCF)。这通过使用 通用场景描述(USD) 实现,这是一种易于扩展的开源3D场景描述API,作为Isaac Sim核心的统一数据交换格式。
Isaac Sim能为我提供什么?
Isaac Sim的核心功能是其高保真度的GPU基础PhysX引擎,提供了创建稳健、物理精确的仿真,并能够在工业规模上支持多传感器的RTX渲染。Isaac Sim直接访问GPU,使得平台能够支持各种传感器的模拟,包括摄像头、LiDAR和接触传感器。这反过来又促进了数字孪生的模拟,使得您的端到端流程在无需启动实际机器人的情况下即可运行。Isaac Sim提供了一套工具,通过Replicator收集合成数据,通过Omnigraph编排模拟环境,调节PhysX模拟参数以匹配现实,最终通过各种方法(如Isaac Lab中的强化学习(RL))训练Agent。
Isaac Sim 对于以往机器人框架的支持性怎么样?
Isaac Sim 支持常见的机器人框架,例如ROS2,实现实时机器人与模拟之间的直接通信。同时Isaac sim提供NVIDIA Isaac ROS,一个高性能、硬件加速的ROS 2包集合,用于制造自主机器人。
当然,你也可以自己写 isaac_sim_to_ros_bridge 来实现从仿真到传统的机器人框架的通信。
Isaac Sim相关概念
关键词:机器人仿真
、物理仿真
、数据集合成
、ROS支持
、机器人导航
、机器人操作应用
、传感器模拟
机器人仿真
机器人仿真是一种使用计算机模拟技术来模拟机器人的运动、感知和互动的过程。这包括模拟机器人的硬件和软件系统,以便在虚拟环境中测试、开发和验证机器人算法和控制策略。
成本考量
仿真环境可以显著降低开发和测试机器人的成本,避免了昂贵的硬件和设备需求。
从机器人角度来说,如果不使用仿真,而是使用一千台或一万台真实机器人进行测试,将面临硬件组装、调试和损坏等问题,这将带来高昂的时间和经济成本。从场景角度来说,特别是对于一些特殊测试场景,如沙漠或核电站,搭建逼真的测试场景所需成本也非常高。
图片来源:IsaacGymEnvs安全性
在虚拟环境中测试机器人可以避免潜在的危险或意外情况,有助于保护人员和设备的安全。
例如,在工业机械臂、无人机等机器人设备的调试过程中,可能会发生危险情况,如无人机失控坠毁或机械臂故障,这些情况会对企业的人员安全构成威胁。
图片来源:IsaacGymEnvs快速迭代
仿真环境允许开发人员快速迭代机器人的算法和控制器,以优化性能和功能。
避免了对真实机器人的繁琐调试,例如为一千台机器人重新烧录固件或修改搭载的算法,从而节省了大量的调试时间。可复制性
仿真实验可以轻松复制,以验证结果的可重复性和一致性。
在每一次仿真中,部署都是精确的,例如在仿真中将一瓶矿泉水放在桌面上供机器人抓取,每轮测试时这瓶水都在同一个地方。
而在实际环境中,每轮摆放物体可能存在一定的偏差,因此仿真实验更容易确保结果的可重复性。理想化假设
仿真环境通常需要引入一些理想化假设,例如忽略了一些复杂的物理效应。这一实践的背后是追求在虚拟环境中实现高效的计算和资源利用,以便进行快速的开发和测试。然而,这种理想化假设也带来了一个重要的挑战,即在真实世界中的机器人性能可能与仿真结果不完全匹配。
英伟达:
图片来源:Nvidia USD
上海米哈游:
图片来源:Youtube Lumi_N0va
- 有限的精确性
虽然现代仿真工具越来越精确,但它们仍然受到计算资源和物理模型的限制,不能完美地模拟所有方面的机器人行为。
物理仿真
物理仿真是机器人仿真的一个关键组成部分,它涉及模拟机器人和环境的物理交互,包括重力、碰撞、摩擦等重要的物理属性。
真实性
物理仿真能够更加精确地模拟机器人与其环境的物理互动,从而提供更准确的机器人在真实世界中的行为预测。
这种精确性对于测试、验证和优化机器人算法和控制策略至关重要。
实际上,许多算法的开发通常从仿真环境开始,直到在仿真中表现出稳定性,才会将其迁移到实际硬件上进行测试。大量计算要求
物理仿真通常需要大量的计算资源,尤其是在需要模拟复杂物理效应时,如流体动力学仿真。
这可能会导致高昂的计算成本,因此在进行大规模仿真时需要考虑有效的计算资源管理。物理模型不能完全准确
尽管物理仿真可以提供高度精确的结果,但其准确性受到所使用的物理模型质量的限制。
物理模型可能无法完全准确地模拟所有物理现象,因此在将仿真结果应用于实际机器人系统时,需要谨慎考虑模型的适用性。
在某些情况下,仿真环境中表现良好的机器人可能在真实环境中产生不同的行为,这对于实现sim2real是一个挑战。
数据集合成
数据集合成是通过模拟或生成虚拟场景中的各种数据,以便用于机器学习、深度学习或其他数据驱动的应用程序的方法。
这可以包括模拟传感器数据(如相机、激光雷达、IMU数据),机器人的行为和动作,环境中的对象以及其他相关信息。这些数据通常在虚拟环境中生成,以便进行大规模的实验、测试和训练。
- 成本效益
相较于采集真实世界数据,数据集合成提供了更经济有效的方法。创建真实世界数据集通常需要大量的时间和资金,而合成数据可降低成本和时间开销。
More than 14 million[1][2] images have been hand-annotated by the project to indicate what objects are pictured and in at least one million of the images, bounding boxes are also provided.
数据多样性
数据集合成使研究人员能够生成多样性的数据,包括各种场景、环境条件和机器人任务,从而有助于更好地训练和评估算法。它还允许合成那些难以采集或成本极高的数据。数据标定和真值
通过合成数据集,可以精确地标定和记录真实场景中难以获取的真实信息,如目标位置和深度信息。
这些数据可用于改善算法的性能,例如通过合成数据的玻璃杯来提高目标检测或物体识别算法的准确性。
相关链接:ICRA GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF
图片来源:GraspNeRF可控性
数据集合成赋予用户对合成环境的参数和条件的控制权。
这允许用户测试算法在各种不同情况下的鲁棒性,例如,在自动驾驶环境下考虑不同的光照条件或自然灾害(如大雨或泥石流)对系统的影响。大量的数据
合成数据集为机器学习算法提供了更多的数据,有助于提高算法的性能和泛化能力。这对于深度学习等数据驱动的应用尤为重要。
使用合成的数据集缺乏真实噪声
合成数据往往不包含真实世界传感器数据中存在的多样性和噪声,这可能导致在真实环境中的性能与虚拟环境不一致。
ROS支持
Isaac Sim具有与ROS2兼容的功能和接口。
ROS(Robot Operating System)是当前广泛应用于机器人领域的框架,而Isaac Sim的能力与ROS和ROS2兼容,使机器人研究人员和工程师能够轻松地在仿真环境中开发、测试和验证他们的机器人控制和导航算法,然后将这些算法无缝地迁移到实际的机器人硬件中。
注意:在Isaac Sim 4.0.0版本中,ROS1与ROS2 Foxy已被弃用,当前推荐的版本为ROS2 Humble
实验和调试
在仿真环境中,研究人员可以轻松地模拟实际机器人的行为,并执行各种实验和调试操作,方便验证和优化机器人的控制算法。导航和操作应用
ROS2支持还允许机器人在仿真环境中执行导航和操作任务。通过在仿真中执行导航和操作任务,研究人员可以更好地了解机器人的行为,并调整算法以适应不同的情况。
传感器模拟
传感器模拟是指在虚拟环境中模拟机器人或其他设备使用传感器获取数据的过程。在Isaac Sim中,传感器模拟允许用户模拟各种传感器,如RGB-D相机、激光雷达和惯性测量单元(IMU),以获取与实际世界相似的传感器数据。
数据收集和标定
传感器模拟允许用户生成大量的合成数据,这对于机器学习和计算机视觉任务的训练和评估非常有用。生成的数据可以用于训练深度学习模型,进行物体检测、分割和姿势估计等任务。成本效益
真实传感器硬件的购买和维护成本很高,比如前些年的激光雷达,而传感器模拟在虚拟环境中可以降低成本,因为不需要实际传感器设备,完全免费。可重复性和控制
传感器模拟允许用户轻松地控制虚拟环境中的各种参数,例如光照条件、天气条件和物体位置,以进行可重复性实验。这是在真实世界中难以实现的。者对于自动驾驶一类的帮助会非常大。模型不准确性
传感器模拟可能无法完全模拟真实传感器的性能和不确定性。虚拟环境中的物理和光照模型可能与实际世界存在差异,因此生成的数据可能不完全准确。以UCSD的Sapien仿真器为例,Sapien在2.2版本中支持传感器的仿真,但存在一定的局限性,即使仿真的相机参数和真实的相机参数一致,得到的深度图也会有较大的差别。
相关链接:SAPIEN: A SimulAted Part-based Interactive ENvironment缺少实际噪声
传感器模拟通常不包括与实际传感器使用相关的噪声和干扰,这可能会影响模型在实际世界中的性能。
即使通过添加人为噪声的方法,也无法完全达到实际的噪声效果。
Isaac Sim的应用场景
图片来源:Isaac Sim
机器人导航和路径规划
Isaac Sim 可用于测试和验证机器人导航算法,包括路径规划、避障和自主导航。研究人员和工程师可以在虚拟环境中模拟不同的场景,以评估机器人在不同情况下的性能。
图片来源:Nvidia USD
机器人操作和操纵
Isaac Sim 支持机器人操纵和操作的仿真,可以用于测试机械臂以及其他操作设备的性能。这对于开发机器人在制造、仓储和物流等领域的应用非常有用。
图片来源:Nvidia USD
计算机视觉和感知研究
Isaac Sim 可以生成各种传感器数据,如RGB-D 相机、激光雷达(Lidar)和惯性测量单元(IMU)的模拟数据。这些数据可用于训练和测试计算机视觉算法,如目标检测、目标跟踪、图像分割和深度估计。
数据集生成
Isaac Sim 能够生成丰富的合成数据集,用于训练机器学习模型。这些数据集可以用于领域随机化、标注真实数据、生成边界框等任务,帮助改进模型的鲁棒性和性能。
图片来源:Nvidia USD
机器人教育和培训
Isaac Sim 也可用于机器人教育和培训。学生和新手可以使用它来学习机器人控制、导航、感知等概念,并进行实际的仿真实验,而不必担心物理机器人的成本和安全问题。
Isaac Sim的架构
以下为Nvidia Omniverse Isaac Sim的软件架构和工作流图。
可以看到,在架构图中:
输入
Isaac Sim可以接受来自不同来源的输入,比如Onshape、URDF、MJCF、USD,其中USD直接导入Isaac Sim,其他类型的输入则会通过对应的importer插件进行导入。
- Onshape
Onshape 是一种基于云的计算机辅助设计(CAD)软件,用于进行三维建模和设计工作。应该类似于Fusion360。
相关链接:Onshape - URDF
URDF(Unified Robot Description Format) 是一种XML文件格式,用于描述机器人模型的几何形状、连接性、关节、传感器和其他相关信息。URDF 常在ROS2中被使用(Robot Operating System),作为机器人的描述信息。
相关链接:URDF Wiki - MJCF
MJCF是用于描述多关节机器人和其他物体的XML文件格式。它是用于在MuJoCo模拟器中,一起使用,用于模拟机器人的动力学和物理属性。MJCF 模型可以表示具有广泛特征和模型元素的复杂动力系统。
相关链接:Mujoco modeling - USD
Omniverse Isaac Sim 使用 USD 交换文件格式来表示场景。USD(Universal Scene Description)是由Pixar开发的一种易于扩展的开源3D场景描述和文件格式,用于在不同工具之间进行内容创建和交换。由于其强大和多才多艺,USD正在广泛应用,不仅在视觉效果社区,还在建筑、设计、机器人技术、制造和其他领域中得到采用。
值得一提的是,USD是皮克斯、Adobe、苹果和Autodesk等厂家联合起来搞的OpenUSD联盟产物。
相关链接:USD
处理
Isaac Sim借助Nvidia公司此前既有的技术,如RTX和Physx等,能够为机器人生成逼真的仿真环境、物理现象、传感器数据。再利用Isaac Lab、数据生成器、RL以及用户自己研究的算法实现调整与训练。
- RTX
NVIDIA RTX是NVIDIA公司开发的一系列图形处理器(GPU)和技术,旨在提供高性能的实时光线追踪和AI增强图形处理。RTX代表“实时光线追踪”(Real-Time Ray Tracing),它标志着计算机图形技术的重大进步,能够实现更加逼真的视觉效果,方便了传感器数据的渲染。
相关链接:RTX - Physx
PhysX是由NVIDIA公司开发的物理引擎,用于在实时计算机图形中模拟物理现象。PhysX可以处理各种复杂的物理效果,使得虚拟环境中的物体运动和交互更加逼真。包括了动力学、布料毛发、粒子系统等,能够实现在Sim中较为真实的物理现象。
相关链接:PhysX引擎 - Sensor
Isaac Sim内置多种类型的传感器,包括深度相机、激光雷达等。 - RL
RL(Reinforcement Learning,强化学习)是一种机器学习方法,用于训练机器人通过与环境的互动来自主学习和优化其行为策略。强化学习在机器人领域的应用可以帮助机器人在动态和未知的环境中自主完成任务。 - Isaac Lab
Isaac Lab是一个统一的模块化机器人学习框架,旨在简化机器人研究中的常见工作流程(例如 RL、从演示中学习和运动规划)。它基于 NVIDIA Isaac Sim构建,提供了更高级的功能,利用最新的模拟功能实现较为真实的场景以及快速准确的模拟。
相关链接:Isaac Lab - Replicator
Omniverse Replicator 是一个开发定制合成数据生成管道和服务的框架,它也是Nvidia 的Omniverse生态的一部分。
开发人员可以生成物理上精确的3D合成数据,这些数据在增强用于自动驾驶汽车、机器人和智能视频分析应用中的AI感知网络的训练和性能方面具有重要价值,它在isaac sim中有一个类似的封装,名为Isaac Replicator。
相关链接:Omniverse Replicator
输出
ROS2
ROS2,是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统,提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。
相关链接:ROSDatabase
Omniverse Isaac Sim 具有生成数据集(dataset)的能力,因此它的输出也可以是虚拟的仿真数据集。
这些数据集可以用于训练机器学习模型、测试算法或进行其他仿真实验。本地程序
Isaac Sim里的成果可以在本地部署。云端
Isaac Sim里的成果可以在云端部署。
Isaac Sim的工作流程
Isaac Sim基于C++和Python构建,主要通过使用已编译的插件和绑定来操作。这意味着该平台能够支持多种构建和交互项目的工作流程,这些项目使用Isaac Sim。
- Omniverse App
Isaac Sim作为一个完整的、独立的Omniverse GUI应用程序,用于与机器人进行交互和模拟,虽然这是用户与平台交互的最常见方式。 - Python
Isaac Sim还提供了直接的Python开发支持,以VS Code和Jupyter Notebooks扩展的形式。 - ROS2
Isaac Sim也不限于同步操作,并且可以通过ROS2实现硬件在环操作,促进仿真到现实的转移和数字孪生。
以下介绍几种在Isaac 里可能会遇到的工作流程:
图片来源:Isaac Sim Documentation
1. 图形化界面(GUI)
如图所示即是在Omniverse里打开Isaac sim的图形化窗口。
主要特点: Omniverse Isaac Sim 的图形用户界面(GUI)是一个功能强大的工具,提供了直观和视觉化的方式来创建、模拟和操作虚拟世界。它在功能上与 Omniverse USD Composer(一款专门用于世界构建的应用程序)相似,但具有额外的机器人相关功能。
推荐用途: Omniverse Isaac Sim 的 GUI 具有广泛的应用领域,包括但不限于:
世界构建: 使用GUI,可以轻松创建虚拟环境,包括地形、建筑和物体的布置。这使它成为构建虚拟世界的理想场所。
机器人组装: GUI允许组装、配置和定制机器人,包括添加传感器和执行器。这对于机器人应用程序的开发和测试非常关键。
连接传感器: GUI支持连接和配置传感器,以便机器人能够感知其周围环境。这有助于模拟机器人感知和交互的情境。
初始化ROS2桥: 使用GUI,可以轻松地启动和管理ROS2桥,实现与ROS2(机器人操作系统)的通信。这对于在虚拟环境中测试和集成ROS2的机器人应用程序非常有帮助。
评价: Omniverse Isaac Sim 的图形用户界面是一种直观且功能丰富的开发工具,不仅适合初学者上手,还为专业用户提供了强大的虚拟世界构建和机器人模拟能力。它是实验、开发和测试机器人应用程序的理想选择。
2. 扩展(Extension)
概要: 扩展是 Omniverse Kit 基础之上的核心应用程序构建块,为各种应用程序提供强大的功能扩展。这些扩展具有一系列主要特点,使其成为强大的工具,支持异步运行,交互性,实时响应,以及热重载功能,从而提供了广泛的应用领域。此外,扩展还支持自适应物理步骤,适用于实时模拟,使其成为多领域应用的理想选择。
主要特点:
- 异步运行: 扩展应用程序的一个关键特点是异步运行,这使得它们能够与 USD 舞台进行互动,同时不会阻塞渲染和物理步进。这为用户提供了流畅的交互体验。
- 热重载: 扩展的另一个强大特点是热重载功能,允许在 Omniverse Isaac Sim 运行时更改应用程序代码,然后在保存文件后查看应用程序中反映的更改,而无需关闭或重新启动 Omniverse Isaac Sim。这加速了开发和测试过程。
- 事件触发: 大部分扩展中的操作都是通过事件触发的回调完成的,例如物理或渲染步骤、舞台事件、时间标记。这样的设计使得扩展可以以高度可定制的方式响应不同的场景和用户需求。
推荐用途:
- 构建交互式 GUI: 扩展可以用于创建自定义的交互式用户界面,以满足特定应用程序的需求。这使得用户能够轻松控制和调整应用程序的行为,从而提高工作效率。
- 自定义应用程序模块: 用户可以通过创建新的扩展或编辑和激活现有扩展来扩展所使用的应用程序的功能,以满足具体需求。这意味着应用程序可以根据用户需求进行高度定制,无需修改源代码。
- 实时敏感应用程序: 扩展特别适用于实时敏感应用程序,如虚拟现实体验和模拟。它们能够实时响应用户的交互,为用户提供沉浸式体验。
评价:
自定义扩展插件属于高级用途,需要一定的技术知识和开发经验。然而,对于需要特定功能的用户和开发者来说,扩展提供了强大的工具,以满足其需求。
如果对扩展(Extension)的概念感兴趣,并想深入了解,可以查阅Nvidia官方文档: Extension以获取更详细的信息。
3. 独立 Python
主要特点: 独立Python工作流程允许精确控制物理和渲染步骤的时间,并可以在无头模式(Headless)下运行以减少资源开销,适用于各种用途。
推荐用途:
- 大规模强化学习训练:独立Python可用于进行大规模的强化学习训练,以训练智能代理。
- 系统的世界生成和修改:通过独立Python,可以创建、修改和控制虚拟世界中的元素,以满足特定的研究或应用需求。
评价:
相对于GUI来说更加抽象的方式,但可以实现开发者的特定需求,属于中高阶内容,此处不涉及。
Isaac Sim的近期更新
Isaac Sim在2024年更新了4.0
大版本更新,因此入门教程将根据4.0的内容进行重新编写。
结尾语
恭喜你,现在已经了解了Isaac Sim的能力、应用场景、架构与工作流。
在下一章节,你将学习Isaac Sim的安装与配置。
如需企业内训定制、项目开发合作或个人学习支持,请联系:hermanye233@icloud.com
相关资料
建议收藏的:
Isaac Sim API
USD API
GUI API
Omniverse Kit 编程手册
脚本手册
其他的:
IsaacGymEnvs
Youtube Nvidia Omniverse
Youtube Lumi_N0va
ImageNet
GraspNeRF
ICRA GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF
SAPIEN: A SimulAted Part-based Interactive ENvironment
Onshape
URDF Wiki
Mujoco modeling
USD
Isaac Sim Documentation system architecture