NVIDIA Omniverse和Isaac Sim笔记2:软件安装与基本使用

Nov 30,2022   6406 words   23 min

Tags: Simulation

在之前的这篇笔记里,我们初步介绍了Isaac Sim的相关概念。本篇笔记,我们进一步介绍Isaac Sim的相关内容、安装与基本使用。本篇笔记我们重点参考Isaac Sim的官方文档

1.Isaac Sim介绍

尽管在之前笔记里这里我们简单介绍了Isaac Sim,这里还是再说一下(主要翻译了官方文档中的介绍)。

NVIDIA Omniverse Isaac Sim是面向NVIDIA Omniverse平台的机器人仿真工具套件。Isaac Sim拥有很多针对构建虚拟机器人世界和实验的关键特性。它给研究人员和从业人员提供了创建鲁棒、高精度物理仿真、合成数据集的工具与工作流。不仅如此,Isaac Sim也支持通过ROS/ROS2实现导航、控制等其它应用。Isaac Sim可以模拟RGB-D、LiDAR、IMU等传感器的数据,并且提供真值。如下是Isaac Sim的运行界面。

2.Isaac Sim系统架构

Isaac Sim的系统架构如下图所示。 可以看到,Isaac Sim支持各类模型和环境文件的导入。USD文件自然是可以直接打开的(因为整个Omniverse都是基于USD开发的),而对于其它的文件类型,如onshape文件、URDF(ROS)文件、MJCF文件,分别由对应的Importer进行数据转换。Isaac Sim以Omniverse Kit作为底座,然后开发了Isaac Sim。针对不同的环境,有不同的模式,比如本地Desktop环境就是最普通的Isaac Sim。针对网络环境和远程控制,有专门的Headless模式。所谓Headless模式是指,系统缺少显示设备、键盘或鼠标。在很多情况下,服务器都是工作在Headless模式下的,通过远程连接实现控制。在Isaac Sim基础上又有很多的Extensions,通过它们实现了各种功能。比如通过ROS Bridge扩展,实现了与ROS/ROS2的交互,通过Synthetic Data Recorder扩展实现了合成数据集的保存等等。 关于Omniverse Kit相关的内容,在上一篇笔记中介绍了,这里就不再赘述。

3.Isaac Sim工作流

如下图所示,为Isaac Sim的工作流。 可以看到,与Isaac Sim交互有多种方式,但大体其实可以分为三种,一种是通过Isaac Sim的UI进行交互,另一种是通过Python API进行交互(比如利用VSCode或者Jupyter Notebook等),最后一种是通过ROS进行交互。三种都可以,随你喜欢。

4.Isaac Sim的安装

前面说了这么多,这一部分我们终于要上手操作,实际安装了。

4.1 系统要求

如下所示,是官方给出的系统最低与推荐要求。 可以看到,Isaac Sim同时支持Windows和Ubuntu两个系统,但不管是哪个系统,最低内存要求是32GB,GPU最低要求是RTX 2070以上。所以基本在笔记本上就别想了,大部分配置低一些的笔记本都是GTX的GPU,它并不支持。

此外,它对于显卡驱动也有要求。就目前而言(2022年11月28日),Linux推荐显卡驱动版本在470.57以后,Windows推荐显卡驱动版本在471.41以后。Linux下查询显卡驱动的命令是nvidia-smi。Windows下可以直接在桌面上右键,找到“NVIDIA控制面板”,就能看到驱动版本了。比如我电脑上的驱动版本就是516.94。

4.2 开始安装

整个安装流程其实还是比较简单的。这里我们不讨论那种远程或云端的安装,就是正常的本地安装。基本所有步骤其实都是在Omniverse Launcher中完成的,如下。

第一步:下载Omniverse Launcher。 当然,下载可能需要登录账户,也很简单,注册登记一下信息就可以下载了,如下。 下载以后,进行安装即可。安装好以后,打开Launcher,如下。 使用Omniverse是需要登录NVIDIA账户的,没有的话就注册一下,登录就好了。首次登录需要你设置一些相关路径,如下。 然后他会提醒你,是否要安装Cache,如下所示。 默认安装就好了。可以在一定程度上改善体验。然后就能进入Omniverse Launcher主界面了,如下所示。

第二步:安装Isaac Sim。 我们在“交易所(Exchange)”点击找到“Isaac SIM”,如上图所示。然后在新打开的界面中点击右上角的“安装”即可,如下。 另外,需要说明的是,已经安装好的应用可以在“图书馆(Library)”里找到,如下所示。 找到相应的应用启动即可。

至此,Isaac Sim就安装完成了。以上是在Windows下安装的示例,Ubuntu下其实是大同小异的,这里就不再特别赘述。如果需要安装相关的Python环境,可以参考这个文档,如果要安装ROS接口,参考这个文档

5.初步使用

在这一部分,我们重点介绍Omniverse Isaac Sim主界面的基本使用。

5.1 打开软件

