> This page is for version Release 3.0 (default).
> For other versions, use one of these documentation indexes:
> - Release 3.0 (default): https://docs.nvidia.com/isaaclab/3.0/llms.txt
> - Release 2.3: https://docs.nvidia.com/isaaclab/2.3/llms.txt
> - Release 2.2: https://docs.nvidia.com/isaaclab/2.2/llms.txt
> - Release 2.1: https://docs.nvidia.com/isaaclab/2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/isaaclab/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/isaaclab/_mcp/server.

# Run Scripted State Machines

Isaac Lab includes hand-written state-machine examples for inspecting an
environment's observations and action interface without training a policy. The
state transitions run in parallel across environments as Warp kernels, which
keeps the examples efficient at larger environment counts.

Run these commands from the Isaac Lab repository root. Use `--num_envs` to
change the number of parallel environments and `--viz` to select a
visualizer.

## Pick and lift a rigid cube

This example approaches a cube, closes the gripper, and lifts the cube to its
goal pose:

```bash
uv run python scripts/environments/state_machine/lift_cube_sm.py \
   --num_envs 32 --viz kit
```

## Lift a deformable object

This example uses the Newton backend to grasp and lift a soft object. The
Newton visualizer opens by default:

```bash
uv run --extra tetrahedralization python scripts/environments/state_machine/lift_franka_soft.py \
   --num_envs 1
```

## Open a cabinet drawer

This example approaches the drawer handle, grasps it, pulls the drawer open,
and releases it:

```bash
uv run python scripts/environments/state_machine/open_cabinet_sm.py \
   --num_envs 32 --viz kit
```

Each script defines its states, wait times, transition kernel, and action loop
in one file. Start with `lift_cube_sm.py` when adapting the pattern to a new
manipulation task.