NVIDIA Omniverse和Isaac Sim笔记1:软件初识与USD文件简介

Nov 26,2022   4317 words   16 min

Tags: SLAM

本篇博客是关于仿真环境和软件的又一个新坑:NVIDIA推出的Omniverse元宇宙环境以及Isaac Sim仿真平台系列笔记的第一篇。在本篇博客中,我们将首先对Omniverse和Isaac Sim进行基本的介绍,内容主要参考NVIDIA官方文档。

1.什么是Omniverse

Omniverse是NVIDIA推出的一个用于创建和运行元宇宙程序的平台(The platform for creating and operating metaverse applications),官网地址是这里,如下所示。 它对于个人是免费的,只需要注册一个NVIDIA账号就可以下载使用了。

Omniverse主要由以下五个核心部分构成:Omniverse Nucleus、Omniverse Connect、Omniverse Kit、Omniverse RTX Renderer、Omniverse Simulation,各个部分的具体功能见下图(图片来自Omniverse官方文档1文档2)。 当然,也有两个附加组件:Omniverse Launcher、Omniverse Extensions,如下。 在官方文档的主页还发现了对各个部分更加言简意赅的介绍,摘抄过来,如下:

  • Nucleus: The core of an Omniverse network.
  • Materials and Rendering: Make the most of your visuals.
  • Kit: The primary building block of all Omniverse Apps.
  • Connectors: Connect your favorite applications to the Omniverse.
  • Extensions: Extended capabilities for Omniverse Apps.
  • Launcher: The launch-pad for Apps, Connectors News.

而如果你只是作为最终用户,也不关心Omniverse的具体组成,那么对你而言,就可以简化为Platform、Apps和Connectors,如下面示意图所示(均来自官方文档2)。 在这里Omniverse被当作一个工具,通过Connector连接到其它应用,处理输入的数据,并将结果输出给目标应用,还是比较简单的。

而如果你是开发者,那么可能还会对上面提到的“Kit”感兴趣,它是由下面几个部分构成的。 以上便是对Omniverse的基本介绍。如果要一句话总结的话,那就是:Omniverse是一个用于虚拟合作、高精度仿真的平台,基于它可以开发出各种各样的元宇宙或者仿真应用。

2.什么是Isaac

根据上面的介绍,作为终端用户,我们使用Omniverse,其实就是使用基于它开发的各种App。而Isaac Sim就是其中之一。但在介绍它之前,我们先简单了解以下NVIDIA Isaac,官网是这里,如下。 而至于说为什么叫Isaac,官方并没有给出明确的解释。根据官网描述,Isaac是一个“专为机器人和AI打造的加速平台”。这样说起来有些抽象,在Isaac的官方文档中对它的介绍“NVIDIA Isaac™ gives developers a powerful, end-to-end platform for the development, simulation, and deployment of AI-enabled robots.”,并给出了示意图如下所示。 所以可以看出,Isaac依然是一个平台。在硬件层面它支持各种类型的硬件,比如RTX的GPU等等。在系统软件层面,依赖于RTX、CUDA、PhysX等框架。在平台层面,依赖于NVIDIA AI和NVIDIA Omniverse,最终就可以实现各类应用,比如机器人数据采集、环境仿真等等。甚至还有专门针对ROS提供的一些硬件加速的函数包,叫Isaac ROS,感兴趣可以查看

此外,我们从Isaac的官方文档示意图中也可以进一步理解其含义,如下。 可以看到Isaac主要包含GEMs、Applications、Engine三部分。下面简单介绍每个部分的含义。

GEMs其实NVIDIA官方并没有给出明确的定义,但从官方文档的相关介绍可以推测,GEM指的是经过硬件加速的一些高性能算法。官方对于GEMs的描述是这样的:Isaac SDK comes with a collection of high-performance algorithms, also called GEMs, to accelerate the development of challenging robotics applications. 可以看到,GEMs就是指的一些高性能算法(powerful GPU-accelerated algorithm)。在Isaac中,Isaac SDK给出了很多已经优化好的算法,可供方便的调用。例如Isaac提供了规划与感知的GEMs来用于导航等,下图展示了部分Isaac GEMs。 完整关于Isaac GEMs的介绍可以参考官方文档,非常详细,也有和SLAM相关的内容。

Applications其实严格来说并不算Isaac架构的组成部分,而是随Isaac SDK安装附带的应用示例。这些例子的好处就是,如果逆需要针对某个场景开发自己的应用,而恰巧又有类似的示例,就可以参考借鉴了。

