Robot Policy Examples Extension 7.0.0#
Isaac Sim 6.1 includes version 7.0.0 of the
isaacsim.robot.policy.examples extension. The extension replaces
PolicyController and its articulation-owning robot policy classes with
RobotPolicyRunner, PolicySpec, and PolicyArtifact. The 7.0.0 version
number belongs to the extension; it is not an Isaac Sim product version.
The old import paths remain available as migration shims. Importing a removed
class succeeds, but constructing it raises a RuntimeError with replacement
code for that class.
Shipped Policies#
Use the bundled specification that matches the old policy class:
Extension 6.x class |
Extension 7.0.0 construction |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
For example:
from isaacsim.robot.policy.examples import RobotPolicyRunner, get_spot_spec
runner = RobotPolicyRunner(
get_spot_spec(),
prim_path="/World/Spot",
position=[0.0, 0.0, 0.8],
)
runner.spawn() # While the timeline is stopped.
# After physics starts:
runner.initialize()
def on_physics_step(dt):
runner.step(dt, command)
Call step() once per physics tick. The runner owns policy decimation, so do
not add another decimation counter around it. Use runner.articulation in
place of the old policy.robot property. Before replay, reset or teleport the
articulation and then call runner.initialize(). Call runner.close()
during teardown.
Non-Shipped Policies#
A non-shipped policy does not use a bundled get_<robot>_spec() factory.
Group the policy files in a PolicyArtifact, create a PolicySpec for the
robot, and pass that spec to RobotPolicyRunner:
from isaacsim.robot.policy.examples import PolicyArtifact, PolicySpec, RobotPolicyRunner
artifact = PolicyArtifact.from_files(
model_path="/path/to/policy.pt",
env_config_path="/path/to/env.yaml",
descriptor_path="/path/to/IO_descriptors.yaml",
)
spec = PolicySpec(
name="my_policy",
usd_path="/path/to/robot.usd",
engines={"physx": artifact},
)
runner = RobotPolicyRunner(spec, prim_path="/World/Robot", training_engine="physx")
runner.spawn()
model_path must identify an exported TorchScript .pt or ONNX .onnx
model, not a raw training checkpoint. env_config_path must identify the
exported env.yaml from the same training configuration.
descriptor_path is the local path or omniverse:// URL of the exported
Isaac Lab IO_descriptors.yaml file for the same task configuration used to
train the model. It is not another copy of env.yaml. The descriptor records
the ordered policy observations and actions, their shapes, joint names, and
authored scales, offsets, and clipping. The runner uses it to reconstruct the
model input and output interface without robot-specific Python code.
For an already-defined manager-based Isaac Lab task, export the file from the Isaac Lab checkout:
./isaaclab.sh -p scripts/environments/export_io_descriptors.py \
--task <task_name> --output_dir <output_dir>
This writes <output_dir>/IO_descriptors.yaml. You can instead request the
descriptor when training by adding --export_io_descriptors to the Isaac Lab
training command, for example:
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py \
--task <task_name> --export_io_descriptors
See Isaac Lab IO Descriptors 101 for the export workflow and for attaching descriptors to custom observation and action terms. IO-descriptor export is available for manager-based environments.
Use PolicyArtifact.from_training_run(run_dir) when the run contains
exported/policy.pt, params/env.yaml, and
io_descriptors/IO_descriptors.yaml. Use
PolicyArtifact.from_bundle(bundle_dir) for a flat directory containing
policy.pt or policy.onnx, env.yaml, and IO_descriptors.yaml.
The automatic binding supports the observation and joint-action terms
implemented by the extension. If a custom term cannot be reconstructed from its
descriptor, provide PolicySpec.binding explicitly and, when the policy reads
task-owned state outside the robot articulation, provide a
task_state_provider to RobotPolicyRunner. The explicit binding must
preserve the trained observation/action order and preprocessing exactly; an IO
descriptor alone does not make an unsupported custom term executable.