训练强化学习策略通常可以从执行相同任务的环境的矢量化副本中收集轨迹中受益。Cloner 界面旨在通过提供允许用户根据需要多次克隆给定环境的 API,从而简化此类场景的环境设计过程。
除了提供克隆功能外,Cloner 界面还提供用于生成目标路径、自动计算目标转换以及过滤克隆之间冲突的实用程序。
1. 学习目标
在本教程中,我们将介绍 Cloner 界面。我们会的
-
使用 Cloner 类设置示例
-
使用 GridCloner 类设置示例
-
使用 omni.isaac.core 中的 API 访问克隆对象
-
了解使用物理复制和其他参数进行高级克隆
10-15分钟教程
2. 入门
我们将首先启动 Isaac Sim 并启用 Cloner 扩展。通过从顶部菜单栏导航到“窗口>扩展”,从 UI 中打开“扩展”窗口。找到 Isaac Sim Cloner 扩展或 omni.isaac.cloner,然后通过扩展名称右侧的切换开关启用该扩展。
接下来,通过从顶部菜单栏导航到“脚本编辑器”窗口>,从 UI 打开“脚本编辑器”窗口。本教程中的所有示例代码都可以粘贴到“脚本编辑器”窗口中,并通过单击“运行”来执行。
3. Cloner 简介
在运行代码段之前,请确保从“扩展”窗口中启用了 omni.isaac.cloner。
让我们首先从Cloner界面的简单用例开始。在此示例中,我们将创建一个包含 4 个立方体的场景。
1from omni.isaac.cloner import Cloner # import Cloner interface
2from omni.isaac.core.utils.stage import get_current_stage
3from pxr import UsdGeom
4
5# create our base environment with one cube
6base_env_path = "/World/Cube_0"
7UsdGeom.Cube.Define(get_current_stage(), base_env_path)
8
9# create a Cloner instance
10cloner = Cloner()
11
12# generate 4 paths that begin with "/World/Cube" - path will be appended with _{index}
13target_paths = cloner.generate_paths("/World/Cube", 4)
14
15# clone the cube at target paths
16cloner.clone(source_prim_path="/World/Cube_0", prim_paths=target_paths)