CoolFace
Datasetpublic

YanCORANV/RoboSteer

RoboSteer Benchmarking Behavioral Steerability in Humanoid Foundation Models 3 levels · 20 task families · 773,716 task definitions Download · Read a task · Media examples · Task map · JSON reference RoboSteer provides task definitions and multimodal motion assets for benchmarking behavioral steerability. Start by downloading the release, restoring its folders, and reading one task below. About the preview above: select level1_examples, level2_examples, or level3_examples.… See the full description on the dataset page: https://huggingface.co/datasets/YanCORANV/RoboSteer.

sourceHugging Faceupdated 4d agoView on Hugging Face
0likes289downloads
Dataset Card

<div align="center">

RoboSteer

Benchmarking Behavioral Steerability in Humanoid Foundation Models

3 levels · 20 task families · 773,716 task definitions

Download · Read a task · Media examples · Task map · JSON reference

</div>

RoboSteer provides task definitions and multimodal motion assets for benchmarking behavioral steerability. Start by downloading the release, restoring its folders, and reading one task below.

About the preview above: select level1_examples, level2_examples, or level3_examples. The examples split contains 22 selected real tasks for browsing, not a training/test partition or the complete benchmark. Click a reference_motion_video thumbnail to play the source/reference motion; it is not a model prediction. Open Media examples for all input videos, audio, images, and their task JSONs. Multi-clip conditions and Level 3 timing are preserved on those pages.

1. Download the dataset

The complete release is hosted in this repository. It contains 23 independent TAR archives, preserving the original file bytes and paths.

  • Original data: 352.05 GiB across 1,923,050 files.
  • Archives: approximately 355.35 GiB. Keeping both archives and extracted data needs about 707.40 GiB, plus filesystem overhead and download cache space.
  • Download all archive groups for the complete benchmark. Tasks can reference assets in Data/Shared/; a task's Level does not fully specify its download dependencies.

Install the Hugging Face client and download into RoboSteer-download:

shell
python -m pip install --upgrade huggingface_hub
hf download YanCORANV/RoboSteer --repo-type dataset --include "archives/**" "SHA256SUMS" --local-dir RoboSteer-download

If interrupted, run the same download command with the same local directory to reuse completed downloads and available cache state.

2. Extract into one dataset root

RoboSteer-download holds the downloaded TAR files. Create a separate destination, Steerable Motion Benchmark Dataset, for the extracted data. This destination can be anywhere on your disk; retain its internal folder structure.

Run the following in PowerShell, from the parent of RoboSteer-download. It checks each archive and extracts it into the same root. Keep the archives until extraction succeeds.

<details> <summary><strong>PowerShell: verify and extract all archives (resumable)</strong></summary>