在Omniverse Launcher的“图书馆(Library)”中找到安装好的Isaac Sim,点击“启动”按钮即可启动。启动时,首先会弹出这个对话框,如下。 在这个对话框中,他会询问你要以什么方式启动,因为我们就是普通的本地机器,也不是服务器或者网络远程,就选第一个就可以了,点击“Start”按钮即可启动,启动后界面如下。 整体而言,整个界面由菜单栏、可视化窗口、下部的则是一些资源相关的面板。窗口左侧是常用工具栏,右侧则是USD文件的树状结构图和属性面板。这里稍微补充一句,下方的资源面板里有很多预置的模型可供使用。Isacc Assets是Isaac自带的一些模型,和机器人相关,如下图所示。 Flow则是一些预置的动态粒子特效,如火、烟、尘等,如下图所示。 NVIDIA Assets则是一些我们通过Omniverse Launcher安装的内容资源,如下图所示。 插一句题外话,这些资源可以在Omniverse Launcher中的“交易所(Exchange)”中的“内容”分类里找到,如下。 有自己喜欢的点击进入详情页安装即可,之后就会显示在NVIDIA Assets中。

Materials则是一些预置好的材质,比如木头、金属、石头等,如下。 类似的,这些材质也可以通过Omniverse Launcher安装。

事实上Omniverse Isaac Sim的界面是基于Omniverse Create定制的,如下是Omniverse Create的界面,可以发现和Isaac Sim几乎是一样的。

5.2 常用操作

了解了窗口的基本布局以后,下面就进一步介绍一些基本操作。这一部分主要参考这个官方文档并适当做了简化,感兴趣可以阅读原文

5.2.1 插入物体

给场景中插入物体我们可以点击菜单栏Create->Shapes,然后选择想要的物体插入即可,如下。 比如我们点击Cube,插入之后,在场景中就会有一个立方体,如下。 这里可能会有一个比较迷惑人的地方,比如刚打开软件,一个空的场景如下。 这时,我按照上面说的Create->Shapes->Cube插入一个立方体,结果变成了下图的样子。 场景中并没有立方体,而且场景变白了。你可能会怀疑是不是操作有问题?可是右边的USD树状结构里确实也有刚刚插入的立方体。你又可能怀疑是材质问题,难道是默认的材质文件不对或者加载失败,所以只显示了一个坐标轴?可是你看了右下角的材质属性面板,也没有什么错误的地方。你又怀疑是渲染出了问题,导致立方体渲染不出来?可是左上角的RTX-Real-Time又在告诉你,渲染似乎也没有问题。于是你无法理解,不知道问题出在哪。但其实原因非常简单:因为你现在的视角跑到了立方体里面!你可以试着利用鼠标滚轮,把视角缩小,就会豁然开朗,能看到立方体了,如下。 所以以后如果遇到插入了某个模型,但却看不到,在排除一些基本错误以后,要想想可能还有一种可能就是模型太大了,不妨视角缩小试试看。 另外说一句,这个插入的操作是通用的,不仅仅可以插入各种物体,还可以插入光源、材质、物理效果等等,可以自己探索一下。

除了通过菜单栏插入物体,我们还可以通过界面下方的Isaac Assets、Flow、NVIDIA Assets插入一些预置好的模型。插入的方式也非常简单,选中要插入的模型,拖到场景中即可。类似的,如果看不到,记得检查是不是视角尺度太大或者太小了。这里,我们打开Isaac Assets,插入一个Jetbot,如下。 总体而言,向场景中插入物体还是比较简单的。

5.2.2 移动物体

移动物体也非常简单。在Isaac Sim中有Move、Rotate和Scale三种状态来移动或修改物体,默认情况下是Move模式。这三种模式对应了左边工具栏中的三个按钮。它们的快捷键分别是W、E、R。以我们刚刚插入的立方体为例,鼠标点击选择这个立方体,默认就是Move模式,如下图所示。 在这个模式下,拖动原点是任意移动,拖动坐标轴则是沿坐标轴移动,拖动小方块则是在该平面内移动。操作其实都很简单,熟悉一下就会了。类似的,在旋转模式下,选中对应轴即可旋转,如下。 缩放模式也是一样。

当然了,这里需要说明的是在Isaac Sim中,你所有能用鼠标修改的属性都能在右下角的属性面板里精确的修改。物体的位置、姿态和缩放就可以在Transform这个属性里修改,如下。 另外这里可以看到,当某个数值不为默认值的时候,它的右边会有一个蓝色小方块,点击就可以把该数值设置为默认值(比如位置的默认值就是0)。这个功能很方便,比如当你选中但是视野中找不到某个物体的时候,就可以点击蓝色小方块,让它回到原点,就可以快速的找到了。或者说对于某个物体,可以现在坐标原点编辑好相关参数,然后再移动到指定地方。对于物体选择,我们除了可以再可视化界面里直接点击,还可以在Stage面板里选择,十分方便。其实Isaac Sim的一些操作逻辑和Photoshop是很像的,如果你对Photoshop比较熟悉,那么Isaac Sim用起来应该也不会陌生。