Engine可以看作是Isaac的核心,官方的介绍是“a feature-rich framework for building modular robotics applications”。基于Isaac Engine,我们可以快速构建模块化的机器人应用。并且,Engine连接了GEMs和上图中很多现有的库,如OpenCV、ROS、PCL等。正是基于Engine,我们才能构建出各种各样的Apps。

至此,我们就简单介绍了Isaac平台。如果要一句话总结的话,那就是他是一个用于加速机器人相关应用的库/平台,其内置了很多经过GPU加速的高性能算法,基于它进行开发,可以有效提升程序性能。

3.什么是Isaac Sim

在简单了解了Isaac以后,我们再来看Isaac Sim。前面说了Isaac本身是一个专门用于机器人的平台,所以我们可以在其基础上开发各种应用。而Isaac Sim正是其中之一,依赖于Omniverse和Isaac平台。进一步来说,它聚焦于机器人仿真,官方是这里,如下。 官方也给出了一个ISSAC Sim的工作流图,如下所示。 我们可以输入我们设计的机器人模型、环境模型等数据给Isaac Sim。它又依赖于RTX GPU等硬件、Omniverse软件平台、RTX库、PhysX库等实现仿真,最终可以实现数据采集,采集的数据可用于后续任务。

如果用一句话总结的话那就是:Isaac Sim就像是Omniverse和Isaac的孩子,其中Omniverse提供强大的仿真支持,而Isaac则提供专业高性能的机器人相关函数与接口。他们共同构成了Isaac Sim——一个强大的、用于机器人的仿真环境。

至此,我们小结一下。我们简单介绍了两个平台:Omniverse元宇宙平台、Isaac机器人加速平台,以及基于他们两的具体应用:Isaac Sim。我们之后的介绍主要都是围绕Isaac Sim展开,会重点参考Isaac Sim官方文档

4.USD基本知识

在进一步介绍之前,我们回到Omniverse相关内容,介绍在Omniverse中对于场景或者模型的通用格式USD(Universal Scene Description,最早由Pixar提出)。因为在后续Isaac Sim的使用中会用到这种格式,所以这里进行简单介绍,作为基础知识。本部分主要参考USD官方文档

4.1 USD的文件格式

USD格式有多种文件后缀名,如下图所示。 *.usd/*.usdc: 一般的USD文件,以二进制存储与压缩,因此读取速率会快一些 *.usda: 纯文本形式的USD文件,更方便阅读 *.usdz: 以zip压缩文件形式存储的USD文件,可以将多个USD文件打包成一个 *.drc: 其它自定义的文件格式

4.2 USD中的图层合成

在USD中,有以下6中图层合成方法: 关于每一种的具体介绍,感兴趣可以查阅相关资料,此处不再赘述。

4.3 Omniverse中USD的特点
  • USD最早是由Pixar开发并用于动画电影生产的。

  • USD是一个免费、开源的标准(Pixar在2016年开源),并且已经被工业界广泛接受,感兴趣可以看它的Github主页

  • Omniverse是第一个完全围绕USD开发的程序。在Omniverse的可视化界面中,你看到的其实就是结构化的USD数据。

  • Omniverse进一步扩展了USD,以使得其可以支持与其它应用的实时通信与合作。

  • USD支持不同工具之间复杂的素材与资源共享。

至此,本篇笔记告一段落。我们对Omniverse、Isaac、Isaac Sim以及USD都有了基本的了解。在下一篇笔记中,我们将进一步学习Isaac Sim,包括安装和软件的基本使用等。

5.参考资料

  • [1] https://www.nvidia.com/en-us/omniverse
  • [2] https://docs.omniverse.nvidia.com/plat_omniverse/plat_omniverse/overview.html
  • [3] https://www.nvidia.cn/deep-learning-ai/industries/robotics/
  • [4] https://developer.nvidia.com/isaac
  • [5] https://developer.nvidia.com/isaac-sim
  • [6] https://developer.nvidia.com/isaac-ros
  • [7] https://docs.omniverse.nvidia.com/index.html
  • [8] https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/overview.html
  • [9] https://docs.nvidia.com/isaac/doc/overview.html
  • [10] https://docs.omniverse.nvidia.com/prod_usd/prod_usd/overview.html

本文作者原创,未经许可不得转载,谢谢配合

返回顶部