Command overview#
Every pipeline stage and tool runs as a Python module: python -m so101_mvbench.<module>. There are no console-script shims, so what you see below
is the complete surface. Every command accepts --help without booting the
simulator, with one exception: list_envs has no argument parsing at all and
starts Isaac Sim on import, because listing the registered tasks is what it
does. Give it no flags.
Commands marked sim need Isaac Sim and a GPU. The others run anywhere the package is installed.
How to read the commands#
Every command in this documentation is written to be pasted into a terminal and run as it stands, from the repository root.
Where a command needs a value from you, the block sets it as a shell variable
on its first lines, marked with # adjust:. Change those lines, then paste
the rest unchanged:
# adjust: the bin you recorded
BIN=datasets/01_raw_gamepad/bin_c1_r1
python -m so101_mvbench.recording.trajectory_extractor \
--dataset_root "$BIN" --output_dir "$BIN/trajectories"
Nothing else in a command needs editing. Anything adjustable is a variable at the top of its block, so a block never contains a placeholder that would break the shell if you pasted it unchanged.
Paths that appear literally, such as datasets/01_raw_gamepad/bin_c1_r1, are
the conventional locations this documentation uses throughout. They work as
they stand if you followed the previous stage.
Pipeline#
Command |
Stage |
Sim |
Purpose |
|---|---|---|---|
|
1 |
yes |
Record demonstrations (gamepad or scripted sine) into a LeRobot dataset with per-episode scene state and bin map. |
|
2a |
no |
Extract per-episode joint trajectories to |
|
2b |
yes |
Re-render recorded episodes from every camera of a scene config, one pass, one dataset per bin. |
|
2c |
no |
Fuse per-bin datasets into one trainer-ready dataset. |
|
3 |
no |
Train an ACT policy on a chosen camera subset (wraps |
|
3b |
no |
Rank checkpoints of a finished run by evaluation loss. |
|
4 |
yes |
Evaluate a policy over N parallel environments. With |
|
5 |
no |
Plots and a written summary for a single evaluation run. |
|
5 |
no |
Cross-run statistical aggregation. |
Audit tools#
Command |
Sim |
Question it answers |
|---|---|---|
|
yes |
Does moving a camera change the physics? (If yes, every camera ablation is invalid.) |
|
yes |
Do episodes diverge across parallel environments? |
|
no |
Plot the divergence data produced by |
Dataset tools#
Command |
Sim |
Purpose |
|---|---|---|
|
yes |
Print the registered |
|
no |
Integrity check for a recorded bin: parquet readability, MP4 presence, scene-state coverage. |
|
no |
Remove episodes from a LeRobot dataset, renumbering safely. |
|
no |
Write scene configs with one camera coordinate shifted, for a drift sweep (What happens when the external camera moves?). |
Running a whole campaign#
scripts/run_campaign.sh drives stage 4 across N policies x M bins x R
same-seed repeats, one Isaac boot per policy, resume-safe. Data locations come
from three required environment variables:
POLICY_ROOT=outputs \
DATASETS_ROOT=datasets/01_raw_gamepad \
OUT_ROOT=outputs/campaign \
bash scripts/run_campaign.sh
DRY_RUN=1 prints the per-policy commands without booting Isaac. See the
header comment of the script for every tunable.