最后,再补充一下局部坐标系和全局坐标系的切换。前面说了,我们按W、E、R可以分别控制移动、旋转和缩放,事实上我们如果一直不停按W(其它两个一样的)就会发现,坐标轴其实是会切换的,如下。 通过这样不断的切换,可以更方便的调整物体的位姿。当然了,这里需要强调的是,不管怎么切换坐标系,属性面板里的值是不会变的,因为它默认都是全局坐标。我们这里切换的只是调整过程中方便使用的坐标系,并不是真正的进行了坐标转换,这点要明确。

5.2.3 物体绑定

在实际应用中,我们可能会有要将某些物体绑定,进而整体移动(不改变相对位置关系)的需求。这个需求在Isaac Sim里也是很容易实现的。可以有两种方式。首先,我们可以依次创建出两个物体,如下图所示。 第一种方式是点击Create->Xform,这个时候在右边的Stage面板就会出现一个Xfrom的坐标系图标。我们只需要在Stage面板中将球体和立方体都拖到Xfrom图标上,这样它就成了Xfrom的子对象,都绑定到了Xfrom上。当我们在Stage面板中选中Xfrom并尝试移动,就会发现它们两个都会一起移动,如下图所示。 操作逻辑也是比较简单的。

第二种方式还是点击Create->Xform,这个时候在右边的Stage面板就会出现一个Xfrom的坐标系图标。我们先将球体放到Xfrom中,然后再将Xfrom放到立方体中,如下图所示。 这样就会形成层级关系,当我们移动上级物体(这里是立方体)的时候,下层的物体(这里是球体)都会随之移动,这相当于我们将球体绑定到了立方体上。当然,你也可以将球体作为上层,和上面是相反的,就是将立方体绑定到球体上了,移动球体,整体移动。

最后,这里还有个小细节。在我们做物体绑定构建层级关系的时候,Isaac Sim遵循的原则是“从小到大”,换句话说就是先把各个小部分组装好,最后再合成整体。而不支持从大到小或者乱序。举个例子,我们构建Cube-Xfrom-Sphere关系的时候。我们需要先把Xfrom-Sphere关系构建好,然后整体放入Cube中。而不是先将Xfrom放到Cube,然后再把Sphere放到Xfrom中,如果是这样的话,Isaac Sim会报错,如下。 这个小问题需要注意一下,并不是Isaac Sim软件有问题什么的,而是不符合它的操作逻辑。

5.2.4 多视图切换

在Isaac Sim中,同样支持多视图同时预览。我们只需要依次点击Window->New Viewport View就可以创建新视图,在新创建的视图中,我们点击左上角的相机图标(Perspective),可以快速切换视角,比如切换成Top视角,如下。 甚至你还可以创建出物体的三视图,如下。

5.2.5 变换物体材质

在场景建模中,材质也是很关键的因素。添加材质有多种方法。一种是选中要添加材质的物体,在菜单栏依次点击Crate->Material然后选择相应材质添加即可,如下所示。 还有一种方式是直接拖动。在主界面下方的Material界面中选择需要的材质,直接拖动到目标物体即可,如下。 从USD场景树中也可以看到,多了刚刚添加的材质。

5.2.6 运行仿真

假如说我们制作好了一个仿真场景,如何把它运行起来呢?也十分简单。点击主界面左边工具栏中的播放按钮即可,如下。 开始运行以后,你会发现主界面下面的时间轴是在运动的,就说明仿真环境在运行了。这里可能需要说明一下的是,仿真环境的运行到底是在运行什么?简单来说是,有些仿真效果比如重力、碰撞、动态粒子特效等仿真并不会在我们创建、编辑场景的时候实时渲染(否则极大消耗计算资源而且可能会影响模型编辑)。所以为了这些实时解算的效果,我们可以点击运行,这样仿真环境就会开始实时渲染。一个简单的例子如下。 我们在场景中插入一个火焰粒子特效。在编辑模式下是看不出来的。但如果我们运行仿真环境,就能看到燃烧的火焰了。

5.2.7 保存场景

当我们建好一个场景以后,当然要保存场景。保存同样非常简单。点击菜单栏中的File->Save,输入文件名即可,如下。 保存的USD文件之后就可以用Isaac Sim或者Omniverse View打开查看。

5.3 小结

最后,我们简单做个小结。在本篇笔记中,我们首先介绍了Isaac Sim的基本情况以及安装步骤。然后详细介绍了Isaac Sim的一些基本操作和使用,包括插入物体、视图切换等。这些操作都比较基础,是之后进一步使用的必备知识。在之后的笔记中,我们会讨论一些更为细节的知识。

6.参考资料

  • [1] https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/overview.html
  • [2] https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_python.html
  • [3] https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_ros.html
  • [4] https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/tutorial_intro_interface.html

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

返回顶部