强化学习通常需要在大型模拟场景中使用同一机器人的多个克隆进行训练。随着我们在仿真环境中添加越来越多的机器人,每增加一组机器人和网格资产,内存消耗也会增加。为了减少内存消耗,我们可以利用 USD 的 功能将同一机器人的不同副本共享的通用网格标记为可实例化。
这样一来,机器人的每个副本都将引用单个网格副本,从而避免了在场景中创建相同网格的多个副本的需要,从而减少了整个仿真环境中的内存使用量。
1. 学习目标
在本教程中,我们将展示如何在 Isaac Sim 中创建可实例化资产。我们会的
-
解释使资产可实例化的要求
-
使用 URDF 和 MJCF 导入器创建可实例化资产
-
显示将现有资产转换为可实例化资产的实用程序方法
10-15分钟教程
2. 入门
-
有关实例化的更多详细信息,请参阅有关 Scenegraph 实例化的 USD 文档。
3. 可实例化资产的层次结构要求
USD 禁止在实例化素数的后代上修改素数的属性。因此,我们通常只对机器人资产的网格素数执行实例化,因为在仿真过程中,网格上的属性在不同环境中不会有所不同。但是,在仿真过程中,当每个环境中的机器人以不同的方式移动时,网格的变换可能会有所不同。因此,我们必须在资产树定义中的特定结构中定义机器人层次结构的拓扑结构,以便可实例化标志采取行动。
要将资产中的任何网格或基元几何素标记为可实例化,网格素数需要存在父 Xform 素数,该素数将用于添加对包含网格素定义的主 USD 文件的引用。
例如,不能将以下定义标记为可实例化:
World
|_ Robot
|_ Collisions
|_ Sphere
|_ Box
相反,必须将其修改为:
World
|_ Robot
|_ Collisions
|_ Sphere_Xform
| |_ Sphere
|_ Box_Xform
|_ Box
原始球体和盒质上存在的任何参照都必须移动到Sphere_Xform和Box_Xform素数。