hungho77/so101-multitask-calib
SO-101 multitask — calibration pool (LeRobot v2.1) The observation pool that post-training quantization of a GR00T N1.7 SO-101 policy is calibrated on, in the LeRobot v2.1 layout. Same recordings as hungho77/so101-multitask, which is stored in the v3.0 layout; GR00T's data loader reads v2.1 only, so this is the copy a quantization or evaluation run actually opens. 143 episodes · 67,496 frames · 3 tasks · 30 fps · single SO-101 arm · two 480×640 cameras (top, wrist) · 6-D state… See the full description on the dataset page: https://huggingface.co/datasets/hungho77/so101-multitask-calib.
SO-101 multitask — calibration pool (LeRobot v2.1)
The observation pool that post-training quantization of a GR00T N1.7 SO-101 policy is calibrated on, in the LeRobot v2.1 layout. Same recordings as `hungho77/so101-multitask`, which is stored in the v3.0 layout; GR00T's data loader reads v2.1 only, so this is the copy a quantization or evaluation run actually opens.
143 episodes · 67,496 frames · 3 tasks · 30 fps · single SO-101 arm · two 480×640 cameras (top, wrist) · 6-D state and action (5 joints + gripper).
The split
`calibration_manifest.json` carries both halves:
- Calibration — 128 observations, one per episode, seed 0. Spread evenly through each episode (quintiles 27/24/23/19/35, median at 51% of the episode) and across all three tasks in the dataset's own proportions (47/43/38).
- Held-out evaluation — the remaining 15 episodes, seed 42. The intersection with the calibrated episodes is empty and the two halves cover 143/143 episodes, so quantization drift is never scored on an observation the quantizer saw.
import json
m = json.load(open("calibration_manifest.json"))
m["calibration"]["samples"][0] # {"episode": ..., "step": ...}
m["held_out_evaluation"]["episodes"] # the 15 never calibrated onUnits — read this before driving a policy with it
observation.state and action are raw, unnormalised values in the units the arm reports (degrees for the joints, 0–100 for the gripper):
single_arm mean [-6.22, -15.85, 25.11, 49.77, 1.63] std [19.36, 36.87, 36.02, 24.33, 1.01]
gripper mean [24.30] std [12.34]A policy trained on this data normalises internally from its own statistics.json, so a client sends these units as they are. Sending radians, or normalising before sending, produces actions roughly five times worse than holding the arm still — and raises no error.
These statistics match the checkpoint's dataset_statistics.json to every decimal on all six dimensions, which is how this v2.1 conversion is known to carry the same values as the recordings the policy was trained on.
Layout
data/chunk-000/episode_{i:06d}.parquet observation.state, action, indices
videos/chunk-000/observation.images.top/episode_{i:06d}.mp4
videos/chunk-000/observation.images.wrist/episode_{i:06d}.mp4
meta/info.json, episodes.jsonl, tasks.jsonl, stats.json, modality.json