构建您自己的项目或任务#

传统上,构建利用 Isaac Lab 功能的新项目需要在 Isaac Lab 仓库内创建自己的扩展。然而,这种方法可能会降低项目的可见性,并使从一个版本的 Isaac Lab 更新到另一个版本变得复杂。为了解决这些问题,我们现在提供了一个命令行工具 (模板生成器) ,用于创建基于 Isaac Lab 的项目和任务。

模板生成器使您能够创建:

  • 外部项目 (推荐):一个独立的项目,不属于 Isaac Lab 仓库的一部分。这种方法在核心 Isaac Lab 仓库之外运行,确保您的开发工作保持独立。此外,它允许您的代码作为 Omniverse 的扩展运行。

    提示

    对于外部项目,模板生成器将在指定目录中初始化一个新的 Git 仓库。您可以将生成的内容推送到自己的远程仓库(例如 GitHub),并与他人共享。

  • 内部任务:Isaac Lab 仓库的一部分任务。此方法仅用于在 Isaac Lab 仓库内创建新任务,以便为其做出贡献。

运行模板生成器#

请按照 安装指南 安装 Isaac Lab。我们推荐使用 conda 安装,因为它可以简化从终端调用 Python 脚本的过程。

然后,运行以下命令以生成新的外部项目或内部任务:

./isaaclab.sh --new  # or "./isaaclab.sh -n"
isaaclab.bat --new  :: or "isaaclab.bat -n"

生成器会通过以下问题引导您设置项目或任务,以满足您的需求:

  • 项目/任务类型(外部或内部),以及根据所选类型确定的项目/任务路径或名称。

  • Isaac Lab 工作流(参见 任务设计工作流程)。

  • 强化学习库(参见 强化学习库比较),以及算法(如果所选库支持多种算法)。

外部项目的使用(生成后)#

一旦生成外部项目,将在指定目录中创建一个 README.md 文件。该文件包含有关如何安装项目和运行任务的说明。

以下是一些用于开始使用的常见命令:

备注

如果 Isaac Lab 没有安装在 conda 环境或(虚拟)Python 环境中,请使用 FULL_PATH_TO_ISAACLAB/isaaclab.sh -p (或在 Windows 上使用 FULL_PATH_TO_ISAACLAB\isaaclab.bat -p )来替代 python 运行以下命令。

  • 安装项目(以可编辑模式)。

    python -m pip install -e source/<given-project-name>
    
    python -m pip install -e source\<given-project-name>
    
  • 列出项目中可用的任务。

    警告

    如果任务名称发生更改,可能需要更新 scripts/list_envs.py 文件中的搜索模式 "Template-" ,以便正确列出任务。

    python scripts/list_envs.py
    
    python scripts\list_envs.py
    
  • 运行一个任务。

    python scripts/<specific-rl-library>/train.py --task=<Task-Name>
    
    python scripts\<specific-rl-library>\train.py --task=<Task-Name>
    

有关更多详细信息,请按照生成项目的 README.md 文件中的说明进行操作。

内部项目使用(生成后)#

一旦内部任务生成,它将与其余的 Isaac Lab 任务一起可用。

以下是一些用于开始使用的常见命令:

备注

如果 Isaac Lab 没有安装在 conda 环境或(虚拟)Python 环境中,请使用 ./isaaclab.sh -p (或在 Windows 上使用 isaaclab.bat -p )来替代 python 运行以下命令。

  • 列出 Isaac Lab 中可用的任务。

    python scripts/environments/list_envs.py
    
    python scripts\environments\list_envs.py
    
  • 运行一个任务。

    python scripts/reinforcement_learning/<specific-rl-library>/train.py --task=<Task-Name>
    
    python scripts\reinforcement_learning\<specific-rl-library>\train.py --task=<Task-Name>