后端与预设#

参见

本页是 isaaclab-selecting-backends 和 isaaclab-using-presets 智能体技能的权威依据( skills/user/select-backends/ 、 skills/user/use-presets/ )。修改本页时,请同步更新这些技能,保证智能体指导与文档一致。请参阅 智能体技能 。

Isaac Lab 环境描述机器人、场景、传感器和任务。 后端 提供使这些描述实际运行起来的物理或渲染实现。 预设 是具有名称、经过测试的配置选项,可在不修改 Python 代码的情况下切换实现或任务模式。

实际使用时,只需添加一个简短的选择器,就能让同一环境使用不同的物理引擎、渲染器或观测模式:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Direct physics=newton_mjwarp

任务仍是 Isaac-Cartpole-Direct ,预设改变的是启动任务时使用的配置。

理解环境与预设#

可以将环境看作实验,将预设看作用于选择其主要组件配置的开关;这些配置均经过测试:

Environment
├── physics=...    Which physics configuration runs the simulation?
├── renderer=...   Which renderer produces camera data?
└── presets=...    Which task-specific mode or config bundle is used?

配置解析完成后,Isaac Lab 通用的资源、传感器和场景 API 会调用选定的后端实现。环境代码可以跨 PhysX、Newton 和 OvPhysX 使用相同的公共 API,无需在任务各处根据当前引擎编写分支。

物理、渲染和可视化可以分别选择。例如,相机环境可以使用 Newton 物理与 Newton Warp 渲染器,再通过 --viz 独立选择可视化器。

查看任务支持的选项#

不同任务支持的预设有所不同。选择名称之前,先查看任务提供哪些预设:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Camera-Direct --help

帮助信息会按 physics= 、 renderer= 和 presets= 分组列出名称。要一次查看所有已注册的环境及其预设,请运行:

uv run isaaclab list_envs --show_presets

预设列表为空并非错误,而是表示环境使用注册时的默认配置,没有提供其他选项。传入任务未列出的名称属于不受支持的配置,会在配置验证时失败。

选用合适的选择器#

选择器

示例

修改内容

physics=NAME

physics=newton_mjwarp

选择物理配置,包括后端和求解器。

renderer=NAME

renderer=newton_renderer

为产生相机数据的任务选择渲染器配置。

presets=NAME[,NAME,...]

presets=rgb

应用任务专用选项,例如观测模式、相机布局或兼容的配置组合。

这些是 Hydra 配置项,直接追加到命令末尾,不要添加前导短横线。使用 Isaac Lab 任务配置启动器的训练、策略运行和环境脚本均支持它们。

选择器可以组合使用。以下命令选择使用 MuJoCo-Warp 求解器的 Newton 后端、Newton Warp 渲染器,以及 RGB 观测:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Camera-Direct \
   physics=newton_mjwarp renderer=newton_renderer presets=rgb

仅组合任务明确列出的选项。部分物理、渲染器、传感器和观测配置彼此不兼容,任务可能拒绝无效组合,并给出具体错误信息。

常用后端选项#

具体列表取决于环境,但这些名称遵循共同约定:

物理预设#

名称

含义

isaacsim_physx

明确指定的 Isaac Sim PhysX 配置,适用于既有默认后端为 Isaac Sim PhysX 的任务。

physx

自动选择 PhysX 系列实现。运行时需要 Kit 时使用 Isaac Sim PhysX;完全不使用 Kit 时,可以选用已配置的 OvPhysX 实现。

newton_mjwarp

使用 MuJoCo-Warp 求解器的 Newton 物理后端。

newton_kamino

使用 Kamino 求解器的 Newton 物理后端。目前处于测试阶段,仅支持部分任务和兼容资源。

ovphysx

明确指定的 OvPhysX 配置,适用于受支持且不依赖 Kit 的任务。

渲染器预设#

名称

含义

isaacsim_rtx

明确指定的 Isaac Sim RTX 渲染器配置,是使用多后端渲染器预设的任务的默认配置。

rtx

自动选择 RTX 系列实现。物理、可视化、直播流或其他运行时选项需要 Kit 时,使用 Isaac Sim RTX;否则使用 OVRTX,实现完全不依赖 Kit 的运行。

newton_renderer

Newton Warp 渲染器。

ovrtx

明确指定的 OVRTX 渲染器配置,适用于受支持且不依赖 Kit 的工作流程。

physics=physx 和 renderer=rtx 等自动选择器需显式启用。默认值均明确指定具体实现,保证不传选择器时的任务行为可预测。求解器不等于独立后端: newton_mjwarp 和 newton_kamino 都使用 Newton,只是配置了不同的求解器。

默认值、预设与微调#

预设会替换所在位置的整个配置部分,而不会合并两个备选配置的字段。Isaac Lab 按以下顺序解析配置:

  1. 应用各预设配置中的 default 选项。

  2. 应用 presets=... 指定的全局选项。

  3. 应用针对特定路径的预设,例如 env.sim.physics=newton_mjwarp 。

  4. 应用 Hydra 标量覆盖项,例如 env.sim.dt=0.002 。

最后一步便于在已有维护的预设基础上调整单个值:

uv run isaaclab train --rl_library rsl_rl \
   --task Isaac-Cartpole-Direct \
   physics=newton_mjwarp env.sim.dt=0.002

选择后端时,优先使用 physics= 和 renderer= ,意图更清晰。任务专用模式,或需要用同一个名称同时更新多个匹配配置部分时,使用 presets= 。只有想替换某个特定配置部分时,才使用路径选择器。

重要

加载检查点时,应保持会影响行为的预设与训练时一致。观测预设可能改变张量形状,使用一种观测模式训练的策略,未必能在另一种模式下加载。

任务开发者如何提供选项#

任务开发者通过 PresetCfg 定义备选配置,并选定一个默认值。对于多后端任务,预设包装器应放在 SimulationCfg 中:

from isaaclab.physics import PhysxAutoCfg
from isaaclab.sim import SimulationCfg
from isaaclab.utils import configclass
from isaaclab_newton.physics import MJWarpSolverCfg, NewtonCfg
from isaaclab_ov.physics import OvPhysxCfg
from isaaclab_physx.physics import PhysxCfg
from isaaclab_tasks.utils import PresetCfg


@configclass
class PhysicsCfg(PresetCfg):
    isaacsim_physx = PhysxCfg()
    ovphysx = OvPhysxCfg()
    physx = PhysxAutoCfg(
        isaacsim_physx=isaacsim_physx,
        ovphysx=ovphysx,
    )
    default = isaacsim_physx
    newton_mjwarp = NewtonCfg(solver_cfg=MJWarpSolverCfg())


@configclass
class MyEnvCfg:
    sim: SimulationCfg = SimulationCfg(physics=PhysicsCfg())

尽可能将后端专用值放在具名配置中。这样可以共享任务逻辑,并让命令行显示所有受支持的选项。

如果后端选择还必须改变时间步长等仿真全局设置,物理预设也可以包含完整的 SimulationCfg 备选配置。 physics= 选择器会通过其中的 physics 字段识别这些组合,并应用完整的匹配仿真配置。

进一步阅读#

  • 环境 列出环境及其支持的预设。

  • Hydra 配置系统 介绍标量覆盖、预设编写、冲突处理和高级配置行为。

  • 后端架构 解释工厂、物理管理器、资源和传感器如何跨后端分派调用。

  • 物理后端 比较各物理后端的运行时要求、成熟度、求解器系列和适用场景。

  • 渲染器 介绍渲染器的选择与实现细节。