powershell
$download = (Resolve-Path -LiteralPath './RoboSteer-download').Path
$dataset = Join-Path (Get-Location).Path 'Steerable Motion Benchmark Dataset'
New-Item -ItemType Directory -Path $dataset -Force | Out-Null
$completedFile = Join-Path $download '.extracted-sha256.txt'
$completed = @()
if (Test-Path -LiteralPath $completedFile) {
    $completed = @(Get-Content -LiteralPath $completedFile)
}
$checks = @(Get-Content -LiteralPath (Join-Path $download 'SHA256SUMS') | Where-Object { $_.Trim() })
$index = 0
foreach ($line in $checks) {
    $index++
    if ($line -notmatch '^([0-9a-fA-F]{64})\s+\*?(.+)$') { throw "Invalid checksum line: $line" }
    $expected = $Matches[1].ToLowerInvariant()
    $relative = $Matches[2]
    $archive = Join-Path $download $relative
    $key = "$dataset|$expected|$relative"
    if ($completed -contains $key) { Write-Host "[$index/$($checks.Count)] Already extracted: $relative"; continue }
    Write-Host "[$index/$($checks.Count)] Verify and extract: $relative"
    $actual = (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash.ToLowerInvariant()
    if ($actual -ne $expected) { throw "Checksum mismatch: $relative" }
    & tar -xf $archive -C $dataset
    if ($LASTEXITCODE -ne 0) { throw "Extraction failed: $relative" }
    Add-Content -LiteralPath $completedFile -Value $key
}
Write-Host "Dataset root: $dataset"

</details>

The completion record lets you rerun this block after interruption. Do not reuse it if you delete or modify the extracted files. A partial archive is extracted again on restart.

Your local layout should be:

text
Steerable Motion Benchmark Dataset/
├── Data/
│   ├── Level1/    Audio, Image, Motion, Spatial, Video
│   ├── Level2/    Audio, Order, Times, Trajectory
│   ├── Level3/    Audio, Image, Video
│   └── Shared/    Metadata, Motion, Video/Human, Video/Skeleton
└── Tasks/
    ├── Level1/
    │   ├── full_conditioning_reproduction/
    │   ├── spatial_completion/
    │   └── temporal_completion/
    ├── Level2/    Amplitude, BodyRestrain, Direction, Order, Speed, Times, Trajectory
    └── Level3/    task JSON files

There must be one Data/ and one Tasks/ directly under the dataset root. Do not extract each TAR into its own folder. Paths inside task JSONs are relative to this root, not to the JSON's containing folder.

3. Read your first task

Tasks/ describes what to do; Data/ contains the assets those tasks reference. The following complete example opens a real text-to-motion task, prints its condition, then reads the first frame of its referenced joint positions. It requires only Python's standard library.

Save as read_first_task.py, run python read_first_task.py, and enter your extracted dataset root when prompted. A ready-to-save copy is available here.

python
import csv
import json
from pathlib import Path

root = Path(input("Extracted dataset root: ").strip().strip('"')).expanduser().resolve()
task_path = root / 'Tasks/Level1/full_conditioning_reproduction/text_to_motion_generation/L1_text_to_motion_generation_text_--04DHOI32k_00009_38_121.json'
task = json.loads(task_path.read_text(encoding="utf-8-sig"))
print("Task:", task["metadata"]["task_id"])
print("Instruction:", task["input"]["prompts"]["general_instruction"])
print("Text condition:", task["input"]["modalities"]["text"])
motion = root / task["ground_truth"]["motion_parameters"]
with (motion / "joint_pos.csv").open(encoding="utf-8-sig", newline="") as f:
    reader = csv.reader(f)
    columns = next(reader)
    first_frame = [float(value) for value in next(reader)]
print("Motion directory:", motion)
print("Joint columns:", len(columns))
print("First frame:", first_frame)

For this sample, the printed joint-column count is 29. You have now read an actual task and its motion reference. This example does not run a model or evaluate predictions.

Keep input separate from ground_truth: references are not additional conditioning inputs. For Level 3, read the ordered input.interleave.sequence instead of expecting ordinary modality lists.

4. Choose a benchmark task

LevelOrganizationTask definitions
Level 1Full conditioning, temporal completion, spatial completion630,623
Level 2Amplitude, Body Restrain, Direction, Order, Speed, Times, Trajectory135,329
Level 3Ordered multimodal interleaving7,764

Use the task and folder map for every task-bearing directory, counts, input types, real JSON examples, and exact asset-path examples. Several tasks share motion assets; these counts are task definitions, not unique motion sequences.

5. Understand the task JSON

SectionHow to use it
metadataIdentify the level/family, duration, and source references
input.promptsRead the general instruction and any modifier
input.modalitiesLoad text, audio, video, image, or spatial conditions for Levels 1/2
input.interleave.sequencePreserve the ordered, timed components for Level 3
ground_truthLocate the task's target/reference motion and any temporal or trajectory constraints

The field-by-field JSON reference explains nested fields, types, units, empty values, image representation differences, and task-specific reference semantics. In particular, the Level 2 Amplitude/Speed/Direction/Body Restrain references are unmodified source motions, not precomputed modified outputs.

Motion packages are not all the same format: shared G1 motion uses CSV directories, while Order/Times use AMASS/BABEL-linked PKL files. Follow the actual task path and the format reference.

Benchmark integration

The dataset root is configurable in your own reader. The official code-repository placement, model adapters, and evaluation commands will be documented by the code maintainers; no unverified code installation path is prescribed here. The saved prompt text is preserved as released.

Release details

The full upload completed on 2026-09-17. All 23 archive sizes and checksums were verified against the local upload records. See SHA256SUMS and UPLOAD_STATUS.json. The example gallery is an additional browsing layer; it does not replace or alter the original archives.

Data sources and licensing status

The contributors identify Level 2 Order and Times as using AMASS motion data and BABEL annotations, and identify the other task data as their own. The full-directory transfer includes the existing Order and Times materials; it is not a third-party-data-excluded release.

The repository does not assign a blanket license to all contents. The license for the team's own data and the redistribution scope for third-party-derived materials remain under review. Repository visibility and download availability are not a grant of redistribution or commercial-use rights.

The official licenses include non-commercial-use and no-distribution provisions. Refer to the applicable source agreements and any additional written permissions. No additional redistribution authorization is asserted here.

Citation

Benchmarking Behavioral Steerability in Humanoid Foundation Models. Authors and paper link will be added when finalized. For AMASS and BABEL, use the citations supplied by their official project pages where applicable.